MOD | 11(W=0) | 11(W=1) | |||
R/M | |||||
[BX+SI] | [BX+SI]+D8 | [BX+SI]+D16 | AL | AX | |
[BX+DI] | [BX+DI]+D8 | [BX+DI]+D16 | CL | CX | |
[BP+SI] | [BP+SI]+D8 | [BP+SI]+D16 | DL | DX | |
[BP+DI] | [BP+DI]+D8 | [BX+SI]+D16 | BL | BX | |
[SI] | [SI]+D8 | [SI]+D16 | AH | SP | |
[DI] | [DI]+D8 | [DI]+D16 | CH | BP | |
D16 | [BP]+D8 | [BP]+D16 | DH | SI | |
[BX] | [BX]+D8 | [BX]+D16 | BH | DI |
ES | ПРИМЕЧАНИЕ | |
CS | W=0 байт, W=1 слово; D=1 в региср, D=0 из регистра; D`=1-D; V=1 счетчик в регистре, V=0 счетчик непосредственный операнд | |
SS | R/M-регистр или память; REG-общий регистр;SEG-сегментный регистр S=0 расширение (8‑>16)не производится;S=1 расширение производится | |
DS | D8 непосредственный операнд байт,D16 непосредственный операнд слово |
Наименование операции Мненокод | Содержание операции | Операнды | Код команды | Изменяемые флаги | |||||||||||||||||||||
Пересылка MOV dst,src | dst src | R/M,REG | 1000 10 D W MOD REG R/M | Не меняются | |||||||||||||||||||||
НЕПОСР à R/M | 1100 011W MOD 000 R/M D8 D16 | ||||||||||||||||||||||||
НЕПОСРàREG | 1011 W REG D8 D16 | ||||||||||||||||||||||||
ПАМЯТЬ àAX/AL | 1010 00 D` W adrm adrs | ||||||||||||||||||||||||
R/M,SEG | 1000 11 D 0 MOD 0 SEG R/M | ||||||||||||||||||||||||
Положить в стек PUSH opr | R/M | 1111 1111 MOD 110 R/M | Не меняются | ||||||||||||||||||||||
REG | 0101 0 REG | ||||||||||||||||||||||||
SEG | 000 SEG 110 | ||||||||||||||||||||||||
Взять из стека POP opr | R/M | 1000 1111 MOD 110 R/M | Не меняются | ||||||||||||||||||||||
REG | 0101 1 REG | ||||||||||||||||||||||||
SEG | 000 SEG 111 | ||||||||||||||||||||||||
Флаги в стек PUSHF | 1001 1100 | Не меняются | |||||||||||||||||||||||
Флаги из стека POPF | 1001 1101 | Не меняются | |||||||||||||||||||||||
Регистры в стек PUSHA | 0110 0000 | Не меняются | |||||||||||||||||||||||
Регистры из стека PUSHA | 0110 0001 | Не меняются | |||||||||||||||||||||||
Перестановка XCHG dst,src | Dstßsrc srcßdst | REG,R/M | 1000 011 W MOD REG R/M | Не меняются | |||||||||||||||||||||
REG,AX/AL | 1001 0 REG | ||||||||||||||||||||||||
Пересыл. адреса LEA dst,src | dstßадр.scr | REG16ßПАМЯТЬ | 1000 1101 MOD REG R/M | Не меняются | |||||||||||||||||||||
Загр. сегм. данн. LDS dst,src | dstßадр.scr DSßSEG scr | REG16,ПАМЯТЬ32 | 1100 0101 MOD REG R/M | Не меняются | |||||||||||||||||||||
Загр. сегм. ES. LES dst,src | dstßадр.scr ESßSEG scr | REG16,ПАМЯТЬ32 | 1100 0100 MOD REG R/M | Не меняются | |||||||||||||||||||||
Сложение ADD dst,src | dstßdst+src | REG,R/M | 0000 00 D W MOD REG R/M | SF ZF CF OF PF AF | |||||||||||||||||||||
R/M+НЕПОСР. ОП. | 1000 00 S W MOD 000 R/M D8 D16 | ||||||||||||||||||||||||
AX/AL+НЕПОСР.ОП | 0000 010 W D8 D16 | ||||||||||||||||||||||||
Сложение c переносом ADC dst,src | dstßdst+src+CF | REG,R/M | 0001 00 D W MOD REG R/M | SF ZF CF OF PF AF | |||||||||||||||||||||
R/M+НЕПОСР. ОП | 1000 00 S W MOD 010 R/M D8 D16 | ||||||||||||||||||||||||
AX/AL+НЕПОСР.ОП | 0001 010 W D8 D16 | ||||||||||||||||||||||||
Увеличение на 1 INC opr | oprßopr+1 | R/M | 1111 111 W MOD 000 R/M | SF ZF CF OF PF AF | |||||||||||||||||||||
REG | 0100 0 REG | ||||||||||||||||||||||||
Вычитание SUB dst,src | dstßdst-src | REG,R/M | 0010 10 D W MOD REG R/M | SF ZF CF OF PF AF | |||||||||||||||||||||
R/M-НЕПОСР. ОП | 1000 00 S W MOD 101 R/M D8 D16 | ||||||||||||||||||||||||
AX/AL-НЕПОСР.ОП | 0010 110 W D8 D16 | ||||||||||||||||||||||||
Вычитание с переносом SBB dst,src | dstßdst-src-CF | REG,R/M | 0001 10 D W MOD REG R/M | SF ZF CF OF PF AF | |||||||||||||||||||||
R/M-НЕПОСР. ОП | 1000 00 S W MOD 011 R/M D8 D16 | ||||||||||||||||||||||||
AX/AL-НЕПОСР.ОП | 0001 110 W D8 D16 | ||||||||||||||||||||||||
Декремент DEC opr | oprßopr-1 | R/M | 1111 111 W MOD 001 R/M | SF ZF CF OF PF AF | |||||||||||||||||||||
REG | 0100 1 REG | ||||||||||||||||||||||||
Изменение знака NEG opr | oprß (‑opr) | R/M | 1111 011 W MOD 011 R/M | SF ZF CF OF PF AF | |||||||||||||||||||||
Умнож. беззнак. MUL src | AXßAL*src DX:AXßX*src | R/M | 1111 011 W MOD 100 R/M | CF OF | |||||||||||||||||||||
Умнож. знаков. IMUL src | AXßAL*src DX:AXßAX*src | R/M | 1111 011 W MOD 101 R/M | CF OF | |||||||||||||||||||||
Деление беззнак. DIV src | ALßAX div src AHßAX mod src | R/M | 1111 011 W MOD 110 R/M | Неопределенное | |||||||||||||||||||||
AXßDX:AX div src DXßDX:AX mod src | |||||||||||||||||||||||||
Деление знак. IDIV src | ALßAX div src AHßAX mod src AXßDX:AX div src DXßDX:AX mod src | R/M | 1111 011 W MOD 111 R/M | Неопределенное | |||||||||||||||||||||
Сравнение CMP op1,op2 | op1‑op2 | REG,R/M | 0011 10 D W MOD REG R/M | SF ZF CF OF PF AF | |||||||||||||||||||||
R/M-НЕПОСР. ОП | 1000 00 S W MOD 111 R/M D8 D16 | ||||||||||||||||||||||||
AX/AL-НЕПОСР.ОП | 0011 110 W D8 D16 | ||||||||||||||||||||||||
Преобразование Байт‑слово CBW | AXßAL | 1001 1000 | Неопределенное | ||||||||||||||||||||||
Преобразование Слово‑дв.слово CWD | DX:AXßAX | 1001 1001 | Неопределенное | ||||||||||||||||||||||
Отрицание NOT opr | ___ oprß opr | R/M | 1111 011W MOD 010 R/M | ||||||||||||||||||||||
Конъюнкция AND dst,src | dstßdst & src | REG,R/M | 0010 00 D W MOD REG R/M | SF ZF PF CF=OF=0 | |||||||||||||||||||||
R/M & НЕПОСР. ОП | 1000 00 S W MOD 100 R/M D8 D16 | ||||||||||||||||||||||||
AX/AL & НЕПОСР.ОП | 0010 010 D8 D16 | ||||||||||||||||||||||||
Дизъюнкция OR dst,src | dstßdst Ú src | REG,R/M | 0000 10 D W MOD REG R/M | SF ZF PF CF=OF=0 | |||||||||||||||||||||
R/M Ú НЕПОСР. ОП | 1000 00 S W MOD 001 R/M D8 D16 | ||||||||||||||||||||||||
AX/AL Ú НЕПОСР.ОП | 0000 110 W D8 D16 | ||||||||||||||||||||||||
Исключающее или XOR dst,src | dst<‑dst Å src | REG,R/M | 0011 00 d w mod reg r/m | SF ZF PF CF=OF=0 | |||||||||||||||||||||
R/M Å НЕПОСР. ОП | 1000 00 S W MOD 110 R/M D8 D16 | ||||||||||||||||||||||||
AX/AL Å НЕПОСР.ОП | 0011 010 W D8 D16 | ||||||||||||||||||||||||
Проверка бит TEST dst,src | Dst & src | REG,R/M | 1000 010 W MOD REG R/M | SF ZF PF CF=OF=0 | |||||||||||||||||||||
R/M & НЕПОСР. ОП | 1111 011 W MOD 000 R/M D8 D16 | ||||||||||||||||||||||||
AX/AL & НЕПОСР.ОП | 1010 100 W D8 D16 | ||||||||||||||||||||||||
Лог. сдвиг влево SHL opr,cnt | R/M,НЕПОСР. ОП или CX | 1101 00 V W MOD 100 R/M | SF ZF PF CF | ||||||||||||||||||||||
cf | opr | ||||||||||||||||||||||||
Лог. сдвиг вправо SHR opr,cnt | R/M,НЕПОСР. ОП или CX | 1101 00 V W MOD 101 R/M | SF ZF PF CF | ||||||||||||||||||||||
opr | cf | ||||||||||||||||||||||||
Арифм. Сдвиг влево SAL opr,cnt | oprßopr*2cnt | R/M,НЕПОСР. ОП или CX | 1101 00 V W MOD 100 R/M | SF ZF PF CF | |||||||||||||||||||||
Арифм. Сдвиг вправо SAR opr,cnt | oprßopr/2cnt | R/M,НЕПОСР. ОП или CX | 1101 00 V W MOD 111 R/M | SF ZF PF CF | |||||||||||||||||||||
Цикл..сдвиг влево ROL opr,cnt | R/M,НЕПОСР. ОП или CX | 1101 00 V W MOD 000 R/M | SF ZF PF CF | ||||||||||||||||||||||
cf | opr | ||||||||||||||||||||||||
Цикл. Сдвиг вправо ROR opr,cnt | R/M,НЕПОСР. ОП или CX | 1101 00 V W MOD 001 R/M | SF ZF PF CF | ||||||||||||||||||||||
Opr | cf | ||||||||||||||||||||||||
Цикл..сдвиг влево с перенос. RCL opr,cnt | R/M,НЕПОСР. ОП или CX | 1101 00 V W MOD 010 R/M | SF ZF PF CF | ||||||||||||||||||||||
cf | opr | ||||||||||||||||||||||||
Цикл. Сдвиг вправо с перен. RCR opr,cnt | R/M,НЕПОСР. ОП или CX | 1101 00 V W MOD 011 R/M | SF ZF PF CF | ||||||||||||||||||||||
opr | cf | ||||||||||||||||||||||||
Безусловный переход JMP адрес | Короткий | 1110 1011 адрес | |||||||||||||||||||||||
Прямой внутрисегмент. | 1110 1001 adrm adrs | ||||||||||||||||||||||||
Косвенный внутрисегм. | 1111 1111 MOD 100 R/M | ||||||||||||||||||||||||
Прямой межсегментн. | 1110 1010 adrm adrs segm segs | ||||||||||||||||||||||||
Косвенный межсегм. | 1111 1111 MOD 101 R/M | ||||||||||||||||||||||||
Вызов подпрограммы CALL адрес | Прямой внутрисегмент. | 1100 1000 adrm adrs | Не меняются | ||||||||||||||||||||||
Косвенный внутрисегм. | 1111 1111 MOD 010 R/M | ||||||||||||||||||||||||
Прямой межсегментн. | 1001 1010 adrm adrs segm segs | ||||||||||||||||||||||||
Косвенный межсегм. | 1111 1111 MOD 011 R/M | ||||||||||||||||||||||||
цикл | LOOP мет. | CXßCX-1,CX¹0 | Короткие переходы от –128 до 127 | E2 смещение | |||||||||||||||||||||
LOOPE мет. LOOPZ мет. | CXßCX-1, CX¹0 или ZF=1 | E1 смещение | |||||||||||||||||||||||
LOOPNE м. LOOPNZ м. | CXßCX-1, CX¹0 или ZF=0 | E0 смещение | |||||||||||||||||||||||
JCXZ метка | CX=0 | E3 смещение | |||||||||||||||||||||||
Условный переход | JE | op1 = op2 ZF=1 | Любые | 74 смещение | После команды CMP или команд, изменя-ющих флаги | ||||||||||||||||||||
JZ | ZF=1 | ||||||||||||||||||||||||
JNE | op1 ¹ op2 ZF=0 | Любые | 78 смещение | ||||||||||||||||||||||
JNZ | ZF=0 | ||||||||||||||||||||||||
JL / JNGE | op1 < op2 | Знаковые | 7С смещение | ||||||||||||||||||||||
JLE / JNG | op1 <= op2 | Знаковые | 7E смещение | ||||||||||||||||||||||
JG / JNLE | op1 >op2 | Знаковые | 7D смещение | ||||||||||||||||||||||
JGE / JNL | op1 => op2 | Знаковые | 75 смещение | ||||||||||||||||||||||
JB / JNAE | op1 < op2 | Без знака | 72 смещение | ||||||||||||||||||||||
JBE / JNA | op1 <= op2 | Без знака | 76 смещение | ||||||||||||||||||||||
JP / JPE | PF=0 | ||||||||||||||||||||||||
JA / JNBE | op1 > op2 | Без знака | 77 смещение | ||||||||||||||||||||||
JAE / JNB | op1 => op2 | Без знака | 73 смещение | ||||||||||||||||||||||
JO | OF=1 | 7A смещение | |||||||||||||||||||||||
JS | SF=1 | 70 смещение | |||||||||||||||||||||||
JNO | OF=0 | 71 смещение | |||||||||||||||||||||||
JNS | SF=0 | 79 смещение | |||||||||||||||||||||||
Возврат из подпрограммы RET | Далекий | 1100 1011 | Не меняются | ||||||||||||||||||||||
Близкий | 1100 0011 | ||||||||||||||||||||||||
Возврат из подпрограммы RET n | n- число байтов занимаемые параметрами в стеке | Далекий | 1100 1010 D8 D16 | Не меняются | |||||||||||||||||||||
Близкий | 1100 0010 D8 D16 | ||||||||||||||||||||||||
Прерывание INT номер | 1100 1101 номер | IF TP | |||||||||||||||||||||||
Очисть флаг DF CLD | DF=0 | FC | |||||||||||||||||||||||
Установ.флаг DF STD | DF=1 | FD | |||||||||||||||||||||||
Очисть флаг CF CLC | CF=0 | F8 | |||||||||||||||||||||||
Измен. флаг CF CMC | CF=1‑ CF | F5 | |||||||||||||||||||||||
Установ.флаг CF STC | CF=1 | F9 | |||||||||||||||||||||||
Структура прграммы
title < разместите здесь заголовок>
Page,132
stak segment PARA STACK ‘STACK’
DB 64 DUP (‘STACK’)
STAK ENDS
DATA SEGMENT PARA PUBLIC ‘DATA’
;<поместите здесь данные >
DATA ENDS
;< Если требуется оператор EXTRN, поместите его здесь>
;< Если требуется оператор PUBLIC, поместите его здесь>
CODE SEGMENT PARA PUBLIC ‘CODE’