Главная страница
Случайная страница
КАТЕГОРИИ:
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Команда обмена операндами - XCHG
Команда обмена XCHG (exchange - обменять) меняет между собой значения двух регистров или регистра и ячейки памяти. Операнды должны иметь одинаковый тип данных (байт− байт, слово− слово и т.д.). Несколько примеров: XCHG АХ, ВХ; Обменять значения двух словных регистров.
XCHG AL, B; Обменять значения двух байтовых регистров.
XCHG WORD_MEM, DX; Поменять значения ячейки памяти и регистра.
XCHG DL, BYTE_ MEM; Поменять значения регистра и ячейки памяти.
3.2 Команды процессоров Intel 8086 – Intel 80386
Наиболее распространенные непривилегированные команды этих процессоров перечислены в таблице 3.6. Команды сгруппированы по выполняемым функциям:
1. Команды пересылки данных осуществляют обмен информацией между регистрами, ячейками памяти и портами ввода–вывода.
2. Арифметические команды выполняют арифметические операции над двоичными или двоично–десятичными числами.
3. Команды манипулирования битами выполняют арифметические и логические сдвиги, циклические сдвиги, логические операции над регистрами и ячейками памяти.
4. Команды обработки строк данных перемещают, сравнивают и сканируют строки данных.
5. Команды управления процессором устанавливают и сбрасывают флаги состояний, меняют режимы функционирования процессора.
6. Команды передачи управления управляют последовательностью выполнения команд в программе. К ним относятся команды условной и безусловной передачи управления, а также команды вызова процедур и возврата из них.
7. Команды прерывания отвлекают процессор на обработку аппаратных или программных прерываний.
В таблице приведены мнемокоды команды. Для большинства команд, описаны функции команды с кратким алгоритмом выполнения. Он в сокращенной форме описывает ход исполнения команды, а также место нахождение приемника и иточника. Если команда изменяет регистр флагов, то указано состояние регистра флагов после исполнения команды.
Для понимания функционирования алгоритма, приведен пример использования команды. Например для команд пересылки MOV пр, ист, он дан в следующем виде: Пр: = ист. R / M, R / М / IM. Эту запись необходимо понимать так: приемнику присваивается содержимое источника. Приемником может быть регистр или ячейка памяти, а источником – регистр, ячейка памяти или непосредственное значение. Причем пересылки можно выполнять только из регистра в ячейку памяти или из ячейки памяти в регистр. Необходимо помнить, что пересылки типа «память – память» запрещены, также как и пересылки непосредственных данных в сегментные регистры. Данные сначала помещаются из памяти в один из регистров процессора, а затем из регистра пересылаются в ячейку памяти. В таблице 3.5 поясняются аббревиатуры и сокращения, используемые в описании алгоритма команд.
Таблица 3.5 − Пояснения используемых аббревиатур и сокращений
Сокращения, аббревиатура
| Значение
| Пр.
| Приемник операнда
| Ист.
| Источник операнда
| Label
| Метка команды
| R/M
| Операндом является содержимое регистра /или данных из памяти
| Im
| Операндом является 8, 16 или 32- битовое непосредственное значение или символьное имя
| Пр.: = ист.
| Присвоить значение, т.е. переслать содержимое источника в приемник
| SS: [SP]
| Адрес операнда определяется суммой содержимого регистров SS и SP
| AL 7
| 7- й разряд регистра AL
| *
| Указанный разряд регистра флагов принимает значение 0 или 1.
| --
| Команда не влияет на флаг.
| 0 или 1
| Новое состояние флага.
| ?
| Состояние флага не определено.
| Таблица 3.6 Система команд процессоров Intel 8086 – Intel 80386
Команды пересылки данных
| Пересылка данных без преобразования
| Мнемокод
| Описание команд
| Флаги, пояснения, примеры.
| OF
| DF
| IF
| TF
| SF
| ZF
| AF
| PF
| CF
| MOVпр, ист
| Пересылка операнда
Пр: = ист.
R / M, R / М / IM
| --
| --
| --
| --
| --
| --
| --
| --
| --
| Mov ax, bx; Копирует содержимое
ВХ в АХ.
Mov ax, tab; Копирует содержимое
ячейки Tab в АХ.
Mov вl, 78; Переслать const в регистр
| MOVSB
MOVSW
MOVSD
| Пересылка цепочки
байт, слов, двойных слов с автомодифи-кацией индексов.
Пр: = ист. ES: [(E)DI]: =DS: (E)SI]
| --
| --
| --
| --
| --
| --
| --
| --
| --
| Cld; Направление вперед.
Lds si, tab1; Указали источник.
Les di, tab2; Указали приемник.
Mov cx, 5; Счетчик повторения
Rep Movsw; Копирует 5 слов
| PUSHист.
| Запись операнда в стек SS: [SP]: = ист.
Ист – M/ R/ IM
| --
| --
| --
| --
| --
| --
| --
| --
| --
| Push ax; Заносит содержимое АХ
в стек по адресу [ss: sp]
| PUSHA
| Запись в стек значений регистров
AX, CX, DX, BX,
SP, BP, SI, DI.
| --
| --
| --
| --
| --
| --
| --
| --
| --
| Pusha; Сохраняет в стеке по адресу SS: [SP] содержимое всех
16- разрядных РОН.
| PUSHAD
| Запись в стек значений регистров
EAX, ECX, EDX, EBX ESP, EBP, ESI, EDI.
| --
| --
| --
| --
| --
| --
| --
| --
| --
| Pushad; Сохраняет в стеке по
адресу SS: [SP] содержимое
32- разрядных регистров
общего назначения.
| POPпр.
| Восстановить операнд из стека
Пр: = SS: [SP];
M/ R: = SS: [SP]
| --
| --
| --
| --
| --
| --
| --
| --
| --
| Рop ax; Извлекает из вершины
стэка слово и записывает
его в регистр АХ
Pop mem; или ячейку памяти.
| | | | | | | | | | | | | | | | | | | |
Продолжение таблицы 3.6
Мнемокод
| Описание команд
| Флаги, пояснения, примеры.
| | OF
| DF
| IF
| TF
| SF
| ZF
| AF
| PF
| CF
| | POPA
| Восстановить из стека регистры
DI, SI, BP, SP,
BX, DX, CX, AX.
| --
| --
| --
| --
| --
| --
| --
| --
| --
| | Popa; Извлекает 8 слов из стека,
помещает их в указанные
регистры и увеличивает SP на 16.
| | POPAD
| Загрузить из стека регистры EDI, ESI, EBP, ESP, EBX, EDX, ECX, EAX.
| --
| --
| --
| --
| --
| --
| --
| --
| --
| Popad; Копирует 8 двойных слов из
стека, в регистры и
увеличивает регистр SP на 32.
| XCHG
пр, ист
| Обмен
Пр< = > ист.
Приемник - регистр, источник- регистр или ячейка памяти.
| --
| --
| --
| --
| --
| --
| --
| --
| --
| Xchg ax, bx; Взаимный обмен
между регистрами Xchg ax, memили памятью и
регистром.
| XLAT
| Преобразование кодов.
AL: = DS: [BX + AL]
| --
| --
| --
| --
| --
| --
| --
| --
| --
| Применяется для трансляции таблиц. Пример использования команды XLATприведен в разделе 5.4.
| Пересылка данных с преобразованием
| | MOVZX
пр, ист.
| Пересылка операнда с расширением нулями до размера приемника.
Пр: = [0] + ист.
R, R/M.
| --
| --
| --
| --
| --
| --
| --
| --
| --
| | Movzx ax, 62H; Перемещает 62Н в
AL и 00 в AH.
| | MOVSX
пр, ист.
| Пересылка операнда со знаковым расширением до размера приемника
Пр: = [3H] + ист.
| --
| --
| --
| --
| --
| --
| --
| --
| --
| | Movsx ax, 92h; Перемещает 92Н
в AL и FF в AH.
| | Команды ввода-вывода
| INпр, ист
| Ввод операнда из порта в регистр.
Пр.- рег. (al, ax, eax)
Ист. - im (порт №), или содержимое рег. DX.
| --
| --
| --
| --
| --
| --
| --
| --
| --
| | Mov dx, 20; Номер порта для
команды IN помещаем
в DX.
IN eax, dx; Вводит двойное слово
в EAX. Из порта 20.
| | | | | | | | | | | | | | | | | | | | | | | | Продолжение таблицы 3.6
Мнемокод
| Описание команд
| Флаги, пояснения, примеры
| OF
| DF
| IF
| TF
| SF
| ZF
| AF
| PF
| CF
| OUTпр, ист
| Вывод операнда из регистра в порт
Пр.- ib (порт или содержимое DX)
Ист.- рег. (al, ax, eax).
| --
| --
| --
| --
| --
| --
| --
| --
| --
| Mov al, 20h; Загружает код пробела в
AL.
Out 30, al; Выводит его в порт №30.
| Команды пересылки адреса
| LEAпр, ист.
| Загрузка исполнительного адреса в регистр
Пр. – регистр
Ист. - яч. памяти/рег.
| --
| --
| --
| --
| --
| --
| --
| --
| --
| Lea bx, mem1; Загрузка адреса
ячейки памяти mem1
в регистр BX..
| LDSпр, ист.
| Загрузка полного адреса в приемник.
Пр.- это DS и один из РОН.
Ист.- адрес ячейки памяти.
| --
| --
| --
| --
| --
| --
| --
| --
| --
| Lds di, tab1; Загрузка адреса
сегмента данных в
регистр DS, а
смещение tab1 в DI.
| LESпр, ист.
| Загрузка полного адреса в приемник.
Пр. – ES и один из РОН.
Ист.- адрес ячейки памяти.
| --
| --
| --
| --
| --
| --
| --
| --
| --
| Les si, tab2; Загрузка адреса
сегмента данных в ES,
а смещение tab2
в регистр SI.
| LFSпр, ист.
| Загрузка полного адреса в приемник
Пр. - FS. и один из РОН.
Ист. - адрес ячейки памяти.
| --
| --
| --
| --
| --
| --
| --
| --
| --
| Lfs ax, tab3; Загрузка адреса
сегмента данных в FS,
а смещение tab3
в регистр в AX.
| LGSпр, ист.
| Загрузка полного адреса в приемник.
Пр. - GS. и один из РОН.
Ист.- адрес ячейки памяти.
| --
| --
| --
| --
| --
| --
| --
| --
| --
| Lgs cx, tab4; Загрузка адреса
сегмента данных в GS,
а смещение tab3 в
регистр в CX.
| | | | | | | | | | | | | | | | | | | |
Продолжение таблицы 3.6
Арифметические команды
| Команды сложения
| Мнемокод
| Описание команд
| Флаги, пояснения, примеры
| OF
| DF
| IF
| TF
| SF
| ZF
| AF
| PF
| CF
| ADDпр, ист.
| Сложение операндов
Пр: = пр + ист
r/m/i, r/m/im.
| *
| --
| --
| --
| *
| *
| *
| *
| *
| Add ax, memw; Добавить содержи-
мое ячейки памяти к
регистру AX.
Add memw, ax; или наоборот.
Add al, 10; Добавить 10 к AL.
Add ax, bx; Сложить два регистра.
| ADC пр, ист.
| Сложение операндов и флага переноса СF.
Пр: = пр + ист + CF
r/m/i, r/m/im.
| *
| --
| --
| --
| *
| *
| *
| *
| *
| Mov ax, 956; Загружает 3ВСН в АХ.
Mov bx, 373; Загружает 175Н в ВХ.
Add al, bl; Суммирует 0ВСН и 75Н.
Результат: 31Н, CF=1.
Adc ah, bh; Суммирует 3, 1 и CF,
результат в АХ = 531Н (1329).
| AAA
| ASCII- коррекция AL после сложения
Если AL > 9, то инкремент AL на 6. AL: =0000XXXX+6
Установить AL: = 0000XXXX
AH: = AH + 1.
| ?
| --
| --
| --
| ?
| ?
| *
| ?
| *
| | Mov al, 38; Загружаем слагаемые представленные в ASCII формате.
Mov bl, 34; AL и BL.
Add al, bl; К AL прибавили 4.
Aaa; AX=0102H, CF=AF=1
OR ax, 3030H; Преобразуем
результат в ASCII код.
| | DAA
| Десятичная коррекция AL после сложения упакован-
ных десятичных (ВСД) чисел.
| ?
| --
| --
| --
| *
| *
| *
| *
| *
| | Mov ax, 18H; 18ВСД в AL.
Add al, 6; AL + 6BCD =1ЕН.
Daa; в АХ 24ВСД, CF=0, AF=1.
| | INCпр
| Инкремент приёмника.
Пр.: = пр. + 1
Пр. – рег./память.
| *
| --
| --
| --
| *
| *
| *
| *
| --
| | Mov ax, 956; Загружает 956 (3ВСН)
в АХ.
Inc ax; Теперь в АХ 957 (3ВДН), то
есть содержимое регистра
увеличивается на единицу.
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
Продолжение таблицы 3.6
Команды вычитания
| Мнемокод
| Описание команд
| Флаги, пояснения, примеры
| OF
| DF
| IF
| TF
| SF
| ZF
| AF
| PF
| CF
| SUBпр, ист.
| Целочисленное вычитание.
Пр.: = пр. – ист.
| *
| --
| --
| --
| *
| *
| *
| *
| *
| Mov ax, 1329; Загружает 531H в AX,
Mov bx, 373; Загружает 175H в BX,
Sub ax, bx; AX = 956 (3BCH).
| SBBпр, ист.
| Вычесть с заемом.
Вычитает из приемника источник и содержимое флага
CF.
Пр.: = пр. – ист. – CF
| *
| --
| --
| --
| *
| *
| *
| *
| *
| Mov ax, 1329; Загрузить 531H в AX.
Mov bx, 373; Загрузить 175H в BX.
Sub al, bl; Вычесть 75H из 31H,
Sbb ah, bh; Вычесть 1 и CF из 5,
давая 3. Полная разность
в AX = 956 (3BCH)
| DECпр.
| Декремент операнда.
Уменьшение операнда на 1.
Пр.: = пр. – 1
| *
| --
| --
| --
| *
| *
| *
| *
| --
| Mov ax, 956; Загружает 3ВСН в АХ.
Dec ax; Уменьшает АХ на 1,
АХ = 955 (3ВВН).
| NEGпр.
| Изменение знака. Инвертирование и
инкремент операнда.
Пр.: = пр. + 1 или
Пр.: = 0 – пр.
| *
| --
| --
| --
| *
| *
| --
| *
| *
| Mov ax, 579BH; В АХ 579ВН.
Neg ax; В АХ 0А865Н (то же что и
вычитание операнда из
нуля.
| AAS
| ASCII- коррекция AL после вычитания
Если AL > 9
То AL: =0000XXXX-6
Установить AL: =0000XXXX AH: =AH - 1
| *
| --
| --
| --
| ?
| ?
| *
| ?
| *
| Mov al, 34Н; Загружаем вычитаемые представленные в ASCII формате
Mov bl, 38Н; в AL и BL.
Sub al, bl; Из AL вычли 8.
Aas; AX=FF06H, CF=AF=1.
OR ax, 0030H; Преобразуем
результат в ASCII код.
| CMPпр.,
ист.
| Сравнение.
Вычитает второй операнд из первого, устанавливая признаки в регистре флагов.
Пр. – ист.
| *
| --
| --
| --
| *
| *
| *
| *
| *
| Mov ax, 956; Загружает 3ВСН в АХ
Mov bx, 373; Загружает 175Н в ВХ
Cmp ax, bx; Вычитает из ax, bx и
устанавливает флаги.
В АХ осталось 956.
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Продолжение таблицы 3.6
Команды умножения
| Мнемокод
| Описание команд
| Флаги, пояснения, примеры
| OF
| DF
| IF
| TF
| SF
| ZF
| AF
| PF
| CF
| MULист.
| Беззнаковое умножение.
AX: = AL × ист.
| *
| --
| --
| --
| ?
| ?
| ?
| ?
| *
| Mov al, 80H; В АL загружается 128.
Mov bl, 47H; В ВL загружается 64.
Mul bl; В AX результат -2000 (7D0).
| IMULист.
IMUL пр, ист.
| Знаковое умножение
AX: = AL × ист.
DX: AX = AX × ист
EDX: EAX: =
EAX × ист
| *
| --
| --
| --
| ?
| ?
| ?
| ?
| *
| Mov al, 80H; В АL загружается -128.
Mov bl, 47H; В ВL загружается 64.
Imul bl; В AX результат E000Н.
| AAM
| Преобразование данных из ASCII кода, в двоичный код после умножения.
Делит AL на 10. Частное в AH. Остаток в AL.
| ?
| --
| --
| --
| *
| *
| ?
| *
| ?
| Mov al, 35H; Сомножители в ASCII
Mov cl, 39H; формате.
And al, 0FH; Преобразуем в
And cl, 0FH; двоичный код.
Mul cl; Умножим AL на CL.
AAM; Преобразуем результат.
OR ax, 3030H; Представим его в
ASCII формате.
| Команды деления
| DIVист.
| Беззнаковое деление.
Пр: = DX: AX / ист.
Ист.-DB -байт
Частное AL: = AX/ист
Остаток AH: = AX/ист
Ист.- DW- слово
AX: DX: = DX: AX/ ист
Ист. – DD- дв. слово
EDX, EAX: =EDX,
EAX / ист.
| ?
| --
| --
| --
| ?
| ?
| ?
| ?
| ?
| Mov al, byte1; Переслать в AL байт.
Sub ah, ah; Расширить делимое.
Div byte2; Деление байта на байт.
Mov ax, word1; В АН слово.
Div byte1; Деление слова на на байт.
Mov dx, word2; В DX слово2.
Mov ax, word3; В AX слово3.
Div word1; Дв.слово на слово
Mov edx, dword4; В ЕDX дв.слово.
Mov eax, dword5; В ЕAX дв.слово.
Div dword6; Деление учетверенного
слова на двойное слово
| | | | | | | | | | | | | | | | | | | | Продолжение таблицы 3.6
Мнемокод
| Описание команд
| Флаги, пояснения, примеры
| OF
| DF
| IF
| TF
| SF
| ZF
| AF
| PF
| CF
| IDIVист.
| Знаковое деление.
Выполняет деление знаковых чисел.
Пр: = пр / ист.
| ?
| --
| --
| --
| ?
| ?
| ?
| ?
| ?
| Mov ax, 956; Загрузим 3ВСН в АХ.
Mov bx, -300; В BX 0FED4H.
Idiv bx; AL = -3 (0FFFDH) в AH =56.
|
AAD
| Преобразование данных в ASCII-коде в двоичный код перед делением.
AL: = (AL+ (10× AH))
| ?
| --
| --
| --
| *
| *
| ?
| *
| ?
| Mov ax, 1405H; Делимое в АХ.
Mov bl, 3; Делитель загрузим в ВХ.
And 0F0F; Распакуем делимое.
Aad; Коррекция делимого.(в АХ 45)
Idiv BL; Результат в АХ = 15.
| Команды расширения знака
| CBW
| Преобразовать байт в слово.
AH 8- 15: = AL 7
| --
| --
| --
| --
| --
| --
| --
| --
| --
| Mov al, 0FCH; Загрузим – 4 в AL.
Cbw; В АХ 0FFFCH (- 4).
| CWD
| Преобразовать слово в двойное слово
DX 0- 15 : = AX 15
| --
| --
| --
| --
| --
| --
| --
| --
| --
| Mov ax, 0006H; Загрузим 6 в АХ.
Cwd; DX: AX: = 0000: 0006H.
| CWDE
| Преобразовать слово в расширенное знаковое слово
EAX 16- 31 : = AX 15
| --
| --
| --
| --
| --
| --
| --
| --
| --
| Mov ax, 0FFFCH; Загрузим -4 в АХ.
CWDE; EAХ: = 0FFFFFFFCH, (-4).
| CDQ
| Преобразовать двойное слово в учетверенное слово
EDX 0 –31 : = EAX 31
| --
| --
| --
| --
| --
| --
| --
| --
| --
| Mov eax, 0FFFFFFFCH; -4 в EАХ.
CDQ; EDХ: EAX = 0FFFFFFFFH:
0FFFFFFFCH (- 4)
| Команды манипулирования битами
| Логические команды
| AND
пр., ист
| Конъюкция ^ (логическое И)
Пр: = пр. ист.
R: = R R,
M: = R M,
R: = R M,
R/M: = R/M im
|
| --
| --
| --
| *
| *
| ?
| *
|
| Mov ax, 5963H; Загружает 16– ричное
число в АХ.
Mov bx, 6CA5H; Загружает 16– ричное
число в АХ.
And ax, bx; Теперь АХ содержит 4821Н.
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Продолжение таблицы 3.6
Мнемокод
| Описание команд
| Флаги, пояснения, примеры
| OF
| DF
| IF
| TF
| SF
| ZF
| AF
| PF
| CF
| OR
пр, ист.
| Дизъюнкция (логическое ИЛИ)
Пр: = пр. ист.
R: = R R,
M: = R M,
R= R M,
R: = R im,
M: = M im.
|
| --
| --
| -
| *
| *
| ?
| *
|
| Mov ax, 5963H; Загружает 16– ричное
число в АХ.
Mov bx, 6CA5H; Загружает 16– ричное
число в АХ.
Or ax, bx; Теперь АХ содержит 7DE7H.
| XOR
пр, ист
| Неравнозначность
(исключающее ИЛИ)
Пр: = пр. ^ ист.
R: = R ^ R,
M: = R ^ M,
R: = R ^ M,
R: = R ^ im,
M: = M ^ im
|
| --
| --
| --
| *
| *
| ?
| *
|
| Mov ax, 5963H; Загружает 16– ричное
число в АХ.
Xor ax, 6CA5H; AX = 35C6H;
SF= 0, PF= 1.
Команда XOR применяется для реализации функций проверки и сравнения бит.
| NOTпр.
| Инвертирование
(логическое НЕ)
пр: = пр;
,
| --
| --
| --
| --
| --
| --
| --
| --
| --
| Mov ax, 579BH; Загрузим данные в
АХ.
Not ax; Получим в АХ 0А864Н
| TEST
пр., ист.
| Сравнить логически и установить флаги SF, ZF, RF.
Пр: = пр. ^ ист.
R/M R,
R/M im
|
| --
| --
| --
| *
| *
| ?
| *
| *
| Mov ax, 9563H; Загрузим данные
в АХ.
Test ax, 0C6A5H; SF = 1, ZF = 0,
PF = 1
Jnz M 1; Переход на метку М.
| Команды сдвига
| SAL
Пр., счетчик
(n)
| Сдвиг арифметичес-кий влево
n
CF, пр: = пр., CL/im
n- количество сдвигов, заносится в CL, если 2< n < 31, и im, если равно 1.
| *
| --
| --
| --
| *
| *
| ?
| *
| *
| Mov ax, 1110100101010111B; В АХ
0Е957Н.
Mov cl, 4; В CL количество сдвигов.
Sal ax, cl; В АХ 1001010101110000В,
- 9570Н, CF =0
Sal ax,; В АХ 0010101011100000В,
CF=1
| | | | | | | | | | | | | | | | | | | | |
Продолжение таблицы 3.6
Мнемокод
| Описание команд
| Флаги, пояснения, примеры
| OF
| DF
| IF
| TF
| SF
| ZF
| AF
| PF
| CF
| SAR
пр., счетчик
(n)
| Сдвиг арифметичес-кий вправо
n
CF, пр: = пр., CL/im
n- количество сдвигов, заносится в CL, если 2< n < 31, и im, если равно 1.
| *
| --
| --
| --
| *
| *
| ?
| *
| *
| Mov ax, 1110100101010111B; В АХ
0Е957Н.
Mov cl, 4; В CL количество сдвигов.
Sar ax, cl; В АХ 1111111010010101В,
-0FE95Н. CF = 0
Sar ax, 1; В АХ 1111111101001010В
CF = 1
| SHL
пр.,
Счетчик
(n)
| Сдвиг логический влево
n
CF, пр: = пр, CL/im
n- количество сдвигов, заносится в CL, если 2< n < 31, и im, если равно 1.
| *
| --
| --
| --
| *
| *
| ?
| *
| *
| Mov ax, 1110100101010111B; В АХ
0Е957Н.
Mov cl, 4; В CL количество сдвигов.
Shl ax, cl; В АХ 1001010101110000В,
- 9570Н.
Shl ax, 1; В АХ 0010101011100000В.
|
SHR
пр., счетчик
(n)
| Сдвиг логический вправо
n
CF, пр: = пр, CL/im
n- количество сдвигов, заносится в CL, если 2< n < 31, и im, если равно 1.
| *
| --
| --
| --
| *
| *
| ?
| *
| *
| Mov ax, 1110100101010111B; В АХ
0Е957Н.
Mov cl, 4; В CL количество сдвигов.
Shr ax, cl; В АХ 0000111010010101В,
0E95Н.
Shr ax, 1; В АХ 0000011101001010В
| RCL
пр., счетчик
(n)
| Сдвиг циклический влево с флагом переноса.
Биты, выдвигаемые с одного конца
операнда, вводятся через CF с другого конца.
n
CF, пр.= пр. CF.
n макс. = 31
| *
| --
| --
| --
| --
| --
| --
| --
| *
| Mov ax, 45EAH; Данные в АХ.
Mov CL, 4; Кол-во бит сдвига в CL
STC; Занести в CF 1.
RCL ax, cl; В АХ 5ЕААН. CF = 0
Mov Tab, 5F64H; Данные в ячейку
Tab.
RCL Tab, cl; В яч. Tab F642H. CF=1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Продолжение таблицы 3.6
Мнемокод
| Описание команд
| Флаги, пояснения, примеры
| OF
| DF
| IF
| TF
| SF
| ZF
| AF
| PF
| CF
|
RCR
пр., счетчик
(n)
| Сдвиг циклический вправо с флагом
переноса.
Биты, выдвигаемые с одного конца операнда, циклически вводятся в него через CF
с другого конца.
n максимальное = 31
| *
| --
| --
| --
| --
| --
| --
| --
| *
| Mov ax, 45EAH; Данные в АХ.
Mov CL, 4; Количество бит сдвига (n)
в CL
STC; Занести в CF 1.
RCR ax, cl; В АХ 545ЕН. CF = 1
Mov Tab, 4F64H; Данные в ячейку Tab.
RCR Tab, cl; В яч. Tab F64AH. CF=0
| ROL
пр., счетчик
(n)
| Сдвиг циклический влево.
Биты, выдвигаемые с одного конца операнда, вводятся в него с другого конца.
n максимальное = 31
| *
| --
| --
| --
| --
| --
| --
| --
| *
| Mov ax, 45EAH; Данные в АХ.
Mov CL, 4; Кол-во бит сдвига в CL
ROL ax, cl; В АХ 5ЕA4Н.
Mov Tab, 4F64H; Данные в ячейку Tab.
ROL Tab, cl; В ячейке Tab F644H.
| ROR
пр, счетчик
(n)
| Сдвиг циклический вправо.
Биты, выдвигаемые с одного конца операнда, в циклически водятся в него с другого конца.
n максимальное =31
| *
| --
| --
| --
| --
| --
| --
| --
| *
| Mov ax, 45EAH; Данные в АХ.
Mov CL, 4; Кол-во бит сдвига в CL
ROR ax, cl; В АХ A45ЕН.
Mov Tab, 4F64H; Данные в ячейку Tab.
ROR Tab, cl; В ячейке Tab 44F6H.
| Операции с битами и строками битов
| BTбаза,
смещение
| Проверка бита. Указанный в базе и смещении бит из источника пересылается в CF
CF: = бит источника.
| --
| --
| --
| --
| --
| --
| --
| --
| *
| Mov ax, 6652h; Данные в АХ.
BT ax, 1; Первый бит данных (1) в CF.
Jb met1; Передача управления в met1.
BT tab, 31; 31-й бит данных tab в CF.
Jae met2; Если CF=0, переход в met2.
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Продолжение таблицы 3.6
Мнемокод
| Описание команд
| Флаги, пояснения, примеры
| OF
| DF
| IF
| TF
| SF
| ZF
| AF
| PF
| CF
| BTSбаза,
смещение
| Проверка и установка бита.
Бит по адресу: база +смещение: = 1. BTS R/M, R/ im
| --
| --
| --
| --
| --
| --
| --
| --
| *
| Выбирает бит и устанавливает в 1.
Mov ax, 6652h; Данные в АХ.
BTS ax, 2; Устанавливает 2-й бит в 1.
В АХ 6656Н, в CF занесется 0.
| BTRбаза,
смещение
| Проверка и сброс
бита.
Бит по адресу: база +смещение: = 0.BTR R/M, R/ im
| --
| --
| --
| --
| --
| --
| --
| --
| *
| Выбирает бит и устанавливает в 0.
Mov ax, 6652h; Данные в АХ.
BTR ax, 1; Устанавливает 1-й бит в 0.
В АХ 6650Н, в CF занесется 1.
| BTC база,
cмещение
| Проверка и инверсия бита.
Инвертировать бит по адресу: база +смещение.
| --
| --
| --
| --
| --
| --
| --
| --
| *
| Mov ax, 6652h; Данные в АХ.
BTC ax, 1; Инверсия первого бита.
Теперь в АХ 6650Н, в CF -1.
| BSFпр., ист.
| Прямой поиск бита.
Пр: = N первого
единичного бита источника.
| --
| --
| --
| --
| --
| *
| --
| --
| --
| Mov ax, 6650h; Данные в АХ.
BSF вх, ах; В ВХ заносится 4.
Mov tab, 6400h; Данные в ячейку tab.
BSF вх, tаb; В ВХ заносится 10.
| BSR
пр., ист.
| Обратный поиск бита.
Пр: = N первого
единичного бита источника при сканировании источника с младших разрядов
| Mov ax, 6650h; Данные в АХ.
BSR вх, ах; В ВХ заносится 11.
Mov tab, 6400h; Данные в ячейку tab.
BSR вх, tаb; В ВХ заносится 1.
| Команды обработки строк
| Команды сравнения строк
| REP
REPE
REPNE
REPZ
REPNZ
| Повторять
Повторять, пока равно.
Повторять, пока не равно.
Повторять, пока ноль.
Повторять, пока не ноль.
| Префиксы повторений для строковых команд. Количество повторений в регистре СХ или (ЕСХ).
При каждом выполнении команды СХ или (ЕСХ)
уменьшаются на 1.
| | | | | | | | | | | | | | | | | | | | | | | Продолжение таблицы 3.6
Мнемокод
| Описание команд
| Флаги, пояснения, примеры
| OF
| DF
| IF
| TF
| SF
| ZF
| AF
| PF
| CF
| *
| --
| --
| --
| *
| *
| *
| *
| *
| CMPS
пр., ист.
| Сравнить строки.
Вычитает из
источника приемник.
DS: [(E)SI]- ES: [(E)DI]
IF DF= 1, (E)DI: =
(E)DI-1, (2), (4),
(E)SI: = (E)SI- 1, (2), (4)
| CLD; Установить флаг DF в 0.
Mov cx, 100; Установить счетчик
цикла на 100.
Repe Cmps tab1, tab2; Сравнивать
100 элементов до нахождения
несовпадающих.
| CMPSВ
| Сравнить строки байтов.
DS: [(E)SI]- ES: [(E)DI]
IF DF= 0, то
(E)DI: = (E)DI+1
(E)SI: = (E)SI +1
| *
| --
| --
| --
| *
| *
| *
| *
| *
| STD; Установить флаг DF в 1.
Mov cx, 100; Установить счетчик
цикла на 100.
Repne Cmpsb tab1, tab2; Сравнивать
100 байтов до нахождения
совпадающих.
| CMPSW
| Сравнить строки слов.
[DS[E)SI]-[ES[E)DI]
IF DF: = 0, то
(E)DI: = (E)DI+ 2
(E)SI: = (E)SI+ 2
IF DF: = 1, то
(E)DI: = (E)DI- 2
(E)SI: = (E)SI- 2
| *
| --
| --
| --
| *
| *
| *
| *
| *
| STD; Установить флаг DF в 1.
Mov cx, 100; Установить счетчик
цикла на 100.
Repne Cmpsw tab1, tab2; Сравнивать
100 слов до нахождения
совпадающих.
Je m1; При совпадении, передать
управление в m1.
| CMPSD
| Сравнить строки двойных слов.
DS: [(E)SI]- ES: [(E)DI]
IF DF: = 0, то
(E)DI: = (E)DI+ 4
(E)SI: = (E)SI+ 4
IF DF: = 1, то
(E)DI: = (E)DI- 4
(E)SI: = (E)SI- 4
| *
| --
| --
| --
| *
| *
| *
| *
| *
| CLD; Установить флаг DF в 0.
Mov cx, 100; Установить счетчик
цикла на 100.
Repne Cmpsd tab1, tab2; Сравнивать
100 двойных слов, до
нахождения совпадающих.
Je m1; Передать управление в
m1, при совпадении.
| | | | | | | | | | | | | | | | | | | | Продолжение таблицы 3.6
Команды пересылки строк
| Мнемокод
| Описание команд
| Флаги, пояснения, примеры
| | | OF
| DF
| IF
| TF
| SF
| ZF
| AF
| PF
| CF
| MOVS
Пр., ист.
| Пересылать строковые данные
Пр: = ист
ES: [DI]: = DS: [SI]
СХ: = СХ-1
| --
| --
| --
| --
| --
| --
| --
| --
| --
| CLD; Установить DF = 0.
Lea SI, tabist; Адрес источника в SI,
Lea DI, ES: tabpr; а приемника в DI.
Mov CX, 100; Кол. элементов в СХ
Rep Movs tabpr, tabist; Переслать 100
элементов.
| MOVSB
| Переслать строку байт.
ES: [DI]: = DS: [SI]
IF DF: = 0, то
DI: = DI+ 1
SI: = SI+ 1
IF DF: = 1, то
DI: = DI- 1
SI: = SI- 1
| --
| --
| --
| --
| --
| --
| --
| --
| --
| CLD; Установить DF = 0.
Lea SI, tabist; Адрес источника в SI,
Lea DI, ES: tabpr; а приемника в DI.
Mov CX, 100; Кол. элементов в СХ
Rep Movs tabpr, tabist; Переслать 100
байт.
| MOVSW
| Пересылать строку слов.
ES: [DI]: = DS: [SI]
IF DF: = 0, то
DI: = DI+ 2
SI: = SI+ 2
IF DF: = 1, то
DI: = DI- 2
SI: = SI- 2
| --
| --
| --
| --
| --
| --
| --
| --
| --
| CLD; Установить DF = 0.
Lea SI, tabist; Адрес источника в SI,
Lea DI, ES: tabpr; а приемника в DI.
Mov CX, 100; Кол. элементов в СХ.
Rep Movs tabpr, tabist; Переслать 100
слов.
| MOVSD
| Пересылать строку двойных слов.
ES: [DI]: =DS: [SI]
IF DF: = 0, то
[(E)SI]: = [(E)SI+ 4]
[(E)DI]: =[(E)DI+ 4]
IF DF: = 1, то
[(E)DI]: = [(E)DI- 4]
[(E)SI]: = [(E)SI- 4]
| --
| --
| --
| --
| --
| --
| --
| --
| --
| CLD; Установить DF = 0.
Lea SI, tabist; Адрес источника в SI,
Lea DI, ES: tabpr; а приемника в DI.
Mov CX, 100; Кол. Элементов в СХ.
Rep Movs tabpr, tabist; Переслать 100
двойных слов.
| | | | | | | | | | | | | | | | | | | | |
Продолжение таблицы 3.6
Операции со строками символов
| | Мнемокод
| Описание команд
| Флаги, пояснения, примеры
| OF
| DF
| IF
| TF
| SF
| ZF
| AF
| PF
| CF
| LODSист.
| Чтение из строки.
AL, (AX), (EAX): =
DS: [ (E)SI]
IF DF = 0, то
[(E)SI]: = [(E)SI + 1, (2), (4)]
IF DF =1, то
[(E)SI]: = [(E)SI - 1, (2), (4)]
| --
| *
| --
| --
| --
| --
| --
| --
| --
| Lea SI, tab1; Смещение tab1 в SI, а
Lea DI, ES: tab2; смещение tab2 в DI.
Mov CX, 200; Счетчик элементов.
Repe Cmps tab1, tab2; Искать
совпадающие.
Je met1; Совпали? Переход на met1.
Met1: Dec SI; Подправим регистр SI.
Lods tab1; Элемент в AL, (AX), (EAX).
| LODSB
| Чтение байта из строки.
AL: = DS: [(E)SI ]
IF DF= 0, то
[(E)SI]: = [(E)SI+1]
IF DF= 1. то
[(E)SI]: = [(E)SI-1]
| --
| *
| --
| --
| --
| --
| --
| --
| --
| Lea SI, tab1; Смещение tab1 в SI, а
Lea DI, ES: tab2; смещение tab2 в DI.
Mov CX, 200; Счетчик элементов.
Repe Cmpsb; Искать совпадающие.
Je met1; Совпали? Переход на met1.
Met1: Dec SI; Подправим регистр SI.
Lodsb; Элемент в AL.
| LODSW
| Чтение слова из строки.
AX: = [ DS: (E)SI ]
IF DF= 0. то
[(E)SI]: = [(E)SI+2]
IF DF= 1. то
[(E)SI]: = [(E)SI-2]
| --
| *
| --
| --
| --
| --
| --
| --
| --
| Lea SI, tab1; Смещение tab1 в SI,
Lea DI, ES: tab2; а смещение tab2 в DI.
Mov CX, 200; В СХ элементов.
Repe Cmpsw; Искать совпадающие.
Je met1; Совпали? Переход на met1.
met1: Mov SI, SI-2; Коррекция SI.
Lodsw; Элемент в AX.
|
LODSD
| Чтение двойного слова из строки.
EAX: = [ DS: (E)SI ]
IF DF= 0, то
[(E)SI]: = [(E)SI+4]
IF DF= 1, то
[(E)SI]: = [(E)SI-4]
| --
| *
| --
| --
| --
| --
| --
| --
| --
| Lea SI, tab1; Смещение tab1 в SI, а
Lea DI, ES: tab2; смещение tab2 в DI.
Mov CX, 200; Счетчик элементов.
Repe Cmpsd; Искать совпадающие.
Je met1; Совпали? Переход на met1.
met1: Mov SI, SI-4; Подправим SI.
Lodsd; Элемент в EAX.
| | | | | | | | | | | | |
Продолжение таблицы 3.6
Мнемокод
| Описание команд
| Флаги, пояснения, примеры
| OF
| DF
| IF
| TF
| SF
| ZF
| AF
| PF
| CF
| STOSпр
| Запись в строку.
ES: [(E)DI]: = AL; (AX); (EAX)
IF DF = 0, то
(E)DI: = (E)DI+1(2)(4)
IF DF =1, то
(E)DI: =(E)DI-1(2)(4)
| --
| *
| --
| --
| --
| --
| --
| --
| --
| Lea DI, ES: tab; Адрес строки в DI.
Mov AX, 0101Н; Число в АХ.
Mov CX, 10; Установить счетчик.
REP STOS tab; Записать в tab 10 слов.
Mov CX, 10; Установить счетчик.
Mov AX, 1256; Число в АХ.
REP STOS tab; Записать в tab 10 слов.
| STOSB
| Запись байта в строку
ЕS: [(E)DI]: = AL
IF DF= 0. то
[(E)DI]: = [(E)DI+ 1]
IF DF= 1
[(E)DI]: = [(E)DI- 1]
| --
| *
| --
| --
| --
| --
| --
| --
| --
| Lea DI, ES: tab; Адрес строки в DI.
Mov AL, 01Н; Число в АL.
Mov CX, 10; Установить счетчик.
REP STOSB tab; Записать в tab 10
байт.
| STOSW
| Запись слова в строку.
ES: [(E)DI]: = AX
IF DF= 0, то
[(E)DI]: = [(E)SI+ 2]
IF DF= 1, то
[(E)DI]: = [(E)DI- 2]
| --
| *
| --
| --
| --
| --
| --
| --
| --
| Lea DI, ES: tab; Адрес строки в DI.
Mov AX, 0125Н; Число в АX.
Mov CX, 10; Установить счетчик.
REP STOSW; Записать в tab 10 слов.
| STOSD
| Запись двойного слова в строку.
ES: (E)DI: = EAX
IF DF= 0, то
[(E)DI]: = [(E)DI+ 4]
IF DF= 1, то
[(E)DI]: = [(E)DI- 4]
| --
| *
| --
| --
| --
| --
| --
| --
| --
| Lea DI, ES: tab; Адрес строки в DI.
Mov EAX, 012567Н; Число в EАX.
Mov CX, 10; Установить счетчик.
REP STOSD; Записать в таблицу tab
10 двойных слов.
| SCASпр.
| Сканировать строки. Сравнивает элементы массива.
AL(AX)(EAX) -ES: (E)DI, IF DF = 0
(E)DI: = (E)DI+1(2)(4)
IF DF =1
(E)DI: =(E)DI-1(2)(4)
| *
| *
| --
| *
| *
| *
| *
| *
| *
| Lea DI, ES: tab; Адрес строки в DI.
Mov AX, 0125Н; Искомое число в АX.
Mov CX, 100; Установить счетчик.
REPNE SCAS tab; Сравнивать пока не найдем в tab число равное 0125Н.
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Продолжение таблицы 3.6
Мнемокод
| Описание команд
| Флаги, пояснения, примеры
| OF
| DF
| IF
| TF
| SF
| ZF
| AF
| PF
| CF
| SCASB
| Сканировать строку байтов.
Результат сравнения в регистре флагов.
AL - ES: (E)DI
IF DF= 0
(E)DI: = (E)DI+ 1
IF DF= 1
(E)DI: = (E)DI-
| *
| *
| --
| *
| *
| *
| *
| *
| *
| Lea DI, ES: tab; Адрес строки в DI.
Mov AL, 25Н; Искомое число в АL.
Mov CX, 100; Установить счетчик.
REPNE SCASB; Сравнивать пока не найдем в tab число равное 25Н.
DEC DI; Поправим DI.
Mov BX, DI; Номер совпадающей ячейки в BX.
| SCASW
| Сканировать строку слов.
AX - ES: (E)DI Результат сравнения в регистре флагов.
IF DF= 0
(E)DI: = (E)DI+ 2
IF DF= 1
(E)DI: = (E)DI- 2
| *
| *
| --
| *
| *
| *
| *
| *
| *
| Lea DI, ES: tab; Адрес строки в DI.
Mov AX, 0125Н; Искомое число в АX.
Mov CX, 100; Установить счетчик.
REPNE SCASW; Сравнивать пока не найдем в tab число равное 0125Н.
SUB DI, 2; Поправим DI.
Mov BX, DI; Номер совпадающей ячейки в BX.
| Команды управления программой
| Команды безусловной передачи управления
| JMPимя
JMPLabel
| Безусловный переход
Передает управление на метку, безусловно. IP: = [R]/ Label
Адрес перехода в регистре или метке ячейки памяти.
| --
| --
| --
| --
| --
| --
| --
| --
| --
| JMP shortmet; Короткий переход на
-128или +127 байт.
JMPmet2; Ближний переход на
JMP nearmet2; -32768 или 32767 байт.
JMP farmet3; Дальний переход
более 65536 байт.
| CALLимя
| Вызов процедуры.
IP: = [R]/имя
[SS: SP]: = IP
SP: = SP-2
| --
| --
| --
| --
| --
| --
| --
| --
| --
| 4F05 Callpr; Вызов процедуры pr и
4F08 Mov ax, bx; запись в стек адреса
возврата (4F08).
| RET
| Возврат из процедуры.
IP: = [ SS: SP ]
SP: = SP+2
| --
| --
| --
| --
| --
| --
| --
| --
| --
| Ret pr; Выйти из процедуры и
вернуться в основную программу
по адресу 4F08. Эта команда
аканчивает процедуру.
| | | | | | | | | | | | | | | | | | | | |
Продолжение таблицы 3.6
Команды условных переходов без учета знака операнда
| Мнемокод
| Описание команд
| Флаги, пояснения, примеры
| | | OF
| DF
| IF
| TF
| SF
| ZF
| AF
| PF
| CF
| JAmet1JNBEmet1
| Перейти на метку, если:
- выше;
-не ниже и не равно.
IF CF= 0 и ZF= 0
IP: = [близкая метка]
| --
| --
| --
| --
| --
| --
|
| --
|
| Mov ax, 25; Загрузить число 25 в АХ.
Cmp ax, bx; Сравнить с числом в ВХ.
Jamet; Перейти на met1, если АХ
больше содержимого ВХ.
| JAEmet2
JNB met2
JNCmet2
| Перейти, если:
- выше или равно;
- не ниже;
- нет переноса.
IF CF= 0
| --
| --
| --
| --
| --
| --
| --
| --
|
| Mov ax, 25; Загрузить число 25 в АХ.
Cmp ax, bx; Сравнить с числом в ВХ.
Jaemet1; Перейти на met2, если АХ
больше содержимого ВХ.
| JBmet3
JNAEm3
JCmet3
| Перейти, если:
- ниже;
-не выше и не равно;
- есть перенос.
IF CF= 1
| --
| --
| --
| --
| --
| --
| --
| --
|
| Mov ax, 25; Загрузить число 25 в АХ.
Cmp ax, bx; Сравнить с числом в ВХ.
Jbmet3; Перейти на met3, если АХ
Меньше содержимого ВХ.
| JBEmet4
JNAmet4
| Перейти, если:
-ниже или равно;
-не выше.
IF CF= 1 или ZF= 1
IP: = [близкая метка]
| --
| --
| --
| --
| --
| --
|
| --
|
| Mov ax, 25; Загрузить число 25 в АХ.
Cmp ax, bx; Сравнить с числом в ВХ.
Jbemet4; Перейти на met4, если АХ
меньше или равно ВХ.
| JE zero
| Перейти на метку, если
АХ равен нулю.
IF ZF= 1
IP: = [близкая метка]
| --
| --
| --
| --
| --
|
| --
| --
| --
| Mov ax, 25; Загрузить число 25 в АХ.
Sub ax, bx; Вычесть из АХ ВХ.
Je zero; Перейти на метку zero, если
АХ равно ВХ.
| JNEmet5
JNZ met5
| Перейти, если:
-не равно;
- не нуль.
IF ZF=0
IP: = [близкая метка]
| --
| --
| --
| --
| --
|
| --
| --
| --
| Mov ax, 25; Загрузить число 25 в АХ.
Cmp ax, bx; Сравнить с числом в ВХ.
Jnemet5; Перейти на met5, если АХ
не равно ВХ.
| JPEmet6
| Перейти, если в АХ
четное число единиц.
IF PF= 1
IP: = [близкая метка]
| --
| --
| --
| --
| --
| --
| --
|
| --
| Mul bx; Умножить АХ на ВХ.
Jpеmet6; Перейти на met6, если в АХ
чётное число единиц.
| | | | | | | | | | | | |
Продолжение таблицы 3.6
Мнемокод
| Описание команд
| Флаги, пояснения, примеры
| OF
| DF
| IF
| TF
| SF
| ZF
| AF
| PF
| CF
| JPOmet7
| Перейти, если в АХ
нечетное число
единиц. IF PF= 0
IP: = [близкая метка]
| --
| --
| --
| --
| --
| --
| --
|
| --
| Mov ax, 25; Загрузить число 25 в АХ.
Mul bx; Умножить на ВХ.
Jpоmet7; Перейти на met7, если в АХ
нечётное число единиц.
| Команды перехода с учетом знака операнда
| JGmet1
JNLEmet1
| Перейти, если:
- больше;
- не меньше и не равно.
IF ZF= 0 и SF= OF
| *
| --
| --
| --
| *
|
| --
| --
| --
| Mov ax, 7025; Загрузить число в АХ.
Add ax, bx; Сложить с ВХ.
Jg met1; Перейти на met1, если при
сложении возник перенос.
| JGEmet2
JNLmet2
| Перейти, если:
- больше или равно;
- не меньше.
IF SF= OF
met2- близкая метка.
| *
| --
| --
| --
| *
| --
| --
| --
| --
| Cmp ax, bx; Сравнить с ВХ.
Jgemet2; Перейти на met2, если AX
больше или равен BX.
| JLmet3
JNGEmet3
| Перейти, если:
- меньше;
- не больше и не равно. IF SF ≠ OF
IP: = [met3]
мet3- близкая метка.
| *
| --
| --
| --
| *
| --
| --
| --
| --
| Mov ax, 7025; Загрузить число в АХ.
Cmp ax, bx; Сравнить с ВХ.
Jlmet3; Перейти на met3, если AX
меньше BX.
| JCXZмет4
| Перейти, если:
- значение CX= 0.
IF CX= 0
IP: = [близкаяметка]
| Cmp сx, 0; СХ равен 0?
JCXZmet4; Перейти на met, если да.
| JLEmet5
JNG met5
| Перейти, если:
- меньше или равно
- не больше
IF ZF= 1 или SF≠ OF
IP: = [близкая метка]
| *
| --
| --
| --
| *
|
| --
| --
| --
| Mov ax, 7025; Загрузить число в АХ.
Cmp ax, bx; Сравнить с ВХ.
Jlеmet5; Перейти на met5, если AX
меньше BX.
| JLEmet5
JNG met5
| Перейти, если:
- меньше или равно
- не больше
IF ZF= 1 или SF≠ OF
IP: = [близкая метка]
| *
| --
| --
| --
| *
|
| --
| --
| --
| Mov ax, 7025; Загрузить число в АХ.
Cmp ax, bx; Сравнить с ВХ.
Jlеmet5; Перейти на met5, если AX
меньше BX.
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|