Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по ЭВМ и ПУ.doc
Скачиваний:
64
Добавлен:
16.03.2015
Размер:
1.16 Mб
Скачать

2.5.1.1. Общие команды.

Команда MOV - переслать данные, основная команда группы.

Команда MOV осуществляет пересылку байт, слов или двойных слов.

Форматы команды MOV приведены в таблице 2.2.

Таблица 2.2. Форматы команды MOV.

Передача данных

Слово

Байт

Регистр в регистр

MOV AX, BX

MOV AH, BH

Операнд в регистр или память

MOV CX, 850

MOV BL, 35

MOV PW, 850

MOV PB, 35

Память в регистр

MOV DX, PW

MOV CL, PB

Регистр в память

MOV PW, DX

MOV PB, CL

Регистр в сегментный регистр

MOV ES, BX

Сегментный регистр в регистр

MOV AX, DS

Сегментный регистр в память

MOV PW, CS

Исключения:

Нельзя пересылать данные из одной ячейки памяти в другую.

Нельзя загрузить в регистр сегмента операнд с непосредственной адресацией.

Нельзя переслать значение одного регистра сегмента в другой.

Нельзя использовать регистры CS и IP в качестве приемника в команде MOV.

Команды MOVSX и MOVZX - новые команды пересылки данных, введенные в систему команд микропроцессора 80386. Форматы команд:

, где

reg- только регистры общего назначения, mem - ячейка памяти.

MOVSX - пересылает данные и расширяет регистр знаковым разрядом операнда - источника,

MOVZX - пересылает данные и расширяет регистр нулями.

Команда XCHG - осуществляет обмен байт или слов. Один из ее операндов может быть в регистре или памяти, другой - в регистре. Различий между приемником и источником нет. Примеры использования команды прведены в таблице 2.3.

Таблица 2.3. Примеры использования команды XCHG.

Обмен данными

Слово

Байт

Регистр с регистром

XCHG CX, DX

XCHG AL, AH

Регистр с памятью

XCHG BX, PW

XCHG BL, PB

Исключение:

Нельзя выполнить обмен значений регистров сегментов.

2.5.1.2. Команды push и pop .

PUSH - передает слово из источника в стек, а команда POP осуществляет противоположное действие: передает слово из стека в приемник. Регистр SP содержит смещение последнего включенного в стек слова (вершину стека).

! Стек растет по направлению уменьшения адресов !

PUSH начинается с уменьшения содержимого SP на 2, а команда POP завершается увеличением содержимого SP на 2.

Операндами команд PUSH и POP могут быть сегментный регистр, несегментный (шестнадцатиразрядный) ре­гистр или слово в памяти. Кроме того, в команде PUSH можно указывать непосредственный операнд, что не допускается в команде PUSH для процессора 8086. POP- не может содержать непосредственный операнд. Форматы команд приведены в таблице 2.4.

Таблица 2.4. Форматы команд PUSH и POP.

Операнд

Включение

Извлечение

Регистр

PUSH AX

POP BX

Память

PUSH PW

POP PW

Сегментный регистр

PUSH DS

POP ES

Непосредственный операнд

PUSH 856

Все 16-битные регистры

PUSHA

POPA

Все 32-битные регистры

PUSHAD

POPAD

Исключение:

POP CS и POP IP - недействительные операции.

PUSHA и POPA являются эффективным средством для сохранения содержимого всех регистров (кроме сег­ментных и IP) в начале выполнения процедуры и восстановления их в конце работы. PUSHA включает в стек регистры в следующем порядке: AX, CX, DX, BX, SP, BP, SI, DI. Значение SP то, что было в нем до выполнения команды PUSHA. PUSHA уменьшает содержимое SP на 2 при включении в стек содержимого каждого регистра. POPA вызывает увеличение содержимого SP на ту же величину, что и PUSHA, ей не требуется запомненное в стеке содержимое регистра SP и она его просто уничтожает. Команды PUSHAD, POPAD работают аналогично с 32-битными регистрами процессора.

Команда XLAT - преобразует значение в регистре AL: она его заменяет на байт из таблицы, адресуемой регистром BX, причем индексом таблицы служит исходное содержимое регистра AL. Удобна для преобразования из одного кода в другой.

Пример использования команды для перевода цифр из 10 системы счисления в код “2 из 5” - любой код, содержащий 2 единичных бита.

Код “2 из 5” приведен в таблице.

Цифра

Код

0

11000

1

00011

2

00101

3

00110

~

~

9

10100

TABLE DW 11000B, 00011B, 00101B, 00110B, 01001B, 01010B, 01100B, 10001B, 10010B, 10100B, 11000B

MOV BX, OFFSET TABLE

MOV AL, 7

XLATTABLE