第2章 80X86汇编语言与汇编程序(2)—常用指令1
- 格式:ppt
- 大小:308.00 KB
- 文档页数:52


汇编语言常用指令汇总持续更新汇编语言常用指令汇总汇编语言是一种低级编程语言,用于与计算机硬件进行直接交互。
熟悉汇编语言的常用指令对于理解计算机底层原理和进行底层编程非常重要。
本文将对汇编语言常用指令进行汇总,并持续更新。
1. 数据传输指令:- MOV:用于将数据从一个位置复制到另一个位置。
- LXI:用于将双字节立即数加载到指定的寄存器对中。
- LDA:用于将累加器加载到内存地址中的数据。
- STA:用于将累加器中的数据存储到指定的内存地址中。
2. 算术运算指令:- ADD:用于将累加器的内容与给定的寄存器或内存位置中的数据相加。
- SUB:用于从累加器中减去给定的寄存器或内存位置中的数据。
- INR:用于将给定的寄存器或内存位置中的数据增加1。
- DCR:用于将给定的寄存器或内存位置中的数据减少1。
3. 逻辑运算指令:- AND:用于将累加器的内容与给定的寄存器或内存位置中的数据进行逻辑与操作。
- OR:用于将累加器的内容与给定的寄存器或内存位置中的数据进行逻辑或操作。
- XOR:用于将累加器的内容与给定的寄存器或内存位置中的数据进行逻辑异或操作。
- NOT:用于对累加器的内容进行逻辑非操作。
4. 控制指令:- JMP:用于无条件转移到指定的内存地址。
- JZ:在累加器为零时,转移到指定的内存地址。
- JC:在进位标志为1时,转移到指定的内存地址。
- CALL:用于调用子程序。
5. 栈操作指令:- PUSH:用于将给定的寄存器或数据压入栈中。
- POP:从栈中弹出数据并存储到给定的寄存器中。
6. 输入输出指令:- IN:从外部设备读取数据,并存储到累加器中。
- OUT:将累加器中的数据发送到外部设备。
以上仅是汇编语言中常用指令的一小部分,还有许多其他指令可用于执行更复杂的任务。
在实际的汇编语言程序中,这些指令通常会与标签、变量和宏指令一起使用。
总结:汇编语言常用指令汇总了数据传输、算术运算、逻辑运算、控制、栈操作和输入输出等方面的指令。
80X86汇编语⾔指令集8086/8088汇编语⾔指令集数据传送指令集MOV功能: 把源操作数送给⽬的操作数语法: MOV ⽬的操作数,源操作数格式: MOV r1,r2MOV r,mMOV m,rMOV r,dataXCHG功能: 交换两个操作数的数据语法: XCHG格式: XCHG r1,r2 XCHG m,r XCHG r,mPUSH,POP功能: 把操作数压⼊或取出堆栈语法: PUSH 操作数 POP 操作数格式: PUSH r PUSH M PUSH data POP r POP mPUSHF,POPF,PUSHA,POPA功能: 堆栈指令群格式: PUSHF POPF PUSHA POPALEA,LDS,LES功能: 取地址⾄寄存器语法: LEA r,m LDS r,m LES r,mXLAT(XLATB)功能: 查表指令语法: XLAT XLAT m算数运算指令ADD,ADC功能: 加法指令语法: ADD OP1,OP2 ADC OP1,OP2格式: ADD r1,r2 ADD r,m ADD m,r ADD r,data影响标志: C,P,A,Z,S,OSUB,SBB功能:减法指令语法: SUB OP1,OP2 SBB OP1,OP2格式: SUB r1,r2 SUB r,m SUB m,r SUB r,data SUB m,data影响标志: C,P,A,Z,S,OINC,DEC功能: 把OP的值加⼀或减⼀语法: INC OP DEC OP格式: INC r/m DEC r/m影响标志: P,A,Z,S,ONEG功能: 将OP的符号反相(取⼆进制补码)语法: NEG OP格式: NEG r/m影响标志: C,P,A,Z,S,OMUL,IMUL功能: 乘法指令语法: MUL OP IMUL OP格式: MUL r/m IMUL r/m影响标志: C,P,A,Z,S,O(仅IMUL会影响S标志)DIV,IDIV功能:除法指令语法: DIV OP IDIV OP格式: DIV r/m IDIV r/mCBW,CWD功能: 有符号数扩展指令语法: CBW CWDAAA,AAS,AAM,AAD功能: ⾮压BCD码运算调整指令语法: AAA AAS AAM AAD影响标志: A,C(AAA,AAS) S,Z,P(AAM,AAD)DAA,DAS功能: 压缩BCD码调整指令语法: DAA DAS影响标志: C,P,A,Z,S位运算指令集AND,OR,XOR,NOT,TEST功能: 执⾏BIT与BIT之间的逻辑运算语法: AND r/m,r/m/data OR r/m,r/m/data XOR r/m,r/m/data TEST r/m,r/m/data NOT r/m影响标志: C,O,P,Z,S(其中C与O两个标志会被设为0) NOT指令不影响任何标志位SHR,SHL,SAR,SAL功能: 移位指令语法: SHR r/m,data/CL SHL r/m,data/CL SAR r/m,data/CL SAL r/m,data/CL影响标志: C,P,Z,S,OROR,ROL,RCR,RCL功能: 循环移位指令语法: ROR r/m,data/CL ROL r/m,data/CL RCR r/m,data/CL RCL r/m,data/CL影响标志: C,P,Z,S,O程序流程控制指令集CLC,STC,CMC功能: 设定进位标志语法: CLC STC CMC标志位: CCLD,STD功能: 设定⽅向标志语法: CLD STD标志位: DCLI,STI功能: 设定中断标志语法: CLI STI标志位: ICMP功能: ⽐较OP1与OP2的值语法: CMP r/m,r/m/data标志位: C,P,A,Z,OJMP功能: 跳往指定地址执⾏语法: 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: PARITY EVEN,P=1时成⽴PO: PARITY ODD,P=0时成⽴S: SIGN,S=1时成⽴Z: ZERO,Z=1时成⽴LOOP功能: 循环指令集语法: LOOP 地址LOOPE(Z)地址 LOOPNE(Z) 地址标志位: ⽆CALL,RET功能: ⼦程序调⽤,返回指令语法: CALL 地址 RET RET n标志位: ⽆INT,IRET功能: 中断调⽤及返回指令语法: INT n IRET标志位: 在执⾏INT时,CPU会⾃动将标志寄存器的值⼊栈,在执⾏IRET时则会将堆栈中的标志值弹回寄存器字符串操作指令集MOVSB,MOVSW,MOVSD功能: 字符串传送指令语法: MOVSB MOVSW MOVSD标志位: ⽆CMPSB,CMPSW,CMPSD功能: 字符串⽐较指令语法: CMPSB CMPSW CMPSD标志位: C,P,Z,S,OSCASB,SCASW功能: 字符串搜索指令语法: SCASB SCASW标志位: C,P,Z,S,OLODSB,LODSW,STOSB,STOSW功能: 字符串载⼊或存贮指令语法: LODSB LODSW STOSB STOSW标志位: ⽆REP,REPE,REPNE功能: 重复前缀指令集语法: REP 指令S REPE 指令S REPNE 指令S标志位: 依指令S⽽定EMC 汇编语⾔指令集符号解说:1.符号‘R’:代表⼀般⽤途寄存器中的其中⼀个。
80x86的指令系统1.1.1数据传送指令:负责把数据、地址或立即数传送到寄存器或存储单元中。
1.通用数据传送指令(1).MOV——传送指令指令格式:MOV DST,SRC ;(DST)←(SRC)。
DST表示目的操作数, SRC表示源操作数说明:①.DST为除CS外的各寄存器寻址方式或任意存储器寻址方式。
SRC为任意数据寻址方式。
②.DST、SRC不能同时为存储器寻址方式,也不能同时为段寄存器寻址方式,而且在DST为段寄存器时,SRC不能为立即数。
③.MOV指令不影响标志位。
(2).MOVSX——带符号扩展传送指令(386及其后继机型可用)指令格式:MOVSX DST,SRC ;(DST)←符号扩展(SRC)说明:①.DST必须为16位或32位寄存器。
SRC为8位或16位的寄存器或存储单元的内容。
传送时把源操作数符号扩展送入目的寄存器。
②.MOVSX指令不影响标志位。
(3).MOVZX——带零扩展传送指令(386及其后继机型可用)指令格式:MOVZX DST,SRC ;(DST)←零扩展(SRC)说明:①.DST必须为16位或32位寄存器。
SRC为8位或16位的寄存器或存储单元的内容。
传送时把源操作数零扩展送入目的寄存器。
②.MOVZX指令不影响标志位。
(4).PUSH——进栈指令指令格式:PUSH SRC ;16位指令:(SP)←(SP) –2 ((SP)+1,(SP))←(SRC)32位指令:(ESP)←(ESP) –4 ((ESP)+3, (ESP)+2, (ESP)+1,(ESP))←(SRC)说明:①.堆栈:计算机开辟的以“后进先出”方式工作的存储区。
它必须存在于堆栈段中,只有一个出入口,所以只有一个堆栈指针SP或ESP。
SP或ESP的内容在任何时候都指向当前的栈顶。
②.8086中的SRC不能为立即数寻址方式。
286及其后继机型可用立即数寻址方式。
③.PUSH指令不影响标志位。
(5).POP——出栈指令指令格式:POP DST ;16位指令:(DST)←((SP)+1,(SP)) (SP)←(SP)+232位指令:(DST)←((ESP)+3, (ESP)+2, (ESP)+1, (ESP)) (ESP)←(ESP)+4说明:①.DST为除立即数及CS寄存器以外的任意数据寻址方式。