
- •Лабораторная работа №2
- •Методические указания к изучению операций передачи данных
- •Команда пересылки mov
- •Команда обмена xchg
- •Команды ввода и вывода
- •Загрузка эффективного адреса
- •Загрузка указателя
- •Пересылка флагов
- •Перекодировка
- •Команды работы со стеком
- •Система команд передачи данных
- •Способы адресации к памяти
- •Задание на программирование
Команды работы со стеком
К командам передачи данных относятся также команды загрузки в стек и передачи данных из стека. При работе со стеком используется указатель стека SP, который уменьшается при записи в стек и увеличивается при выгрузке данных из стека. Размер стека заказывается директивой STACK N, где N – количество байт ( число должно быть четным).
Для доступа к стеку используется сегментный регистр SS.
Загрузка в стек осуществляется командой
PUSH источник
В качестве источника может выступать 16-ти разрядный регистр ( в том числе и сегментный) или ячейка памяти (16-ти разрядные данные).
Пересылка данных из стека осуществляется командой
POP приемник
Приемником данных также может выступать 16-ти разрядный регистр ( в том числе и сегментный) или ячейка памяти (16-ти разрядные данные).
Система команд передачи данных
При выполнении операций передачи данных значения флагов в регистре флагов процессора не изменяется (за исключением команды SAHF и POPF, которые восстанавливают флаги из аккумулятора или из стека).
В таблице 1.2 приведен набор команд передачи данных.
Условные обозначения, используемые при описании команд, представлены в таблице 1.3.
Таблица 1.2
Команда |
Мнемоника |
Выполняемый обмен |
Пересылка данных |
MOV [mem] /reg1[mem] /reg2 |
M[mem] /(reg1)M[mem]/(reg2) |
MOV [mem] /reg,data |
M[mem] /(reg)data | |
MOV sreg,[mem16]/reg16 |
(sreg)M[mem16]/(reg16) | |
MOV [mem16] /reg16,sreg2 |
M[mem16]/(reg16)(sreg) | |
Обмен данными |
XCHG [mem]/reg1,[mem]/reg2 |
M[mem]/(reg1)>M[mem]/(reg2) |
XCHG reg16 |
(AX)>reg16 | |
Кодирование |
XLAT |
(AL)M[(BX)+(AL)] |
Загрузка адреса |
LEA reg 16,[mem] |
(reg18)EA[mem] |
LDS reg 16,[mem32] |
(reg16)M[mem32] (DS)M[mem32+2] | |
LES reg 16,[mem32] |
(reg16)M[mem32], (ES)M[mem32+2] | |
Передача флагов в АН |
LAHF |
(AH)Младший байт F) |
Сохранение флагов |
SAHF |
(SP)(SP)-2 M[(SP)]M (Младший байт F) |
Включение в стек |
PUSH [mem16]/reg16/(sreg) |
(SP)(SP)-2 M[(SP)]M[mem16]/(reg16}/(sreg) |
PUSHF |
(SP)(SP)-2 ; M[(SP)](F) | |
Извлечение из стека |
POP [mem16]/reg16/sreg |
[mem16]/reg16/(sreg)M[(SP)], (SP)(SP)+2 |
POPF |
(F) M[(SP)], (SP)(SP)+2 | |
Ввод из порта |
IN AC, PORT |
(ac)(port) |
IN AC, DX |
(ac)(port[(DX)]) | |
Вывод в порт |
OUT PORT, AC |
(port) (ac) |
OUT DX, AC |
(port[(DX)]) (ac) |
Таблица 1.3
Обозначение |
Смысл обозначения |
Reg |
Логический адрес 8-или 16-битного регистра МП общего назначения, т.е. AX, BX, CX, DX, BP, SI, DI, SP, AH, AL, BH, BL, CH, CL, DH, DL. |
reg 16 |
Логический адрес 16-битного регистра МП общего назначения, т.е. AX, BX, CX, DX, BP, SI, DI, SP. |
Ac |
Регистр аккумулятор AL иAX |
Sreg |
Логический адрес сегментного регистра МП, т.е. CS, DS, ES, SS. |
[mem] |
Обращение к байту или слову памяти в режимах чтения записи с использованием прямой и косвенной адресации. |
[mem16] |
Обращение к слову памяти в любом режиме адресации. |
[mem32] |
Обращение к двойному слову памяти в любом режиме адресации. |
Data |
Непосредственно заданная в команде 8-или 16-битная константа. |
Port |
Прямо заданный адрес 8-или 16 битного входного или выходного порта |
(reg) |
Содержимое 8-или 16-битного регистра МП |
М[mem] |
Значение байта, слова или двойного слова в памяти с любым режимом адресации. |