汇编指令集Word格式.docx

上传人:b****6 文档编号:21386477 上传时间:2023-01-30 格式:DOCX 页数:31 大小:33.30KB
下载 相关 举报
汇编指令集Word格式.docx_第1页
第1页 / 共31页
汇编指令集Word格式.docx_第2页
第2页 / 共31页
汇编指令集Word格式.docx_第3页
第3页 / 共31页
汇编指令集Word格式.docx_第4页
第4页 / 共31页
汇编指令集Word格式.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

汇编指令集Word格式.docx

《汇编指令集Word格式.docx》由会员分享,可在线阅读,更多相关《汇编指令集Word格式.docx(31页珍藏版)》请在冰豆网上搜索。

汇编指令集Word格式.docx

MUL,IMUL

乘法指令

MULOPIMULOP

MULr/mIMULr/m 

C,P,A,Z,S,O(仅IMUL会影响S标志)

DIV,IDIV 

除法指令

DIVOPIDIVOP

DIVr/mIDIVr/m

CBW,CWD

有符号数扩展指令

CBWCWD

AAA,AAS,AAM,AAD

非压BCD码运算调整指令

AAAAASAAMAAD

A,C(AAA,AAS)S,Z,P(AAM,AAD)

DAA,DAS

压缩BCD码调整指令

DAADAS

C,P,A,Z,S

位运算指令集 

AND,OR,XOR,NOT,TEST

执行BIT与BIT之间的逻辑运算

ANDr/m,r/m/dataORr/m,r/m/dataXORr/m,r/m/dataTESTr/m,r/m/d

ataNOTr/m

C,O,P,Z,S(其中C与O两个标志会被设为0)NOT指令不影响任何标志位

SHR,SHL,SAR,SAL

移位指令 

SHRr/m,data/CLSHLr/m,data/CLSARr/m,data/CLSALr/m,data/CL

C,P,Z,S,O

ROR,ROL,RCR,RCL

循环移位指令

RORr/m,data/CLROLr/m,data/CLRCRr/m,data/CLRCLr/m,data/CL

程序流程控制指令集

CLC,STC,CMC

设定进位标志

CLCSTCCMC

标志位:

CLD,STD

设定方向标志

CLDSTD

CLI,STI

设定中断标志

CLISTI

I

CMP

比较OP1与OP2的值

CMPr/m,r/m/data

C,P,A,Z,O

JMP

跳往指定地址执行

JMP地址

JXX

当特定条件成立则跳往指定地址执行

JXX地址 

注:

A:

ABOVE,当C=0,Z=0时成立

B:

BELOW,当C=1时成立

C:

CARRY,当弁时成立CXZ:

CX寄存器的值为0(ZERO)时成立

E:

EQUAL,当Z=1时成立

G:

GREATER(大于),当Z=0且S=0时成立

L:

LESS(小于),当S不为零时成立

N:

NOT(相反条件),需和其它符号配合使用

O:

OVERFLOW,O=1时成立

P:

PARITY,P=1时成立

PE:

PARITYEVEN,P=1时成立

PO:

PARITYODD,P=0时成立

S:

SIGN,S=1时成立

Z:

ZERO,Z=1时成立

LOOP

循环指令集

LOOP地址

LOOPE(Z)

地址LOOPNE(Z)地址

CALL,RET

子程序调用,返回指令

CALL地址RETRETn

INT,IRET

中断调用及返回指令

INTnIRET

在执行INT时,CPU会自动将标志寄存器的值入栈,在执行IRET时则会将堆

栈中的标志值弹回寄存器

字符串操作指令集

MOVSB,MOVSW,MOVSD

字符串传送指令

MOVSBMOVSWMOVSD

CMPSB,CMPSW,CMPSD

字符串比较指令

CMPSBCMPSWCMPSD

SCASB,SCASW

字符串搜索指令

SCASBSCASW

LODSB,LODSW,STOSB,STOSW

字符串载入或存贮指令

LODSBLODSWSTOSBSTOSW

REP,REPE,REPNE

重复前缀指令集

REP指令SREPE指令SREPNE指令S

依指令S而定

EMC汇编语言指令集

符号解说:

1.符号‘R’:

代表一般用途寄存器中的其中一个。

2.符号‘B’:

代表一般用途寄存器中的某一位。

3.符号‘K’:

代表8位或10位的常数或内容。

4.符号‘A’:

代表累加寄存器。

3.2.1.面向寄存器(字节操作)型指令(26条)

助记符号指令动作标志影响指令周期语言描述

ADDA,RA+R->

AZ,C,DC1ADD

ADDR,AA+R->

RZ,C,DC1ADD

ANDA,RA&

R->

AZ1AND

ANDR,AA&

RZ1AND

CLRR0->

RZ1ClearRegister

CLRA0->

AZ1CleartheAregister

COMR/R->

RZ1ComplementR

COMAR/R->

AZ1ComplementR,PlaceinA

DAAA寄存器调整为BCD值C1DecimalAdjust

DECRR-1->

RZ1DecrementR

DECARR-1->

AZ1DecrementR,PlaceinA

DJZRR-1->

R结果为零就跳过下一个指令1DecrementR,Skipif0

DJZARR-1->

A结果为零就跳过下一个指令1DecrementR,PleaseinAregister,Skipif0

INCRR+1->

RZ1IncrementR

INCARR+1->

AZ1IncrementR,PleaseinA

JZRR+1->

R,结果为零就跳过下一个指令1IncrementR,Skipif0

JZARR+1->

A,结果为零就跳过下一个指令1IncrementR,PlaceintheAregiser,Skipif0

MOVR,AA->

R1MoveData

MOVA,RR->

AZ1MoveData

MOVR,RR->

RZ1MoveData

ORA,RAORR->

AZ1InclusiveOR

ORR,AAORR->

RZ1InclusiveOR

SUBA,RR-A->

AZ,C,DC1Subtract

SUBR,AR-A->

RZ,C,DC1Subtract

XORA,RAXORR->

AZ1ExclusiveOR

XORR,AAXORR->

RZ1ExclusiveOR

面向位操作类指令(10条)

BCR,B0->

R(B)1BitClear

BSR,B1->

R(B)1BitSet

JBCR,B如果R(B)=0,则跳过下一个指令1BitTest,SkipifClear

JBSR,B如果R(B)=1,则跳过下一个指令1BitTest,SkipifSet

RLCRR(N)->

R(N+1)R(7)->

CC->

R(0)C1RotateLeftRthroughCarry

RLCARR(N)->

A(N+1)R(7)->

A(0)C1RotateLeftRthroughCarry,PlaceintheA

Register

RRCRR(N)->

R(N-1)R(0)->

R(7)C1RotateRightRthroughCarry

RRCARR(N)->

A(N-1)R(0)->

A(7)C1RotateRightRthroughCarry,Placeinthe

ARegister

SWAPRR(0-3)->

R(4-7)R(4-7)->

R(0-3)1SwapR

SWAPARR(0-3)->

A(4-7)R(4-7)->

A(0-3)1SwapR

常数操作和控制类指令(22条)

ADDA,KA+K->

ANDA,KA&

K->

CALLKPC+1->

[SP](PAGE,K)->

PC1SubroutineCall

CONTRCONT->

A1MoveCONTtotheAregister

CONTWA->

CONT1MoveAtoCONT

DISI禁止中断1DisableInterrupt

ENI使能中断1EnableInterrupt

INTPC+1->

[SP]001H->

PC1Softwareinterrupt

IORRIOCR->

A1MoveIOCRtotheAregister

IOWRA->

IOCR1MoveAtoIOCR

JMPK(PAGE,K)->

PC1UnconditionalBranch

MOVA,KK->

A1MoveData

NOP1NoOperation

ORA,KAORK->

RET[堆栈顶端]->

PC1ReturnfromSubroutine

RETI[堆栈顶端]->

PC,使能中断1ReturnfromInterrupt

RETLKK->

A,[堆栈顶端]->

PCReturnImmediateDatatotheARegister

SLEP0->

WDT,振荡器停止振荡T,P1IntoSleepmode

SUBA,KK-A->

TBLPC+A->

PCZ,C,DC2TableLookUp

WDTC0->

WDTT,P1ClearWatchdogTimer

XORA,KAXORK->

AZ1ExclusiveOR 

查看文章

8088汇编速查手册

2007年03月24日星期六上午11:

42

一、数据传输指令

───────────────────────────────────────

它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.

1.通用数据传送指令.

MOV传送字或字节.

MOVSX先符号扩展,再传送.

MOVZX先零扩展,再传送.

PUSH把字压入堆栈.

POP把字弹出堆栈.

PUSHA把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.

POPA把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.

PUSHAD把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.

POPAD把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.

BSWAP交换32位寄存器里字节的顺序

XCHG交换字或字节.(至少有一个操作数为寄存器,段寄存器不可作为操作数)

CMPXCHG比较并交换操作数.(第二个操作数必须为累加器AL/AX/EAX)

XADD先交换再累加.(结果在第一个操作数里)

XLAT字节查表转换.

──BX指向一张256字节的表的起点,AL为表的索引值(0-255,即

0-FFH);

返回AL为查表结果.([BX+AL]->

AL)

2.输入输出端口传送指令.

INI/O端口输入.(语法:

IN累加器,{端口号│DX})

OUTI/O端口输出.(语法:

OUT{端口号│DX},累加器)

输入输出端口由立即方式指定时,其范围是0-255;

由寄存器DX指定时,

其范围是0-65535.

3.目的地址传送指令.

LEA装入有效地址.

例:

LEADX,string;

把偏移地址存到DX.

LDS传送目标指针,把指针内容装入DS.

LDSSI,string;

把段地址:

偏移地址存到DS:

SI.

LES传送目标指针,把指针内容装入ES.

LESDI,string;

偏移地址存到ES:

DI.

LFS传送目标指针,把指针内容装入FS.

LFSDI,string;

偏移地址存到FS:

LGS传送目标指针,把指针内容装入GS.

LGSDI,string;

偏移地址存到GS:

LSS传送目标指针,把指针内容装入SS.

LSSDI,string;

偏移地址存到SS:

4.标志传送指令.

LAHF标志寄存器传送,把标志装入AH.

SAHF标志寄存器传送,把AH内容装入标志寄存器.

PUSHF标志入栈.

POPF标志出栈.

PUSHD32位标志入栈.

POPD32位标志出栈.

二、算术运算指令

  ADD加法.

ADC带进位加法.

INC加1.

AAA加法的ASCII码调整.

DAA加法的十进制调整.

SUB减法.

SBB带借位减法.

DEC减1.

NEC求反(以0减之).

CMP比较.(两操作数作减法,仅修改标志位,不回送结果).

AAS减法的ASCII码调整.

DAS减法的十进制调整.

MUL无符号乘法.

IMUL整数乘法.

以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算),

AAM乘法的ASCII码调整.

DIV无符号除法.

IDIV整数除法.

以上两条,结果回送:

商回送AL,余数回送AH,(字节运算);

或商回送AX,余数回送DX,(字运算).

AAD除法的ASCII码调整.

CBW字节转换为字.(把AL中字节的符号扩展到AH中去)

CWD字转换为双字.(把AX中的字的符号扩展到DX中去)

CWDE字转换为双字.(把AX中的字符号扩展到EAX中去)

CDQ双字扩展.(把EAX中的字的符号扩展到EDX中去)

三、逻辑运算指令

  AND与运算.

OR或运算.

XOR异或运算.

NOT取反.

TEST测试.(两操作数作与运算,仅修改标志位,不回送结果).

SHL逻辑左移.

SAL算术左移.(=SHL)

SHR逻辑右移.

SAR算术右移.(=SHR)

ROL循环左移.

ROR循环右移.

RCL通过进位的循环左移.

RCR通过进位的循环右移.

以上八种移位指令,其移位次数可达255次.

移位一次时,可直接用操作码.如SHLAX,1.

移位>

1次时,则由寄存器CL给出移位次数.

如MOVCL,04

SHLAX,CL

四、串指令

 DS:

SI源串段寄存器:

源串变址.

ES:

DI目标串段寄存器:

目标串变址.

CX重复次数计数器.

AL/AX扫描值.

D标志0表示重复操作中SI和DI应自动增量;

1表示应自动减量.

Z标志用来控制扫描或比较操作的结束.

MOVS串传送.

(MOVSB传送字符.MOVSW传送字.MOVSD传送双字.)

CMPS串比较.

(CMPSB比较字符.CMPSW比较字.)

SCAS串扫描.

把AL或AX的内容与目标串作比较,比较结果反映在标志位.

LODS装入串.

把源串中的元素(字或字节)逐一装入AL或AX中.

(LODSB传送字符.LODSW传送字.LODSD传送双字.)

STOS保存串.

是LODS的逆过程.

REP当CX/ECX<

>

0时重复.

REPE/REPZ当ZF=1或比较结果相等,且CX/ECX<

REPNE/REPNZ当ZF=0或比较结果不相等,且CX/ECX<

REPC当CF=1且CX/ECX<

REPNC当CF=0且CX/ECX<

五、程序转移指令

 1>

无条件转移指令(长转移)

JMP无条件转移指令

CALL过程调用

RET/RETF过程返回.

2>

条件转移指令(短转移,-128到+127的距离内)

(当且仅当(SFXOROF)=1时,OP1<

OP2)

JA/JNBE不小于或不等于时转移.

JAE/JNB大于或等于转移.

JB/JNAE小于转移.

JBE/JNA小于或等于转移.

以上四条,测试无符号整数运算的结果(标志C和Z).

JG/JNLE大于转移.

JGE/JNL大于或等于转移.

JL/JNGE小于转移.

JLE/JNG小于或等于转移.

以上四条,测试带符号整数运算的结果(标志S,O和Z).

JE/JZ等于转移.

JNE/JNZ不等于时转移.

JC有进位时转移.

JNC无进位时转移.

JNO不溢出时转移.

JNP/JPO奇偶性为奇数时转移.

JNS符号位为"

0"

时转移.

JO溢出转移.

JP/JPE奇偶性为偶数时转移.

JS符号位为"

1"

3>

循环控制指令(短转移)

LOOPCX不为零时循环.

LOOPE/LOOPZCX不为零且标志Z=1时循环.

LOOPNE/LOOPNZCX不为零且标志Z=0时循环.

JCXZCX为零时转移.

JECXZECX为零时转移.

4>

中断指令

INT中断指令

INTO溢出中断

IRET中断返回

5>

处理器控制指令

HLT处理器暂停,直到出现中断或复位信号才继续.

WAIT当芯片引线TEST为高电平时使CPU进入等待状态.

ESC转换到外处理器.

LOCK封锁总线.

NOP空操作.

STC置进位标志位.

CLC清进位标志位.

CMC进位标志取反.

STD置方向标志位.

CLD清方向标志位.

STI置中断允许位.

CLI清中断允许位.

六、伪指令

  DW定义字(2字节).

PROC定义过程.

ENDP过程结束.

SEGMENT定义段.

ASSUME建立段寄存器寻址.

ENDS段结束.

END程序结束.

8088汇编跳转

cmpa,b比较a与b

mova,b把b的值送给a

ret返回主程序

nop无作用,英文“nooperation”的简写,意思是“donothing”

call调用子程序

je或jz若相等则跳

jne或jnz若不相等则跳

jmp无条件跳

jb若小于则跳

ja若大于则跳

jg若大于则跳

jge若大于等于则跳

jl若小于则跳

jle若小于等于则跳

pop出栈

push压栈

PUSHrPUSHMPUSHdataPOPrPOPm

PUSHF,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1