Средства и методы программирования
Рефераты >> Программирование и компьютеры >> Средства и методы программирования

Состояние флагов после выполнения команды:

09

08

IF

TF

0

0

Применение: Как видно из синтаксиса, существуют две формы этой команды:

  • int 3 — имеет свой индивидуальный код операции 0cch и занимает один байт. Это обстоятельство делает ее очень удобной для использования в различных программных отладчиках для установки точек прерывания путем подмены первого байта любой команды. Микропроцессор, встречая в последовательности команд команду с кодом операции 0cch, вызывает программу обработки прерывания с номером вектора 3, которая служит для связи с программным отладчиком.
  • Вторая форма команды занимает два байта, имеет код операции 0cdh и позволяет инициировать вызов подпрограммы обработки прерывания с номером вектора в диапазоне 0–255. Особенности передачи управления, как было отмечено, зависят от режима работы микропроцессора.

;вызов обработчика аппаратного прерывания 08h из программы: int 08h

CMP

(CoMPare operands)

Сравнение операндов

Схема команды:

cmp операнд1,операнд2

Назначение: сравнение двух операндов.

Алгоритм работы:

  • выполнить вычитание (операнд1-операнд2);
  • в зависимости от результата установить флаги, операнд1 и операнд2 не изменять (то есть результат не запоминать).

Состояние флагов после выполнения команды:

11

07

06

04

02

00

OF

SF

ZF

AF

PF

CF

R

R

r

r

r

r

Применение: Данная команда используется для сравнения двух операндов методом вычитания, при этом операнды не изменяются. По результатам выполнения команды устанавливаются флаги. Команда cmp применяется с командами условного перехода и командой установки байта по значению setcc.

len equ 10 . cmp ax,len jne m1 ;переход если (ax)<>len jmp m2 ;переход если ax)=len

PUSH

(PUSH operand onto stack)

Размещение операнда в стеке

Схема команды:

push источник

Назначение: размещение содержимого операнда источник в стеке.

Алгоритм работы:

  • уменьшить значение указателя стека esp/sp на 4/2 (в зависимости от значения атрибута размера адреса — use16 или use32);
  • записать источник в вершину стека (адресуемую парой ss:esp/sp).

Состояние флагов после выполнения команды: выполнение команды не влияет на флаги.

Применение: Команда push используется совместно с командой pop для записи значений в стек и извлечения их из стека. Размер записываемых значений — слово или двойное слово. Также в стек можно записывать непосредственные значения. Заметьте, что в отличие от команды pop в стек можно включать значение сегментного регистра cs. Другой интересный момент связан с регистром sp. Команда push esp/sp записывает в стек значение esp/sp по состоянию до выдачи этой команды. В микропроцессоре i8086 по этой команде записывалось скорректированное значение sp. При записи в стек 8-битных значений для них все равно выделяется слово или двойное слово (в зависимости от use16 или use32).

my_proc proc near push ax push bx;тело процедуры, в которой изменяется содержимое;регистров ax и bx . pop bx pop ax ret endp

POP

(POP operand from the stack)

Извлечение операнда из стека

Схема команды:

pop приемник

Назначение: извлечение слова или двойного слова из стека.

Алгоритм работы: Алгоритм работы команды зависит от установленного атрибута размера адреса — use16 или use32:

  • загрузить в приемник содержимое вершины стека (адресуется парой ss:esp/sp);
  • увеличить содержимое esp/sp на 4 (2 байта) для use32 (соответственно для use16).

Состояние флагов после выполнения команды: выполнение команды не влияет на флаги.

Применение: Команда применяется для восстановления содержимого вершины стека в регистр, ячейку памяти или сегментный регистр. Заметим, что недопустимо восстановление значения в сегментный регистр cs.

my_proc proc near push ax push bx;тело процедуры, в которой изменяется содержимое;регистров ax и bx . pop bx pop ax ret endp

DEC

(DECrement operand by 1)

Уменьшение операнда на единицу

Схема команды:

dec операнд

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

Алгоритм работы: команда вычитает 1 из операнда.

Состояние флагов после выполнения команды:

11

07

06

04

02

OF

SF

ZF

AF

PF

r

r

r

r

r

Применение: Команда dec используется для уменьшения значения байта, слова, двойного слова в памяти или регистре на единицу. При этом заметьте то, что команда не воздействует на флаг cf.

mov al,9 . dec al ;al=8


Страница: