- •Министерство образования российской федерации ижевский государственный технический университет
- •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. Команды управления процессором
Команды процессора 8086
1. Команды пересылки данных
1.1. Общие команды пересылки данных
LAHF Загрузка флагов в регистр AH
10011111 |
LDS Загрузка регистра сегмента данных
11000101 |
MOD REG R/M |
DISP LOW |
DISP HIGH |
LEA Загрузить ЕА в регистр
10001101 |
MOD REG R/M |
DISP LOW |
DISP HIGH |
LES Загрузка регистра дополнительного сегмента
11000100 |
MOD REG R/M |
DISP LOW |
DISP HIGH |
LODS, LODSB, LODSW Загрузка однобайтовой или двухбайтовой строки
1010110w |
MOV Пересылка данных
100010dw |
MOD REG R/M |
DISP LOW |
DISP HIGH |
1100011w |
MOD REG R/M |
DISP LOW |
DISP HIGH |
DATA |
DATA, если W=1 |
1011wREG |
DATA |
DATA, если W=1 |
1010000w |
ADDR LOW |
ADDR HIGH |
1010001w |
ADDR LOW |
ADDR HIGH |
10001110 |
MOD 0 SG R/M |
DISP LOW |
DISP HIGH |
10001100 |
MOD 0 SG R/M |
DISP LOW |
DISP HIGH |
SAHF Установка флагов из регистра АН
10011110 |
Xlat Перекодировка
11010111 |
Xchg Перестановка
10010REG |
1000011w |
MOD REG R/M |
DISP LOW |
DISP HIGH |
1.2. Стековые команды
POP Извлечение слова из стека
10001111 |
MOD 000 R/M |
DISP LOW |
DISP HIGH |
01011REG |
000SG111 |
POPA Извлечение из стека всех общих регистров
01100001 |
PUSH Занесение слова в стек
11111111 |
MOD 110 R/M |
DISP LOW |
DISP HIGH |
01010REG |
000SG110 |
PUSHA Занесение в стек всех общих регистров
01100000 |
1.3. Команды ввода-вывода
In Ввод байта или слова из порта
1110110w |
1110010w |
PORT |
OUT Вывод байта или слова в порт
1110111w |
1110011w |
PORT |
1.4. Команды пересылки цепочек
MOVS, MOVSB, MOVSW Пересылка строки байт или строки слов
1010010w |
REP, REPNE Повтор строковой операции
11110010 |
REPE, REPZ Повтор строковой операции
11110011 |
SCAS, SCASB, SCASW Поиск байта или слова в строке
1010111w |
STOS, STOSB, STOSW Запись однобайтовой или двухбайтовой строки
1010101w |
2. Арифметические команды
2.1. Команды сложения
AAA Коррекция ASCII-формата для сложения
00110111 |
ADC Сложение с переносом
000100dw |
MOD REG R/M |
DISP LOW |
DISP HIGH |
100000sw |
MOD 010 R/M |
DISP LOW |
DISP HIGH |
DATA |
DATA, если W=1 |
0001010w |
DATA |
DATA, если W=1 |
ADD Сложение
000000dw |
MOD REG R/M |
DISP LOW |
DISP HIGH |
100000sw |
MOD 000 R/M |
DISP LOW |
DISP HIGH |
DATA |
DATA, если W=1 |
0000010w |
DATA |
DATA, если W=1 |
DAA Десятичная коррекция для сложения
00100111 |