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

2.5.1.5. Флажковые команды (команды пересылки флагов).

Команды этого класса обеспечивают доступ к флагам процессора.

Команды LAHF (загрузить флаги в AH) и SAHF (запомнить AH во флагах). LAHF передает 5 флагов SF, ZF, AF, PF и CF в определенные биты регистра AH, а SAHF - реализует противоположную передачу. На рисунке 2.1 показано соответствие флагов разрядам регистра AH.

SF

ZF

AF

PF

CF

флаги

7

6

5

4

3

2

1

0

AH

Рисунок 2.1. Соответствие флагов разрядам регистра AH.

Эти флаги выделены потому, что они были в микропроцессоре 8080. LAHF и SAHF предусмотрены в основ­ном, для преобразования программ микропроцессора 8080 в программы микропроцессора 8086. Команда SAHF оказалась полезной при использовании арифметического сопроцессора для использования результатов расчета в команде условного перехода.

Существуют команды для пересылки содержимого регистра флагов в стек и обратно. Это команды PUSHF (включить в стек флаги) и POPF (извлечь из стека флаги). Рисунок 2.2 иллюстрирует работу этих команд.

Младшие адреса

7

6

5

4

3

2

1

0

SF

ZF

AF

PF

CF

NT

IO

PL

OF

DF

IF

TF

Старшие адреса

7

6

5

4

3

2

1

0

Рисунок 2.2. Размещение в стеке флагов после команды PUHF.

Начиная с микропроцессора 80386 добавляются команды PUSHFD и POPFD для 32-битного регистра EFLAGS.

PUSHFD- включает в стек 32-разрядный регистр флагов.

POPFD - извлекает из стека 32-разрядный регистр флагов.

2.5.2.Арифметические команды.

Перечень арифметических команд приведен в таблице 2.6.

Таблица 2.6. Перечень арифметических команд.

Мнемоника команд

Описание команды

Сложение

ADD - сложение

приемник + источник приемник

ADC - сложить с переносом

приемник + источник + CF приемник

INC - увеличить на 1

приемник + 1 приемник

. Вычитание

SUB - вычесть

приемник - источник приемник

SBB - вычесть с займом

приемник - источник - CF приемник

DEC - уменьшить на 1

приемник - 1 приемник

NEG - изменить знак

0 - приемник приемник

CMP - сравнить

приемник - источник 

Умножение

MUL - умножить

AL * источник (8) AX

AX * источник (16) DX, AX

IMUL - умножить со знаком

так же, как и в команде MUL, но операнды со знаком

Деление.

DIV - разделить

AX/источник (8): целая часть AL, остатокAH

[DX, AX]/источник (16): целая часть AX, остатокDX

IDIV - разделить со знаком

так же, как и в команде DIV, но операнды со знаком

Команды расширения

CBW - преобразовать байт в слово

знаковый бит AL в AH

CWD - преобразовать слово в двойное слово

знаковый бит AX в DX

CWDE - преобразовать слово в расширенное двойное слово

знаковый бит AX в EAX

CDQ - преобразовать двойное слово в учетверенное двойное слово

знаковый бит EAX в EDX

В арифметических командах устанавливаются или сбрасываются 6 флажков состояния:

CF - устанавливается, если операция дала беззнаковый результат вне диапазона (т.е. есть перенос в знаковый разряд). Заём (7,15,31) вызывает выход из разрядной сетки.

OF - устанавливается, если в операции получился знаковый результат, находящийся вне диапазона (т.е. пе­ренос в знаковый разряд) не создаёт переноса из разрядной сетки или перенос из разрядной сетки происходит без переноса в знаковый разряд.

ZF - устанавливается, если результат операции (знаковый или беззнаковый) равен нулю.

SF - устанавливается, если старший бит результата операции содержит 1, показывая отрицательное число.

PF - устанавливается, если результат операции содержит четное число единичных битов.

AF - устанавливается, если в десятичных операциях требуется коррекция.

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