🗊Презентация Система команд процесора архітектури ІА-32

Категория: Технология
Нажмите для полного просмотра!
Система команд процесора архітектури ІА-32, слайд №1Система команд процесора архітектури ІА-32, слайд №2Система команд процесора архітектури ІА-32, слайд №3Система команд процесора архітектури ІА-32, слайд №4Система команд процесора архітектури ІА-32, слайд №5Система команд процесора архітектури ІА-32, слайд №6Система команд процесора архітектури ІА-32, слайд №7Система команд процесора архітектури ІА-32, слайд №8Система команд процесора архітектури ІА-32, слайд №9Система команд процесора архітектури ІА-32, слайд №10Система команд процесора архітектури ІА-32, слайд №11Система команд процесора архітектури ІА-32, слайд №12Система команд процесора архітектури ІА-32, слайд №13Система команд процесора архітектури ІА-32, слайд №14Система команд процесора архітектури ІА-32, слайд №15Система команд процесора архітектури ІА-32, слайд №16Система команд процесора архітектури ІА-32, слайд №17Система команд процесора архітектури ІА-32, слайд №18Система команд процесора архітектури ІА-32, слайд №19Система команд процесора архітектури ІА-32, слайд №20Система команд процесора архітектури ІА-32, слайд №21Система команд процесора архітектури ІА-32, слайд №22Система команд процесора архітектури ІА-32, слайд №23Система команд процесора архітектури ІА-32, слайд №24Система команд процесора архітектури ІА-32, слайд №25Система команд процесора архітектури ІА-32, слайд №26Система команд процесора архітектури ІА-32, слайд №27Система команд процесора архітектури ІА-32, слайд №28Система команд процесора архітектури ІА-32, слайд №29Система команд процесора архітектури ІА-32, слайд №30Система команд процесора архітектури ІА-32, слайд №31Система команд процесора архітектури ІА-32, слайд №32Система команд процесора архітектури ІА-32, слайд №33Система команд процесора архітектури ІА-32, слайд №34Система команд процесора архітектури ІА-32, слайд №35Система команд процесора архітектури ІА-32, слайд №36Система команд процесора архітектури ІА-32, слайд №37Система команд процесора архітектури ІА-32, слайд №38Система команд процесора архітектури ІА-32, слайд №39Система команд процесора архітектури ІА-32, слайд №40Система команд процесора архітектури ІА-32, слайд №41Система команд процесора архітектури ІА-32, слайд №42

Содержание

Вы можете ознакомиться и скачать презентацию на тему Система команд процесора архітектури ІА-32. Доклад-сообщение содержит 42 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Тема: Система команд процесора архітектури ІА-32.
Класифікація команд.
Система команд мікропроцесора поділяється на сім груп :
Команди пересилання даних.
Арифметичні команди.
Логічні команди або команди маніпулювання бітами.
Команди передачі керування.
Команди обробки рядків (ланцюгові команди).
Команди керування процесором.
Команди переривання.
Описание слайда:
Тема: Система команд процесора архітектури ІА-32. Класифікація команд. Система команд мікропроцесора поділяється на сім груп : Команди пересилання даних. Арифметичні команди. Логічні команди або команди маніпулювання бітами. Команди передачі керування. Команди обробки рядків (ланцюгові команди). Команди керування процесором. Команди переривання.

Слайд 2





1. Команди пересилання даних.
Види:
- Обміну даними
- Роботи з портами вводу виводу
 -Роботи зі стеком
Особливості:
Не можна пересилати дані з однієї комірки пам'яті в іншу.
Не можна завантажити в регістр сегмента операнд із безпосередньою адресацією.
Не можна переслати значення одного регістра сегмента в іншій.
Не можна використовувати регістри CS і IP як приймач у команді MOV.
Описание слайда:
1. Команди пересилання даних. Види: - Обміну даними - Роботи з портами вводу виводу -Роботи зі стеком Особливості: Не можна пересилати дані з однієї комірки пам'яті в іншу. Не можна завантажити в регістр сегмента операнд із безпосередньою адресацією. Не можна переслати значення одного регістра сегмента в іншій. Не можна використовувати регістри CS і IP як приймач у команді MOV.

Слайд 3





MOV dest,src
команда є основою для реалізації оператора присвоєння в мовах високого рівня
Команда виконує пересилання даних в регістр з регістру, памяті або безпосереднього операнда.
 Приклади:
MOV AX,10
MOV EBX,ESI
MOV AL, BYTE PTR MEM
Описание слайда:
MOV dest,src команда є основою для реалізації оператора присвоєння в мовах високого рівня Команда виконує пересилання даних в регістр з регістру, памяті або безпосереднього операнда. Приклади: MOV AX,10 MOV EBX,ESI MOV AL, BYTE PTR MEM

Слайд 4


Система команд процесора архітектури ІА-32, слайд №4
Описание слайда:

Слайд 5





Команди роботи з портами вводу виводу.
IN AL (AX, EAX), Port
IN AL (AX, EAX), DX 
Введення в акумулятор з порту введення-виведення. Порт адресується безпосередньо або через регістр DX.
OUT port, AL (AX, EAX)
OUT DX, AL (AX, EAX) Вивід в порт вводу-виводу. Порт адресується безпосередньо або через регістр DX.
[REP] INSB
[REP] INSW
[REP] INSD Виводить дані з порту, що адресується регістром DX в комірку пам'яті ES: [EDI / DI]. Після введення байта, слова чи подвійного слова проводиться корекція EDI / DI на 1, 2
[REP] OUTSB
[REP] OUTSW
[REP] OUTSD Виводить дані з комірки пам'яті, яка визначається регістрами DS: [ESI / SI], у вихідний порт, адреса якого знаходиться в регістрі DX. Після виведення байта, слова, подвійного слова проводиться корекція покажчика ESI / SI на 1, 2, 4 в залежності від розмірності .
 При наявності префікса REP-процес триває, поки вміст CX не стане рівним 0
Описание слайда:
Команди роботи з портами вводу виводу. IN AL (AX, EAX), Port IN AL (AX, EAX), DX Введення в акумулятор з порту введення-виведення. Порт адресується безпосередньо або через регістр DX. OUT port, AL (AX, EAX) OUT DX, AL (AX, EAX) Вивід в порт вводу-виводу. Порт адресується безпосередньо або через регістр DX. [REP] INSB [REP] INSW [REP] INSD Виводить дані з порту, що адресується регістром DX в комірку пам'яті ES: [EDI / DI]. Після введення байта, слова чи подвійного слова проводиться корекція EDI / DI на 1, 2 [REP] OUTSB [REP] OUTSW [REP] OUTSD Виводить дані з комірки пам'яті, яка визначається регістрами DS: [ESI / SI], у вихідний порт, адреса якого знаходиться в регістрі DX. Після виведення байта, слова, подвійного слова проводиться корекція покажчика ESI / SI на 1, 2, 4 в залежності від розмірності .  При наявності префікса REP-процес триває, поки вміст CX не стане рівним 0

Слайд 6





Робота зі стеком
PUSH r / m - Помістити в стек слово або подвійне слово, рекомендується в будь-якому випадку поміщати в стек подвійне слово.
PUSHA Помістити в стек значення регістрів EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP.
 POP reg / mem Витягти з стека слово або подвійне слово.

POPA Витяг з стека даних в регістри EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP.Команда з'явилася, починаючи 386 процесора.

PUSHF Приміщення в стек регістра прапорів.
POPF Витягти даних у регістр прапорів.
Приклад:
PUSH ECX 	 ; зберігаємо в стеку значення регістра лічильника
…
POP ECX	 ; відновлюємо зі стеку значення регістра лічильника
Описание слайда:
Робота зі стеком PUSH r / m - Помістити в стек слово або подвійне слово, рекомендується в будь-якому випадку поміщати в стек подвійне слово. PUSHA Помістити в стек значення регістрів EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP. POP reg / mem Витягти з стека слово або подвійне слово. POPA Витяг з стека даних в регістри EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP.Команда з'явилася, починаючи 386 процесора. PUSHF Приміщення в стек регістра прапорів. POPF Витягти даних у регістр прапорів. Приклад: PUSH ECX ; зберігаємо в стеку значення регістра лічильника … POP ECX ; відновлюємо зі стеку значення регістра лічильника

Слайд 7





2. Арифметичні команди
ADD dest, src  -  Додавання двох операндів. Перший операнд може бути регістром або коміркою пам'яті, другий - регістром, коміркою пам'яті, константою. Неможливо тільки, коли обидва операнди є коміркою пам'яті.
dest=dest+src
SUB dest, src Віднімання двох операндів.  Останнє аналогічно додаванню
dest=dest-src
DEC r / m декремент операнда.
CMP r / m, r / m Віднімання без зміни операндів (порівняння).
NEG r / m Зміна знаку операнда.
MUL r / m Множення AL (AX, EAX) на ціле беззнаковое число. Результат, відповідно, буде міститися в AX, DX: AX, EDX: EAX.
[EDX: EAX] = EAX *  r / m 
IMUL r / m Знакове множення (аналогічно MUL). Всі операнди вважаються знаковими. Команда IMUL має також двухоперандний і трехоперандний вигляд.
DIV r / m (src) беззнакове ділення. Аналогічно беззнакового множення. Здійснює ділення акумулятора і його розширення (AH: AL, DX: AX, EDX: EAX) на дільник src. Частка міститься в акумуляторі, а залишок - в розширенні акумулятора.
[EDX: EAX] = EAX / src;  EAX – частка,  EDX залишок
IDIV r / m Знакове ділення. Аналогічно беззнакового.
Описание слайда:
2. Арифметичні команди ADD dest, src - Додавання двох операндів. Перший операнд може бути регістром або коміркою пам'яті, другий - регістром, коміркою пам'яті, константою. Неможливо тільки, коли обидва операнди є коміркою пам'яті. dest=dest+src SUB dest, src Віднімання двох операндів.  Останнє аналогічно додаванню dest=dest-src DEC r / m декремент операнда. CMP r / m, r / m Віднімання без зміни операндів (порівняння). NEG r / m Зміна знаку операнда. MUL r / m Множення AL (AX, EAX) на ціле беззнаковое число. Результат, відповідно, буде міститися в AX, DX: AX, EDX: EAX. [EDX: EAX] = EAX * r / m IMUL r / m Знакове множення (аналогічно MUL). Всі операнди вважаються знаковими. Команда IMUL має також двухоперандний і трехоперандний вигляд. DIV r / m (src) беззнакове ділення. Аналогічно беззнакового множення. Здійснює ділення акумулятора і його розширення (AH: AL, DX: AX, EDX: EAX) на дільник src. Частка міститься в акумуляторі, а залишок - в розширенні акумулятора. [EDX: EAX] = EAX / src; EAX – частка, EDX залишок IDIV r / m Знакове ділення. Аналогічно беззнакового.

Слайд 8





додаткові
XADD dest, src Дана операція виконує на початку обмін операндами, а потім виконує операцію ADD. 

ADC dest, src Додавання з урахуванням прапора перенесення - в молодший біт додається біт (прапор) переносу.
SBB dest, src Віднімання з урахуванням біта переносу. З молодшого біта віднімається біт (прапор) переносу.
CMPXCHG r, m, a Порівняння з обміном. Сприймає ці три операнда (регістр - операнд - джерело, комірка пам'яті - операнд - одержувач, акумулятор, тобто AL, AX чи EAX) Якщо значення в операнде-одержувача і акумуляторі рівні, операнд-одержувач замінюється операндом-джерелом, початкове значення операнда -одержувача завантажується в акумулятор.  
CBW Розширення байта (AL) в слово з копіюванням знакового біта.
CWD Розширення слова (AX) в подвійне слово (DX: AX) з копіюванням знакового біта.
CWDE Розширення слова (AX) в подвійне слово (EAX) з копіюванням знакового біта.
CDQ Перетворення подвійного слова (EAX) в учетверене слово (EDX: EAX).
Описание слайда:
додаткові XADD dest, src Дана операція виконує на початку обмін операндами, а потім виконує операцію ADD.  ADC dest, src Додавання з урахуванням прапора перенесення - в молодший біт додається біт (прапор) переносу. SBB dest, src Віднімання з урахуванням біта переносу. З молодшого біта віднімається біт (прапор) переносу. CMPXCHG r, m, a Порівняння з обміном. Сприймає ці три операнда (регістр - операнд - джерело, комірка пам'яті - операнд - одержувач, акумулятор, тобто AL, AX чи EAX) Якщо значення в операнде-одержувача і акумуляторі рівні, операнд-одержувач замінюється операндом-джерелом, початкове значення операнда -одержувача завантажується в акумулятор.   CBW Розширення байта (AL) в слово з копіюванням знакового біта. CWD Розширення слова (AX) в подвійне слово (DX: AX) з копіюванням знакового біта. CWDE Розширення слова (AX) в подвійне слово (EAX) з копіюванням знакового біта. CDQ Перетворення подвійного слова (EAX) в учетверене слово (EDX: EAX).

Слайд 9





В арифметичних командах встановлюються або скидаються 6 прапорів стану:
В арифметичних командах встановлюються або скидаються 6 прапорів стану:
CF - установлюється, якщо операція дала беззнаковий результат поза діапазоном (тобто є перенос у знаковий розряд). Позика (7,15,31) викликає вихід з розрядної сітки.
OF - установлюється, якщо в операції вийшов знаковий результат, що знаходиться поза діапазоном (тобто перенос у знаковий розряд) не створює переносу з розрядної сітки або перенос з розрядної сітки відбувається без переносу в знаковий розряд.
ZF - установлюється, якщо результат операції (знаковому або беззнаковий) дорівнює нулеві.
SF - установлюється, якщо старший біт результату операції містить 1, показуючи негативне число.
PF - установлюється, якщо результат операції містить парне число одиничних битов.
AF - установлюється, якщо в десяткових операціях потрібна корекція
Описание слайда:
В арифметичних командах встановлюються або скидаються 6 прапорів стану: В арифметичних командах встановлюються або скидаються 6 прапорів стану: CF - установлюється, якщо операція дала беззнаковий результат поза діапазоном (тобто є перенос у знаковий розряд). Позика (7,15,31) викликає вихід з розрядної сітки. OF - установлюється, якщо в операції вийшов знаковий результат, що знаходиться поза діапазоном (тобто перенос у знаковий розряд) не створює переносу з розрядної сітки або перенос з розрядної сітки відбувається без переносу в знаковий розряд. ZF - установлюється, якщо результат операції (знаковому або беззнаковий) дорівнює нулеві. SF - установлюється, якщо старший біт результату операції містить 1, показуючи негативне число. PF - установлюється, якщо результат операції містить парне число одиничних битов. AF - установлюється, якщо в десяткових операціях потрібна корекція

Слайд 10


Система команд процесора архітектури ІА-32, слайд №10
Описание слайда:

Слайд 11





Мітки
При використанні команд переходів використовуються мітки, що являють собою символічне означення адреси певної команди в програмі. 
(змінні символічне означення певної ділянки пам'яті) 
Способи визначення міток
1. Через оператор    :                           (основний)
приклад
M01 :  КОП
2. Через директиву label
приклад
M01  LABEL NEAR ;		 FAR
         KOП
Для всіх команд: мітка обов'язково повинна бути визначена у процедурі у якій виконаний перехід. Перехід за межі процедури НЕДОПУСТИМИЙ.
Описание слайда:
Мітки При використанні команд переходів використовуються мітки, що являють собою символічне означення адреси певної команди в програмі. (змінні символічне означення певної ділянки пам'яті) Способи визначення міток 1. Через оператор : (основний) приклад M01 : КОП 2. Через директиву label приклад M01 LABEL NEAR ; FAR KOП Для всіх команд: мітка обов'язково повинна бути визначена у процедурі у якій виконаний перехід. Перехід за межі процедури НЕДОПУСТИМИЙ.

Слайд 12





1. JMP  label  -  безумовний перехід  на мітку  (аналог команди goto)
При роботі в Windows використовується в основному внутрішньосегментний перехід (NEAR) у межах 32-бітного сегмента. 
1. JMP  label  -  безумовний перехід  на мітку  (аналог команди goto)
При роботі в Windows використовується в основному внутрішньосегментний перехід (NEAR) у межах 32-бітного сегмента. 
2. CALL NameProc  Виклик процедури. (Часто використовується директива INVOKE, котра розгортається в команду CALL)
3. RET [DWORD]. Повернення з процедури  
3. INT kod_interup Виклик переривання
4. IRET Повернення з переривання.
CALL target Передає управління процедурою (мітці) із збереженням у стеку адреси, наступної за CALL-командою. У плоскій моделі адресу повернення представляє собою 32-бітне зсув. Міжсегментний виклик передбачає збереження в стеці селектора і зсуву, тобто 48-бітної величини (16 біт - селектор і 32 біта - зміщення).

RET [N] Повернення з процедури. Необов'язковий параметр N припускає, що команда також автоматично чистить стек (звільняє N байт). Команда має різновиди, які вибираються асемблером автоматично, в залежності від того, є процедура ближній або дальній. Можна, однак, і явно вказати тип повернення (RETN або RETF). У випадку плоскої моделі за замовчуванням береться RETN з чотирибайтових адресою повернення
Описание слайда:
1. JMP label - безумовний перехід на мітку (аналог команди goto) При роботі в Windows використовується в основному внутрішньосегментний перехід (NEAR) у межах 32-бітного сегмента.  1. JMP label - безумовний перехід на мітку (аналог команди goto) При роботі в Windows використовується в основному внутрішньосегментний перехід (NEAR) у межах 32-бітного сегмента.  2. CALL NameProc Виклик процедури. (Часто використовується директива INVOKE, котра розгортається в команду CALL) 3. RET [DWORD]. Повернення з процедури 3. INT kod_interup Виклик переривання 4. IRET Повернення з переривання. CALL target Передає управління процедурою (мітці) із збереженням у стеку адреси, наступної за CALL-командою. У плоскій моделі адресу повернення представляє собою 32-бітне зсув. Міжсегментний виклик передбачає збереження в стеці селектора і зсуву, тобто 48-бітної величини (16 біт - селектор і 32 біта - зміщення). RET [N] Повернення з процедури. Необов'язковий параметр N припускає, що команда також автоматично чистить стек (звільняє N байт). Команда має різновиди, які вибираються асемблером автоматично, в залежності від того, є процедура ближній або дальній. Можна, однак, і явно вказати тип повернення (RETN або RETF). У випадку плоскої моделі за замовчуванням береться RETN з чотирибайтових адресою повернення

Слайд 13





   Умовні переходи:
На основі значень прапорів регістра стану:
JE / JZ		 - перейти, якщо нуль.
JNE / JNZ 	 - перейти, якщо менше або дорівнює.
JC		 - перейти, якщо перенесення.
JNC 		 - перейти, якщо немає перенесення.
JO 		- перейти, якщо є переповнення.
JNO 		 - перейти, якщо немає переповнювання.
JP / JPE		 - перейти, якщо є паритет.
JNP / JPO 	- перейти, якщо немає паритету.
JNS		 - перейти, якщо немає знаку.
JS 		- перейти, якщо є знак.
По значенню регіста СХ (ЕСХ)

JCXZ		 - перехід, якщо CX = 0.
JECXZ 		- перехід, якщо ECX = 0.
Описание слайда:
   Умовні переходи: На основі значень прапорів регістра стану: JE / JZ - перейти, якщо нуль. JNE / JNZ - перейти, якщо менше або дорівнює. JC - перейти, якщо перенесення. JNC - перейти, якщо немає перенесення. JO - перейти, якщо є переповнення. JNO - перейти, якщо немає переповнювання. JP / JPE - перейти, якщо є паритет. JNP / JPO - перейти, якщо немає паритету. JNS - перейти, якщо немає знаку. JS - перейти, якщо є знак. По значенню регіста СХ (ЕСХ) JCXZ - перехід, якщо CX = 0. JECXZ - перехід, якщо ECX = 0.

Слайд 14





Арифметичні без знакові
Арифметичні без знакові
JA / JNBE 	- перейти, якщо вище.
JAE / JNB 	- перейти, якщо вище або дорівнює.
JB / JNAE	 - перейти, якщо нижче.
JBE / JNA	 - перейти, якщо нижче.

Арифметичні знакові

JG / JNLE	 - перейти, якщо більше.
JGE / JNL	 - перейти, якщо більше або дорівнює.
JL / JNGE	 - перейти якщо менше.
JLE / JNG 	 - перейти, якщо менше або дорівнює.
--------------------------------------------------------------------------
JZ/JNZ 	- ==    != завжди однакові
Описание слайда:
Арифметичні без знакові Арифметичні без знакові JA / JNBE - перейти, якщо вище. JAE / JNB - перейти, якщо вище або дорівнює. JB / JNAE - перейти, якщо нижче. JBE / JNA - перейти, якщо нижче. Арифметичні знакові JG / JNLE - перейти, якщо більше. JGE / JNL - перейти, якщо більше або дорівнює. JL / JNGE - перейти якщо менше. JLE / JNG - перейти, якщо менше або дорівнює. -------------------------------------------------------------------------- JZ/JNZ - == != завжди однакові

Слайд 15





Команди управління циклом. 
Команди цієї групи використовують в якості лічильника регістр ECX, зменшують вміст його вміст на 1 (ECX--), при кожному виконанні команди.
LOOP - перехід, якщо вміст ECX не дорівнює нулю.

LOOPE (LOOPZ) - перехід, якщо вміст ECX не дорівнює нулю і прапор ZF = 1.

LOOPNE (LOOPNZ) - перехід, якщо вміст ECX не дорівнює нулю і прапор ZF = 0.
Описание слайда:
Команди управління циклом.  Команди цієї групи використовують в якості лічильника регістр ECX, зменшують вміст його вміст на 1 (ECX--), при кожному виконанні команди. LOOP - перехід, якщо вміст ECX не дорівнює нулю. LOOPE (LOOPZ) - перехід, якщо вміст ECX не дорівнює нулю і прапор ZF = 1. LOOPNE (LOOPNZ) - перехід, якщо вміст ECX не дорівнює нулю і прапор ZF = 0.

Слайд 16





Команди управління прапорами
Параметрів не мають, сама команда визначає операнди
CLC Скидання прапора перенесення.
CMC Інверсія прапора перенесення.
STC Установка прапора перенесення.
CLD Скидання прапора напрямку.
STD Установка прапора напрямку.
CLI Заборона маскуються апаратних переривань.
STI Дозвіл маскуються апаратних переривань.
CTS Скидання прапора перемикання завдань.
Описание слайда:
Команди управління прапорами Параметрів не мають, сама команда визначає операнди CLC Скидання прапора перенесення. CMC Інверсія прапора перенесення. STC Установка прапора перенесення. CLD Скидання прапора напрямку. STD Установка прапора напрямку. CLI Заборона маскуються апаратних переривань. STI Дозвіл маскуються апаратних переривань. CTS Скидання прапора перемикання завдань.

Слайд 17





Логічні операції.
Використовуються при перевірці певних бітів операндів та створення кодових послідовностей. Характеризуються високою швидкодією
AND dest, src Логічна операція «AND». Обнулення біт dest, які дорівнюють нулю у src.
TEST dest, src Аналогічна «AND», але не змінює dest. Використовується для перевірки ненульових біт.
OR dest, src Логічна «АБО». У dest встановлюються біти, відмінні від нуля в src.
XOR dest, src Виключне «АБО».
NOT dest Перемикання всіх біт (інверсія).
Описание слайда:
Логічні операції. Використовуються при перевірці певних бітів операндів та створення кодових послідовностей. Характеризуються високою швидкодією AND dest, src Логічна операція «AND». Обнулення біт dest, які дорівнюють нулю у src. TEST dest, src Аналогічна «AND», але не змінює dest. Використовується для перевірки ненульових біт. OR dest, src Логічна «АБО». У dest встановлюються біти, відмінні від нуля в src. XOR dest, src Виключне «АБО». NOT dest Перемикання всіх біт (інверсія).

Слайд 18





Команди зсуву та обертання
Починаючи з мікропроцесора 386, безпосередній операнд src може бути не тільки 1, але довільним числом. У ранніх версіях для кількості зсувів використовувався регістр CL.
 
RCL / RCR dest, src Циклічний зсув вліво / вправо через біт перенесення CF.  Src може бути або CL, або безпосередній операнд.

ROL / ROR dest, src Аналогічно командам RCL / RCR, але за іншим, працює з прапором CF. Прапор не бере участь у циклі, але в нього потрапляє біт, який перейшов з початку на кінець чи навпаки.

SAL / SAR dest, src Зрушення вліво / право. Називається ще арифметичним зрушенням. При зсуві вправо дублюється старший біт. При зсуві вліво молодший біт заповнюється нулем. Минулий біт поміщається в CF.

SHL / SHR dest, src Логічний зсув вліво / вправо. Зсув вправо відрізняється від SAR тим, що і старший біт заповнюється нулем.

SHLD / SHRD dest, src, count Трехоперандні команди зсуву вліво / вправо. Першим операндом, як зазвичай, може бути або регістр, або комірка пам'яті, другим операндом повинен бути регістр загального призначення, третім - регістр CL або безпосередній операнд. Суть операції полягає в тому, що dest і src на початку об'єднуються, а потім виробляється зрушення на кількість біт count. Результат знову поміщається в dest.
Описание слайда:
Команди зсуву та обертання Починаючи з мікропроцесора 386, безпосередній операнд src може бути не тільки 1, але довільним числом. У ранніх версіях для кількості зсувів використовувався регістр CL.   RCL / RCR dest, src Циклічний зсув вліво / вправо через біт перенесення CF.  Src може бути або CL, або безпосередній операнд. ROL / ROR dest, src Аналогічно командам RCL / RCR, але за іншим, працює з прапором CF. Прапор не бере участь у циклі, але в нього потрапляє біт, який перейшов з початку на кінець чи навпаки. SAL / SAR dest, src Зрушення вліво / право. Називається ще арифметичним зрушенням. При зсуві вправо дублюється старший біт. При зсуві вліво молодший біт заповнюється нулем. Минулий біт поміщається в CF. SHL / SHR dest, src Логічний зсув вліво / вправо. Зсув вправо відрізняється від SAR тим, що і старший біт заповнюється нулем. SHLD / SHRD dest, src, count Трехоперандні команди зсуву вліво / вправо. Першим операндом, як зазвичай, може бути або регістр, або комірка пам'яті, другим операндом повинен бути регістр загального призначення, третім - регістр CL або безпосередній операнд. Суть операції полягає в тому, що dest і src на початку об'єднуються, а потім виробляється зрушення на кількість біт count. Результат знову поміщається в dest.

Слайд 19


Система команд процесора архітектури ІА-32, слайд №19
Описание слайда:

Слайд 20





Команди роботи з ланцюгами
Під ланцюгами асемблер розуміє послідовно розміщений в пам’яті набір з байт, слів чи двійних слів (в С++ - масив) . 
Команди використовуються три елементи:
1. Прапор напрямку -  DF. (Direction Flag). 
2. Регістри адрес джерела та приймача даних EDI  та ESI.
3. Префікс команди. (не всі команди).
  
Загальний формат ланцюгової команди. 
[PREF ]  КОП [dest, source]

Порядок використання
Встановити прапор напряму
Завантажити ефективні адреси в регістр
Ініціалізувати лічильник
Виконати команди
Описание слайда:
Команди роботи з ланцюгами Під ланцюгами асемблер розуміє послідовно розміщений в пам’яті набір з байт, слів чи двійних слів (в С++ - масив) . Команди використовуються три елементи: 1. Прапор напрямку - DF. (Direction Flag). 2. Регістри адрес джерела та приймача даних EDI та ESI. 3. Префікс команди. (не всі команди). Загальний формат ланцюгової команди. [PREF ] КОП [dest, source] Порядок використання Встановити прапор напряму Завантажити ефективні адреси в регістр Ініціалізувати лічильник Виконати команди

Слайд 21





Напрям:
Напрям:
якшо DF = 0 (команда CLD) , то команди обробки ланцюгів виконують операції в напрямку зростання адресів, тобто від нульового елемента до найстаршого, якщо DF=1 (команда STD) встановлений в одиницю то операції виконуються в напрямку зменшення адресів.

Встановлення адрес джерела та приймача даних.
EDI приймач (destination) даних.
ESI джерело (source) даних.
Префікс  - задає правила виконання команд.
Описание слайда:
Напрям: Напрям: якшо DF = 0 (команда CLD) , то команди обробки ланцюгів виконують операції в напрямку зростання адресів, тобто від нульового елемента до найстаршого, якщо DF=1 (команда STD) встановлений в одиницю то операції виконуються в напрямку зменшення адресів. Встановлення адрес джерела та приймача даних. EDI приймач (destination) даних. ESI джерело (source) даних. Префікс - задає правила виконання команд.

Слайд 22





Команда ланцюгового пересилання даних
PREF MOVS dest , source  
пересилання даних з однієї області пам’яті в іншу.
Якщо команда використовується без аргументів, то необхідно вказати підвид команди який  характеризує тип даних  ланцюга з якими буде працювати команда.  Без префіксу команда виконується один раз. (аналогічно MOV).
MOVSB  - 1 байт
MOVSW - 2 байти
MOVSD  - 4 байти
 Приклад: функція strcpy() мови C
.data
MEMW1 DW 10 DUP(1),5 DUP(0)
MEMW2 DW 15 DUP(?)
.code
CLD
LEA ESI, MEMW1
LEA EDI, MEMW2
MOV ECX,15
REP MOVSW ; або REP MOVS MEMW2,MEMW1
Описание слайда:
Команда ланцюгового пересилання даних PREF MOVS dest , source пересилання даних з однієї області пам’яті в іншу. Якщо команда використовується без аргументів, то необхідно вказати підвид команди який характеризує тип даних ланцюга з якими буде працювати команда. Без префіксу команда виконується один раз. (аналогічно MOV). MOVSB - 1 байт MOVSW - 2 байти MOVSD - 4 байти Приклад: функція strcpy() мови C .data MEMW1 DW 10 DUP(1),5 DUP(0) MEMW2 DW 15 DUP(?) .code CLD LEA ESI, MEMW1 LEA EDI, MEMW2 MOV ECX,15 REP MOVSW ; або REP MOVS MEMW2,MEMW1

Слайд 23





CMPS dest,src Виконується поелементне порівняння, по умові яка задається префіксом, до першого співпадання чи неспівпадання для кількості елементів що знаходяться в ЕСХ елементів двох ланцюгів адреси яких знаходяться в EDI та ESI.
CMPS dest,src Виконується поелементне порівняння, по умові яка задається префіксом, до першого співпадання чи неспівпадання для кількості елементів що знаходяться в ЕСХ елементів двох ланцюгів адреси яких знаходяться в EDI та ESI.

Префікс REPE  поки рівні, REPNE поки не рівні. 

Приклад: функція strcmp() мови C
CLD
MOV ECX,N ;довжина
LEA ESI,STR1
LEA EDI,STR2
      REPE CMPSB
JNE NO_SAME
JMP _SAME
Описание слайда:
CMPS dest,src Виконується поелементне порівняння, по умові яка задається префіксом, до першого співпадання чи неспівпадання для кількості елементів що знаходяться в ЕСХ елементів двох ланцюгів адреси яких знаходяться в EDI та ESI. CMPS dest,src Виконується поелементне порівняння, по умові яка задається префіксом, до першого співпадання чи неспівпадання для кількості елементів що знаходяться в ЕСХ елементів двох ланцюгів адреси яких знаходяться в EDI та ESI. Префікс REPE поки рівні, REPNE поки не рівні. Приклад: функція strcmp() мови C CLD MOV ECX,N ;довжина LEA ESI,STR1 LEA EDI,STR2 REPE CMPSB JNE NO_SAME JMP _SAME

Слайд 24





Команда сканування
Команда сканування
SCAS (B W D) виконує порівняння значення акумулятора і ланцюга символів, який заданий регістром EDI аналогічно до префіксів СМРS
 Приклад 4. Пошук в ланцюгу знаків '$' и замена їх на підкреслення.
CLD
MOV AL,'$'
LEA EDI,STR2
MOV ECX,20
LO:
REPNE SCASB  ;здесь поиск
JNZ DONE
MOV BYTE PTR [EDI-1],"_" ;а здесь замена
JMP LO
DONE:
LODS (B W D) [ESI] . Завантаження (без префіксу) - виконує переміщення ланцюга з області заданої ЕSІ в акумулятор
STOS [EDI]  Збереження -пересилка значення  акумулятора в область  пам’яті яка адресується EDI
 Команди роботи з портами:
INS [EDI]      вивід в порт         
OUTS [ESI] ввід з порту 
для обміну великих блоків пам’яті між областями пам’яті  і периферійними пристроями. Використовують префікси. Адреса порту вводу виводу задається регістром DX.
Описание слайда:
Команда сканування Команда сканування SCAS (B W D) виконує порівняння значення акумулятора і ланцюга символів, який заданий регістром EDI аналогічно до префіксів СМРS  Приклад 4. Пошук в ланцюгу знаків '$' и замена їх на підкреслення. CLD MOV AL,'$' LEA EDI,STR2 MOV ECX,20 LO: REPNE SCASB ;здесь поиск JNZ DONE MOV BYTE PTR [EDI-1],"_" ;а здесь замена JMP LO DONE: LODS (B W D) [ESI] . Завантаження (без префіксу) - виконує переміщення ланцюга з області заданої ЕSІ в акумулятор STOS [EDI] Збереження -пересилка значення акумулятора в область пам’яті яка адресується EDI  Команди роботи з портами: INS [EDI] вивід в порт OUTS [ESI] ввід з порту для обміну великих блоків пам’яті між областями пам’яті і периферійними пристроями. Використовують префікси. Адреса порту вводу виводу задається регістром DX.

Слайд 25





Складні типи даних
Під  масивом  розуміють набір елементів одного типу послідовно розміщених в пам’яті. Перед застосуванням масиву в Assembler потрібно зарезервувати область пам’яті. 
Резервування виконується в блоці даних з використання одного  з двох методів:
1. Безпосереднім заданням елементів
2. З використанням директива DUP із визначенням кількості елементів
Приклад:
 .DATA
MAS1 DD 0,1,2,3,4
MAS2 DD 5 DUP(0)
 
 Локальний масив можна оголосити тільки наступним чином:
LOCAL     NameArray [const_size]:TYPE 
Приклад:
LOCAL     array[20]:BYTE
початкова ініціалізація не виконується.
Для доступу до елемента масиву можуть використовуватись різні види адресації. 
В загальному випадку доступ здійснюється за правилом
Описание слайда:
Складні типи даних Під масивом розуміють набір елементів одного типу послідовно розміщених в пам’яті. Перед застосуванням масиву в Assembler потрібно зарезервувати область пам’яті. Резервування виконується в блоці даних з використання одного з двох методів: 1. Безпосереднім заданням елементів 2. З використанням директива DUP із визначенням кількості елементів Приклад:  .DATA MAS1 DD 0,1,2,3,4 MAS2 DD 5 DUP(0)    Локальний масив можна оголосити тільки наступним чином: LOCAL NameArray [const_size]:TYPE Приклад: LOCAL array[20]:BYTE початкова ініціалізація не виконується. Для доступу до елемента масиву можуть використовуватись різні види адресації. В загальному випадку доступ здійснюється за правилом

Слайд 26





Доступ до елементів масиву
Нумерація елементів масиву починається з нуля. ОБОВ’ЯЗКОВО. Назва масиву вказує на зміщення в памяті до першого елементу масиву. Інші визначаються як зміщення від початкового.
Для доступу до елемента масиву можуть використовуватись різні види адресації. 
В загальному випадку доступ здійснюється за правилом 
База+(індекс*розмір)
Найпростіший вид – непряма базова адресація. Всі дії по формуванню виконуються під час роботи програми.
 Приклад:
 .DATA
MAS1 DD 1,2,0,4,5
.CODE
LEA ESI, MAS1
MOV EAX, [ESI]; нульовий елемент
ADD ESI, 4
MOV EBX, [ESI] ; перший елемент
ADD ESI, 4
ADD EAX, EBX
MOV [ESI], EAX ; сума нульового і першого в другий
Описание слайда:
Доступ до елементів масиву Нумерація елементів масиву починається з нуля. ОБОВ’ЯЗКОВО. Назва масиву вказує на зміщення в памяті до першого елементу масиву. Інші визначаються як зміщення від початкового. Для доступу до елемента масиву можуть використовуватись різні види адресації. В загальному випадку доступ здійснюється за правилом База+(індекс*розмір) Найпростіший вид – непряма базова адресація. Всі дії по формуванню виконуються під час роботи програми.  Приклад:  .DATA MAS1 DD 1,2,0,4,5 .CODE LEA ESI, MAS1 MOV EAX, [ESI]; нульовий елемент ADD ESI, 4 MOV EBX, [ESI] ; перший елемент ADD ESI, 4 ADD EAX, EBX MOV [ESI], EAX ; сума нульового і першого в другий

Слайд 27





Структури
Cтруктура — це тип даних, що складає з фіксованого числа елементів різного типу.
Для використання структур у програмі необхідний виконати три дії:
1.	Задати шаблон структури.  За змістом це означає визначення нового типу даних, що згодом можна використовувати для визначення змінних цього типу.
2.	Визначити екземпляр структури. Цей етап має на увазі ініціалізацію конкретної змінної з заздалегідь визначеної (за допомогою шаблона) структурою.
3.	Організувати звертання до елементів структури.
Загальний синтаксис оголошення. 
NameStruc   STRUC 
<поля>
NameStruc ENDS
 Приклад задання шаблону (оголошення):
 RECT STRUCT
  	LEFT DD ?
	TOP DD ?
RIGHT DD ?
	BOTTOM DD ?
RECT ENDS
Створення (визначення)
.data
R1 RECT <?>
R2 RECT <1,1,800,600>
Доступ. Виконується за допомогою оператора « . »
MOV  R1.LEFT, 20
Описание слайда:
Структури Cтруктура — це тип даних, що складає з фіксованого числа елементів різного типу. Для використання структур у програмі необхідний виконати три дії: 1. Задати шаблон структури. За змістом це означає визначення нового типу даних, що згодом можна використовувати для визначення змінних цього типу. 2. Визначити екземпляр структури. Цей етап має на увазі ініціалізацію конкретної змінної з заздалегідь визначеної (за допомогою шаблона) структурою. 3. Організувати звертання до елементів структури. Загальний синтаксис оголошення. NameStruc STRUC <поля> NameStruc ENDS  Приклад задання шаблону (оголошення):  RECT STRUCT LEFT DD ? TOP DD ? RIGHT DD ? BOTTOM DD ? RECT ENDS Створення (визначення) .data R1 RECT <?> R2 RECT <1,1,800,600> Доступ. Виконується за допомогою оператора « . » MOV R1.LEFT, 20

Слайд 28





Об’єднання

Об’єднання – складний тип даних, призначений для збереження даних різного типу в одній області пам’яті. Розмір об’єднання визначається  розміром максимального елемента. Всі елементи вирівнюються по початковій змінній даного типу
Загальний синтаксис:
NameUnion UNION
< поля >
NameUnion ENDS
 
Приклад:
 
Extend UNION
	 Ascci BYTE ?
 	Kanj WORD ?
Extend ENDS
 
INITIAL  EXTENDCHAR <J>   ;CREATE A UNION VARIABLE
MOV   AL, INITIAL.ASCII   ;MOVE BYTE-LENGTH DATA
MOV   BX, INITIAL.KANJI   ;MOVE WORD-LENGTH DATA
Описание слайда:
Об’єднання Об’єднання – складний тип даних, призначений для збереження даних різного типу в одній області пам’яті. Розмір об’єднання визначається розміром максимального елемента. Всі елементи вирівнюються по початковій змінній даного типу Загальний синтаксис: NameUnion UNION < поля > NameUnion ENDS   Приклад:   Extend UNION Ascci BYTE ? Kanj WORD ? Extend ENDS   INITIAL EXTENDCHAR <J> ;CREATE A UNION VARIABLE MOV AL, INITIAL.ASCII ;MOVE BYTE-LENGTH DATA MOV BX, INITIAL.KANJI ;MOVE WORD-LENGTH DATA

Слайд 29





Області видимості
Під областю видимості  змінної (переміщуваного операнду) розуміють ділянку програми в якій змінна доступна до читання чи модифікації
1. Глобальна область видимості – проект. 
2. Файлова область видимості – файл.
3. Локальна область видимості – процедура.
 Для використання  глобальних змінних використовують дві директиви PUBLIC і EXTRN.
Приклад:
;Оголошення          Використання
;файл T01.asm            T2.asm
PUBLIC A01            EXTRN A01:DWORD
.data
A01 DWORD 2
Змінні з файловою та глобальною область видимості  розміщуються в сегменті даних, створюються на початку роботи програми і знищуються на її закінченню.

Локальні, оголошення:
LOCAL name Var [[count]]:type,…
Name – назва змінної
Count – кількість елементів (необов’язково)
Type – тип змінних
 Приклад:
 LOCAL L:DWORD, R:DWORD, SL:BYTE
 LOCAL array[20]:BYTE
Описание слайда:
Області видимості Під областю видимості змінної (переміщуваного операнду) розуміють ділянку програми в якій змінна доступна до читання чи модифікації 1. Глобальна область видимості – проект. 2. Файлова область видимості – файл. 3. Локальна область видимості – процедура.  Для використання глобальних змінних використовують дві директиви PUBLIC і EXTRN. Приклад: ;Оголошення Використання ;файл T01.asm T2.asm PUBLIC A01 EXTRN A01:DWORD .data A01 DWORD 2 Змінні з файловою та глобальною область видимості розміщуються в сегменті даних, створюються на початку роботи програми і знищуються на її закінченню. Локальні, оголошення: LOCAL name Var [[count]]:type,… Name – назва змінної Count – кількість елементів (необов’язково) Type – тип змінних  Приклад:  LOCAL L:DWORD, R:DWORD, SL:BYTE LOCAL array[20]:BYTE

Слайд 30





Процедури
Процедура (функція) – це завершений фрагмент коду для реалізації певного   алгоритму, який може використовувати свої локальні змінні, та повторно викликатися в програмі.
Процедура вміщується у виконавчий модуль один раз і в разі її виклику керування передається на її початок. В Assembler процедура повинна обов’язково закінчуватись командою RET. За замовчування процедури мають файлову область видимості.
 Процедура може розміщуватись:
У файлі вихідного модуля з якого вона викликається (на початок програми, в середині програми, в кінці програми, але не за межами мітки). У всіх випадках розміщення процедура у файлі виконавчого модуля необхідно унеможливити на санкціонованому передачі управління у процедуру jmp;
У іншому файлі. В цьому випадку процедура компілюється до об’єктного файлу  або до файлу бібліотеки, і під’єднюються до виконавчого модуля. Так як процедури мають за замовчування файлову область видимості , їх необхідно в головній програмі оголосити за допомогою дерективи PROTO. 
Приклад:
WinMain	PROTO :DWORD,:DWORD,:DWORD,:DWORD
Описание слайда:
Процедури Процедура (функція) – це завершений фрагмент коду для реалізації певного алгоритму, який може використовувати свої локальні змінні, та повторно викликатися в програмі. Процедура вміщується у виконавчий модуль один раз і в разі її виклику керування передається на її початок. В Assembler процедура повинна обов’язково закінчуватись командою RET. За замовчування процедури мають файлову область видимості.  Процедура може розміщуватись: У файлі вихідного модуля з якого вона викликається (на початок програми, в середині програми, в кінці програми, але не за межами мітки). У всіх випадках розміщення процедура у файлі виконавчого модуля необхідно унеможливити на санкціонованому передачі управління у процедуру jmp; У іншому файлі. В цьому випадку процедура компілюється до об’єктного файлу або до файлу бібліотеки, і під’єднюються до виконавчого модуля. Так як процедури мають за замовчування файлову область видимості , їх необхідно в головній програмі оголосити за допомогою дерективи PROTO. Приклад: WinMain PROTO :DWORD,:DWORD,:DWORD,:DWORD

Слайд 31





Передача аргументів в процедуру можливо трьома способами:
Передача аргументів в процедуру можливо трьома способами:
Через стек
Через регістри процесора
Через спільну область пам’яті
 
Повернення результату з процедури виконується двома способами:
Через регістри
Через спільну область пам’яті
 В Assembler за замовчуванням значення, що повертається з процедури вміщується в EAX
  Правила виклику і передачі аргументу:
stdcall  - правило передачі аргумента, яке використовується по замовчуванню в Win32. згідно даного правила: перший аргумент вміщується в стек останній, відповідно останній – перший. Процедура сама не вирівнює стек. Недолік: у випадку коли кількість аргументів велика, процедура сама не знає як вирівнювати їх.
C - правило передачі по умові c - «перший - останній». Стек вирівнює процедура.
PASCAL - перший – перший; останній – останній. Процедура вирівнює стек
Fastcall  - перші три аргумента передаються через регістри процесора , решта аргументів через стек. Процедура вирівнює стек
Описание слайда:
Передача аргументів в процедуру можливо трьома способами: Передача аргументів в процедуру можливо трьома способами: Через стек Через регістри процесора Через спільну область пам’яті   Повернення результату з процедури виконується двома способами: Через регістри Через спільну область пам’яті  В Assembler за замовчуванням значення, що повертається з процедури вміщується в EAX   Правила виклику і передачі аргументу: stdcall - правило передачі аргумента, яке використовується по замовчуванню в Win32. згідно даного правила: перший аргумент вміщується в стек останній, відповідно останній – перший. Процедура сама не вирівнює стек. Недолік: у випадку коли кількість аргументів велика, процедура сама не знає як вирівнювати їх. C - правило передачі по умові c - «перший - останній». Стек вирівнює процедура. PASCAL - перший – перший; останній – останній. Процедура вирівнює стек Fastcall - перші три аргумента передаються через регістри процесора , решта аргументів через стек. Процедура вирівнює стек

Слайд 32





Спрощений синтаксис оголошення процедур (MASM32, Win32).
NameProc PROC [param01:TYPE, param02:TYPE …]
            [USES reglist] 
                 [LOCAL varlist]
                    ;код процедури
                      RET
 NameProc ENDP
Обовязковими елементами є:
1. Імя процедури та директива PROC.
2. Команда повернення з процедури RET.
3. Імя процедури та директива її завершення ENDP
Додаткові :
1. param01:TYPE – список аргументів процедури.
2. USES список регістрів процесора значення яких повинні бути збережені на початку роботи процедури та відновлені по її закінченню
3. LOCAL  -оголошення локальних змінних.
Описание слайда:
Спрощений синтаксис оголошення процедур (MASM32, Win32). NameProc PROC [param01:TYPE, param02:TYPE …] [USES reglist] [LOCAL varlist] ;код процедури RET NameProc ENDP Обовязковими елементами є: 1. Імя процедури та директива PROC. 2. Команда повернення з процедури RET. 3. Імя процедури та директива її завершення ENDP Додаткові : 1. param01:TYPE – список аргументів процедури. 2. USES список регістрів процесора значення яких повинні бути збережені на початку роботи процедури та відновлені по її закінченню 3. LOCAL -оголошення локальних змінних.

Слайд 33





Приклад процедури
.code
SayStr PROC sOut:DWORD
    LOCAL L   : DWORD 
    LOCAL R   : DWORD 
    LOCAL sLen: DWORD 
    LOCAL oHandle: DWORD
;   LOCAL     array[20]:BYTE
    INVOKE lstrlenA, sOut
    MOV sLen,EAX
 	INVOKE GetStdHandle, STD_OUTPUT_HANDLE
    MOV oHandle,EAX        
INVOKE WriteConsole, oHandle, sOut,sLen, addr L,addr R
       MOV EAX,L
       RET
SayStr ENDP
START: ; Наша програма
Описание слайда:
Приклад процедури .code SayStr PROC sOut:DWORD LOCAL L : DWORD LOCAL R : DWORD LOCAL sLen: DWORD LOCAL oHandle: DWORD ; LOCAL array[20]:BYTE INVOKE lstrlenA, sOut MOV sLen,EAX INVOKE GetStdHandle, STD_OUTPUT_HANDLE MOV oHandle,EAX INVOKE WriteConsole, oHandle, sOut,sLen, addr L,addr R MOV EAX,L RET SayStr ENDP START: ; Наша програма

Слайд 34





РЕЖИМИ АДРЕСАЦІЇ
Під режимом адресації розуміють спосіб представлення зсуву адреси операнда. 
Існує два види адресації:
Пряма адресація
Непряма адресація.
Описание слайда:
РЕЖИМИ АДРЕСАЦІЇ Під режимом адресації розуміють спосіб представлення зсуву адреси операнда. Існує два види адресації: Пряма адресація Непряма адресація.

Слайд 35





Пряма адресація
Описание слайда:
Пряма адресація

Слайд 36





Непряма адресація.
в самій команді може знаходитися лише частина ефективної адреси, а інші його компоненти знаходяться в регістрах чи додаткових операндах.
Непряма базова (регістрова) адресація
ефективна адреса операнда може знаходитися в довільному з регістрів загального призначення, крім sp/esp і bp/ebp. Синтаксично вирізняється вставкою імені регістра в квадратні дужки [ ]. Приклад, команда
 mov ax,[ecx] 
поміщає в регістр ах вміст слова за адресою із сегмента даних зі зсувом, що зберігається в регістрі есх.
Використовується при роботі з масивами. 
Непряма базова (регістрова) адресація зі зсувом
Призначена для доступу до даних з відомим зсувом щодо деякої базової адреси. Використовують  для доступу до елементів структур даних, коли зсув елементів відомо заздалегідь, на стадії розробки програми, а базовий адрес структури необхідно обчислюватися динамічно, на стадії виконання програми.
Приклад:
mov ax, [edx+3]  
пересилає в регістр AX слова з області пам'яті за адресою: значення edx + 3
Описание слайда:
Непряма адресація. в самій команді може знаходитися лише частина ефективної адреси, а інші його компоненти знаходяться в регістрах чи додаткових операндах. Непряма базова (регістрова) адресація ефективна адреса операнда може знаходитися в довільному з регістрів загального призначення, крім sp/esp і bp/ebp. Синтаксично вирізняється вставкою імені регістра в квадратні дужки [ ]. Приклад, команда mov ax,[ecx] поміщає в регістр ах вміст слова за адресою із сегмента даних зі зсувом, що зберігається в регістрі есх. Використовується при роботі з масивами. Непряма базова (регістрова) адресація зі зсувом Призначена для доступу до даних з відомим зсувом щодо деякої базової адреси. Використовують для доступу до елементів структур даних, коли зсув елементів відомо заздалегідь, на стадії розробки програми, а базовий адрес структури необхідно обчислюватися динамічно, на стадії виконання програми. Приклад: mov ax, [edx+3] пересилає в регістр AX слова з області пам'яті за адресою: значення edx + 3

Слайд 37





Непряма індексна адресація зі зсувом
Непряма індексна адресація зі зсувом
Для формування ефективної адреси використовується один з регістрів загального призначення з його масштабуванням. Використовується при роботі з масивами. Приклад:
MOV AX,MAS[ESI*2]; AX = MAS+(ESI)*2
Тільки якщо розмір елементів масиву складає 1, 2, 4 або 8 байт.
Непряма базова індексна адресація
ефективна адреса формується як сума вмісту двох регістрів загального призначення: базового й індексного.
Наприклад: 
MOV   EAX,[ESI][EDX]
У даному прикладі ефективна адреса другого операнду формується з двох компонентів, (esi)+(edx).
Непряма базова індексна адресація зі зсувом
Ефективна адреса формується як сума трьох складових: вмісту базового регістра, вмісту індексного регістра і значення полю чи зсуву в команді.
Приклад:
MOV EAX,[ESI+5][EDX]                  ; EAX=(ESI)+5+(EDX) 
ADD EAX,ARRAY[ESI][EBX]              ; EAX=ARRAY+(ESI)+(EBX)
Описание слайда:
Непряма індексна адресація зі зсувом Непряма індексна адресація зі зсувом Для формування ефективної адреси використовується один з регістрів загального призначення з його масштабуванням. Використовується при роботі з масивами. Приклад: MOV AX,MAS[ESI*2]; AX = MAS+(ESI)*2 Тільки якщо розмір елементів масиву складає 1, 2, 4 або 8 байт. Непряма базова індексна адресація ефективна адреса формується як сума вмісту двох регістрів загального призначення: базового й індексного. Наприклад: MOV EAX,[ESI][EDX] У даному прикладі ефективна адреса другого операнду формується з двох компонентів, (esi)+(edx). Непряма базова індексна адресація зі зсувом Ефективна адреса формується як сума трьох складових: вмісту базового регістра, вмісту індексного регістра і значення полю чи зсуву в команді. Приклад: MOV EAX,[ESI+5][EDX] ; EAX=(ESI)+5+(EDX) ADD EAX,ARRAY[ESI][EBX] ; EAX=ARRAY+(ESI)+(EBX)

Слайд 38





Математичний сопроцесор
Всю роботу з дiйсними числами покладено на спiвпроцесор. Вiн має свої регiстри ST0-ST7 (стек чисел з плаваючою комою),  свiй порядок роботи з ними, свої команди. Є три режими точностi для дiйсних чисел:
1. одинарна точнiсть (32 бiти - 4 байти);
2. подвiйна точнiсть (64 бiти - 8 байтiв);
3. пiдвищена точнiсть (80 бiтiв - 10 байтiв).
Найпоширенiшою є подвiйна точнiсть (64 бiти - 8 байтiв). Для оголошення таких змiнних використовують такий формат:
X DQ 0
Y DQ ?      ; тут dq = define quarterword (означити почетвiрне слово).
Описание слайда:
Математичний сопроцесор Всю роботу з дiйсними числами покладено на спiвпроцесор. Вiн має свої регiстри ST0-ST7 (стек чисел з плаваючою комою), свiй порядок роботи з ними, свої команди. Є три режими точностi для дiйсних чисел: 1. одинарна точнiсть (32 бiти - 4 байти); 2. подвiйна точнiсть (64 бiти - 8 байтiв); 3. пiдвищена точнiсть (80 бiтiв - 10 байтiв). Найпоширенiшою є подвiйна точнiсть (64 бiти - 8 байтiв). Для оголошення таких змiнних використовують такий формат: X DQ 0 Y DQ ? ; тут dq = define quarterword (означити почетвiрне слово).

Слайд 39





Представлення дійсних чисел
Одинарна точність
1 бит 8 бит     23 бита
---T-------T--------------------¬
¦Зн¦Порядок¦      Мантиса      ¦
L--+-------+---------------------
Двійна точність
1 бит 11 бит          52 бита
---T---------T--------------------------------¬
¦Зн¦ Порядок ¦            Мантиса            ¦
L--+---------+---------------------------------
 Розширена точність
1 бит 15 бит                   64 бита
---T-------------T------------------------------------¬
¦Зн¦   Порядок   ¦               Мантиса             ¦
L--+-------------+-------------------------------------

Класифікація команд:
Усі команди співпроцесора можна розділити на кілька груп:
• команди пересилання даних;
• арифметичні команди;
• команди порівнянь чисел;
• трансцендентні команди;
• керуючі команди.
Описание слайда:
Представлення дійсних чисел Одинарна точність 1 бит 8 бит 23 бита ---T-------T--------------------¬ ¦Зн¦Порядок¦ Мантиса ¦ L--+-------+--------------------- Двійна точність 1 бит 11 бит 52 бита ---T---------T--------------------------------¬ ¦Зн¦ Порядок ¦ Мантиса ¦ L--+---------+---------------------------------  Розширена точність 1 бит 15 бит 64 бита ---T-------------T------------------------------------¬ ¦Зн¦ Порядок ¦ Мантиса ¦ L--+-------------+------------------------------------- Класифікація команд: Усі команди співпроцесора можна розділити на кілька груп: • команди пересилання даних; • арифметичні команди; • команди порівнянь чисел; • трансцендентні команди; • керуючі команди.

Слайд 40





Конвертацiя дiйсного числа в рядок i навпаки
Описание слайда:
Конвертацiя дiйсного числа в рядок i навпаки

Слайд 41





Основні команди
Описание слайда:
Основні команди

Слайд 42





Команди порівняння
Описание слайда:
Команди порівняння



Похожие презентации
Mypresentation.ru
Загрузить презентацию