Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы СПО / Команды Intel 80х86.doc
Скачиваний:
31
Добавлен:
12.04.2015
Размер:
304.64 Кб
Скачать

Основные непривилегированные команды процессоров Intel 80х86

Условные обозначения:

P1, P2, P3 – операнды команд (чтобы определить их количество).

В столбце «комбинации операндов» даны их допустимые сочетания. В большинстве случаев разрядность операндов должна совпадать или соответствовать друг другу.

r – регистр общего назначения 8-,16- или 32-разрядный: EAX,AX,AL,AH,

EBX,BX,BL,BH, ECX,CX,CL,CH, EDX,DX,DL,DH, ESI,SI, EDI,DI, ESP,SP, EBP,BP

sr – сегментный регистр: CS, SS, DS, ES, FS, GS

const – числовая константа

m – операнд в памяти (адресация прямая или косвенная)

Команды пересылки и загрузки

Команда

Комбинации операндов P1,P2,P3

Действие

Какие флаги меняет

Какие процессоры

Расшифровка мнемоники команды

MOV P1,P2

r8/16/32, r8/16/32

r8/16/32, const

r8/16/32,m8/16/32

m8/16/32, r8/16/32

m8/16/32, const

sr, r16

sr, m16

P1P2

все

Move

MOVZX P1,P2

r16/32, r8/16/32

r16/32, m8/16/32

P1 (00..0)P2

386 >

Move with Zero extension

MOVSX P1,P2

r16/32, r8/16/32

r16/32, m8/16/32

P1 (ss..s)P2

s – бит знака P2

386 >

Move with Sign extension

XCHG P1,P2

r8/16/32, r8/16/32

r8/16/32,m8/16/32

P1↔P2

все

Exchange

BSWAP P1

r32

P1[7:0]↔P1[31:24]

P1[15:8]↔P1[23:16]

486 >

Byte Swap

CBW

AX  (ss..s)AL

s – бит знака AL

все

Convert Byte to Word

CWD

DX.AX  (ss..s)AX

s – бит знака AХ

все

Convert Word to DoubleWord

CWDE

EAX  (ss..s)AX

s – бит знака AX

386 >

Convert Word to Dword Extended

CDQ

EDX.EAX  (s..s)EAX

s – бит знака EAX

386 >

Convert Dword to Quadra word

PUSH P1

r16/32

m16/32

const

sr

добавить P1 в стек:

use16: (E)SP  (E)SP–2

use32: (E)SP  (E)SP–4

SS:[(E)SP]  P1

все

Push (англ. "толкать")

POP P1

r16/32

m16/32

sr (кроме CS)

извлечь из стека в Р1:

P1  SS:[(E)SP]

use16: (E)SP  (E)SP+2

use32: (E)SP  (E)SP+4

все

Pop (англ. жарг. "извлекать")

PUSHA

добавить в стек: AX,CX, DX,BX,SP,BP,SI,DI

все

Push All general registers

POPA

извлечь из стека: DI,SI, BP,SP,BX,DX,CX,AX

все

Pop All general registers

PUSHAD

добавить в стек: EAX,ECX, EDX,EBX,ESP,EBP,ESI,EDI

386 >

Push All general Double word registers

POPAD

извлечь из стека: EDI,ESI, EBP,ESP,EBX,EDX,ECX,EAX

386 >

Pop All general Double word registers

LEA P1,P2

r16/32, m

P1 offset(P2)

все

Load Effective Address

LSS P1,P2

LDS P1,P2

LES P1,P2

LFS P1,P2

LGS P1,P2

r16, m32

P1  P2[15:0],

SS/DS/ES/FS/GS  P2[31:16]

все

все

все

386 >

386 >

Load Pointer into SS Load Pointer into DS Load Pointer into ES

Load Pointer into FS

Load Pointer into GS

r32, m48

P1  P2[31:0],

SS/DS/ES/FS/GS P2[47:32]

IN P1,P2

AL/AX/EAX, const

AL/AX/EAX, DX

чтение из порта

P1  port[P2]

все

IN

OUT P1,P2

const, AL/AX/EAX

DX, AL/AX/EAX

запись в порт

port[P1]  P2

все

OUT

XLAT

XLATB

Табличное преобразование:

массив байт по адр. ES:[BX]

с индексом [AL] → AL

все

Translate Byte from Table

CMOVZ P1,P2

CMOVE P1,P2

r8/16/32, r8/16/32

r8/16/32, m8/16/32

if (ZF=1): P1P2

P6 >

Condition Move

if Zero / Equal

CMOVNZ P1,P2

CMOVNE P1,P2

r8/16/32, r8/16/32

r8/16/32, m8/16/32

if (ZF=0): P1P2

P6 >

Condition Move if Not Zero / Not Equal

CMOVS P1,P2

r8/16/32, r8/16/32

r8/16/32, m8/16/32

if (SF=1): P1P2

P6 >

Condition Move

if Sign

CMOVNS P1,P2

r8/16/32, r8/16/32

r8/16/32, m8/16/32

if (SF=0): P1P2

P6 >

Condition Move

if Not Sign

CMOVP P1,P2

r8/16/32, r8/16/32

r8/16/32, m8/16/32

if (PF=1): P1P2

P6 >

Condition Move

if Parity

CMOVNP P1,P2

r8/16/32, r8/16/32

r8/16/32, m8/16/32

if (PF=0): P1P2

P6 >

Condition Move

if Not Parity

CMOVO P1,P2

r8/16/32, r8/16/32

r8/16/32, m8/16/32

if (OF=1): P1P2

P6 >

Condition Move

if Overflow

CMOVNO P1,P2

r8/16/32, r8/16/32

r8/16/32, m8/16/32

if (OF=0): P1P2

P6 >

Condition Move

if Not Overflow

CMOVA P1,P2

CMOVNBE P1,P2

r8/16/32, r8/16/32

r8/16/32, m8/16/32

Усл. пересылка по >(беззнак.)

if (CF=0 && ZF=0): P1P2

P6 >

Condition Move if Above / Not Below or Equal

CMOVAE P1,P2

CMOVNB P1,P2

CMOVNC P1,P2

r8/16/32, r8/16/32

r8/16/32, m8/16/32

Усл. пересылка по (беззнак.)

if (CF=0): P1P2

Усл. пересылка по CF=0

P6 >

Condition Move if Above or Equal / Not Below /

if Not Carry

CMOVB P1,P2

CMOVNAE P1,P2

CMOVC P1,P2

r8/16/32, r8/16/32

r8/16/32, m8/16/32

Усл. пересылка по <(беззнак.)

if (CF=1): P1P2

Усл. пересылка по CF=1

P6 >

Condition Move if Below / Not Above or Equal /

if Carry

CMOVBE P1,P2

CMOVNA P1,P2

r8/16/32, r8/16/32

r8/16/32, m8/16/32

Усл. пересылка по (беззнак.)

if (CF=1 && ZF=1): P1P2

P6 >

Condition Move if Below or Equal / Not Above

CMOVG P1,P2

CMOVNLE P1,P2

r8/16/32, r8/16/32

r8/16/32, m8/16/32

Усл.пересылка по >(знаковое)

if (ZF=0 && SF=OF): P1P2

P6 >

Condition Move if Greater / Not Less or Equal

CMOVGE P1,P2

CMOVNL P1,P2

r8/16/32, r8/16/32

r8/16/32, m8/16/32

Усл.пересылка по (знаковое)

if (SF=OF): P1P2

P6 >

Condition Move if Greater or Equal / Not Less

CMOVL P1,P2

CMOVNGE P1,P2

r8/16/32, r8/16/32

r8/16/32, m8/16/32

Усл.пересылка по <(знаковое)

if (SF<>OF): P1P2

P6 >

Condition Move if Less / Not Greater or Equal

CMOVLE P1,P2

CMOVNG P1,P2

r8/16/32, r8/16/32

r8/16/32, m8/16/32

Усл.пересылка по (знаковое)

if (ZF=1 && SF<>OF): P1P2

P6 >

Condition Move if Less or Equal / Not Greater

Соседние файлы в папке Лабы СПО