- •Министерство образования российской федерации ижевский государственный технический университет
- •1. Методика выполнения лабораторных работ
- •2. Основные сведения об ассемблере
- •2.1. Регистры процессора
- •2.2. Команды ассемблера
- •2.3. Прерывания ассемблера
- •4. Режимы адресации команд
- •5. Байт способа адресации
- •6. Режимы адресации переходов
- •7. Система команд
- •7.1. Команды пересылки
- •7.1.1. Общие команды пересылки данных
- •7.1.1.2. Xchg - перестановка
- •7.1.1.3. Xlat - перекодировка
- •7.1.1.7. Команда lahf - загрузка флагов в регистр ан
- •7.1.1.8. Sahf - установка флагов из регистра ан
- •7.1.2. Команды пересылки данных с использованием стека (стековые команды)
- •7.1.3. Команды ввода - вывода
- •1.4. Команды пересылки цепочек байт или слов (цепочечные команды)
- •7.1.4.1. Movs - пересылка строки байтов или слов
- •7.1.4.2. Movsb/movsw - пересылка строки байтов или слов
- •7.1.4.3. Lods - загрузка строки байтов или слов
- •7.1.4.8. Cmpsb/cmpsw - сравнение строки байтов или слов
- •7.1.4.9. Scas - сканирование строки байтов или слов
- •7.1.4.10. Scasb/scasw - сканирование строки байтов или слов
- •7.2. Арифметические команды
- •7.2.1. Команды сложения
- •7.2.2. Команды вычитания
- •7.2.3. Команды сравнения
- •7.2.4. Команды умножения
- •7.2.4.2. Imul - умножение знаковых величин
- •7.2.5. Команды деления
- •7.2.5.2. Idiv - деление знаковых величин
- •7.3. Логические команды
- •7.4. Команды сдвигов
- •7.5. Команды переходов (передачи управления)
- •7.5.1. Команды безусловных переходов
- •7.5.2. Команды условных переходов
- •7.5.3. Команды вызовов (подпрограммы)
- •7.5.4. Команды возвратов (из подпрограмм)
- •7.5.5. Команды управления циклами
- •7.5.6. Команды прерываний
- •7.6. Команды управления микропроцессором
- •8. Примеры выполнения лабораторных работ
- •9. Учебно-методическая литература
- •Описание команд отладчика debug
- •Команды процессора 8086
- •1. Команды пересылки данных
- •1.1. Общие команды пересылки данных
- •Xlat Перекодировка
- •Xchg Перестановка
- •1.2. Стековые команды
- •1.3. Команды ввода-вывода
- •In Ввод байта или слова из порта
- •1.4. Команды пересылки цепочек
- •2. Арифметические команды
- •2.1. Команды сложения
- •Inc Инкремент
- •2.2. Команды вычитания
- •2.3. Команды сравнения
- •2.4. Команды умножения
- •Imul Целое умножение знаковых величин
- •2.5. Команды деления
- •Idiv Целое деление знаковых величин
- •3. Логические команды
- •Xor Исключающее или
- •4. Команды сдвигов
- •5. Команды передачи управления
- •5.1. Команды вызова процедуры
- •5.2. Команды прерываний
- •Int Прерывание
- •Into Прерывание по переполнению
- •Iret Возврат из обработки прерывания
- •5.3. Команды условных переходов
- •5.4. Команды безусловных переходов
- •5.5. Команды управления циклами
- •6. Команды управления процессором
Xor Исключающее или
001100dw |
MOD REG R/M |
DISP LOW |
DISP HIGH |
1000000w |
MOD 110 R/M |
DISP LOW |
DISP HIGH |
DATA |
DATA, если W=1 |
0011010w |
DATA |
DATA, если W=1 |
4. Команды сдвигов
RCL Циклический сдвиг влево через перенос
110100сw |
MOD 010 R/M |
DISP LOW |
DISP HIGH |
RCR Циклический сдвиг вправо через перенос
110100сw |
MOD 011 R/M |
DISP LOW |
DISP HIGH |
ROL Циклический сдвиг влево
110100сw |
MOD 000 R/M |
DISP LOW |
DISP HIGH |
ROR Циклический сдвиг вправо
110100сw |
MOD 001 R/M |
DISP LOW |
DISP HIGH |
SAL Сдвиг арифметический влево
110100сw |
MOD 100 R/M |
DISP LOW |
DISP HIGH |
SAR Сдвиг арифметический вправо
110100сw |
MOD 111 R/M |
DISP LOW |
DISP HIGH |
SHL Сдвиг логический влево
110100сw |
MOD 100 R/M |
DISP LOW |
DISP HIGH |
SHR Сдвиг логический вправо
110100сw |
MOD 101 R/M |
DISP LOW |
DISP HIGH |
5. Команды передачи управления
5.1. Команды вызова процедуры
CALL Вызов процедуры внутри сегмента
11101000 |
DISP LOW |
DISP HIGH |
11111111 |
MOD 010 R/M |
DISP LOW |
DISP HIGH |
CALL Вызов процедуры между сегментами
10011010 |
OFFSET-LOW |
OFFSET-HIGH |
SEG LOW |
SEG HIGH |
11111111 |
MOD 011 R/M |
DISP LOW |
DISP HIGH |
RET Возврат из процедуры внутри сегмента
11000011 |
11000010 |
DISP LOW |
DISP HIGH |
RET Возврат из процедуры между сегментами
11001011 |
11001010 |
DISP LOW |
DISP HIGH |
5.2. Команды прерываний
Int Прерывание
1100110w |
TYPE |
Into Прерывание по переполнению
11001110 |
Iret Возврат из обработки прерывания
11001111 |
5.3. Команды условных переходов
JA, JNBE Переход по “выше” или “не ниже или равно”
JNC Переход, если нет переноса
01110111 |
DISP |
JAE, JNB Переход по “выше или равно” или “не ниже”
01110011 |
DISP |
JB, JNAE Переход по “ниже” или “не выше или равно”
JC Переход по переносу
01110010 |
DISP |
JBE, JNA Переход по “ниже или равно” или “не выше”
01110110 |
DISP |
JCXZ Переход по “CX равно нулю”
11100011 |
DISP |
JE, JZ Переход по “равно” или “нулю”
01110100 |
DISP |
JG, JNLE Переход по “больше” или “не меньше или равно”
01111111 |
DISP |
JGE, JNL Переход по “больше или равно” или “не меньше”
01111101 |
DISP |
JL, JNGE Переход по “меньше” или “не больше или равно”
01111100 |
DISP |
JLE, JNG Переход по “меньше или равно” или “не больше”
01111110 |
DISP |
JNE, JNZ Переход по “не равно” или “не нуль”
01110101 |
DISP |
JNO Переход, если нет переполнения
01110001 |
DISP |
JNP, JPO Переход, если нет паритета или паритет нечетный
01111011 |
DISP |
JNS Переход, если нет знака
01111001 |
DISP |
JO Переход по переполнению
01110000 |
DISP |
JP, JPE Переход, если есть паритет или паритет четный
01111010 |
DISP |
JS Переход по знаку
01111000 |
DISP |