Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Assembler_LAB_02.docx
Скачиваний:
14
Добавлен:
02.02.2015
Размер:
34.22 Кб
Скачать
      1. Команды работы со стеком

К командам передачи данных относятся также команды загрузки в стек и передачи данных из стека. При работе со стеком используется указатель стека SP, который уменьшается при записи в стек и увеличивается при выгрузке данных из стека. Размер стека заказывается директивой STACK N, где N – количество байт ( число должно быть четным).

Для доступа к стеку используется сегментный регистр SS.

Загрузка в стек осуществляется командой

PUSH источник

В качестве источника может выступать 16-ти разрядный регистр ( в том числе и сегментный) или ячейка памяти (16-ти разрядные данные).

Пересылка данных из стека осуществляется командой

POP приемник

Приемником данных также может выступать 16-ти разрядный регистр ( в том числе и сегментный) или ячейка памяти (16-ти разрядные данные).

      1. Система команд передачи данных

При выполнении операций передачи данных значения флагов в регистре флагов процессора не изменяется (за исключением команды 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]

Значение байта, слова или двойного слова в памяти с любым режимом адресации.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]