好文档 - 专业文书写作范文服务资料分享网站

汇编语言各种指令解释及用法

天下 分享 时间: 加入收藏 我要投稿 点赞

【数据传输指令】

一、通用数据传送指令 1、传送指令 MOV (move) 指令的汇编格式:MOV DST,SRC

指令的基本功能:(DST)<-(SRC) 将原操作数(字节或字)传送到目的地址。

指令支持的寻址方式:目的操作数和源操作数不能同时用存储器寻址方式,这个限制适用于所有指令。指令的执行对标志位的影响:不影响标志位。

指令的特殊要求:目的操作数DST和源操作数SRC不允许同时为段寄存器; 目的操作数DST不能是CS,也不能用立即数方式。 2、进栈指令 PUSH (push onto the stack) 出栈指令 POP (pop from the stack) 指令的汇编格式:PUSH SRC ;POP DST

指令的基本功能:PUSH指令在程序中常用来暂存某些数据,而POP指令又可将这些数据恢复。PUSH SRC (SP)<-(SP)-2 ;(SP)<-(SRC) POP DST (DST)<-((SP));(SP)<-(SP)

指令支持的寻址方式:push 和 pop指令不能不能使用立即数寻址方式。 指令对标志位的影响:PUSH 和 POP指令都不影响标志位。

指令的特殊要求:PUSH 和 POP指令只能是字操作,因此,存取字数据后,SP的修改必须是+2 或者 -2; POP指令的DST不允许是CS寄存器; 3、交换指令 XCHG (exchange) 指令的汇编格式:XCHG OPR1,OPR2 指令的基本功能:(OPR1)<->(OPR2)

指令支持的寻址方式:一个操作数必须在寄存器中,另一个操作数可以在寄存器或存储器中。 指令对标志位的影戏:不影响标志位。 指令的特殊要求:不允许使用段寄存器。 二、累加器专用传送指令 4、输入指令 IN (input) 输出指令 OUT (output)

指令的汇编格式:IN ac,port port<=0FFH IN ac,DX port>0FFH OUT port,ac port<=0FFH OUT DX,ac port>0FFH

指令的基本功能:对8086及其后继机型的微处理机,所有I/O端口与CPU之间的通信都由输入输出指令IN和OUT来完成。IN指令将信息从I/O输入到CPU,OUT指令将信息从CPU输出到I/O端口,因此,IN和OUT指令都要指出I/O端口地址。

IN ac,port port<=0FFH (AL)<-(port)传送字节 或 (AX)<-(port+1,port)传送字 IN ac,DX port>0FFH (AL)<-((DX))传送字节或 (AX)<-((DX)+1,(DX))传送字 OUT port,ac port<=0FFH (port)<-(AL)传送字节 或 (port+1,port)<-(AX)传送字 OUT DX,ac port>0FFH (DX)<-(AL)传送字节 或 ((DX)+1,(DX))<-(AX)传送字

指令对标志位的影响:不影响标志位。指令的特殊要求:只限于在AL或AX与I/O端口之间传送信息。传送16位信息用AX,传送8位信息用AL,这取决于外设端口的宽度。 5、换码指令 XLAT (translate)

1 / 28

指令的汇编格式:XLAT opr 或 XLAT

指令的基本功能:这条指令根据AL寄存器提供的位移量,将BX指使的字节表格中的代码换存在AL中。 (AL)<-((DS)*16+(BX)+(AL)) 指令对标志位的影响:不影响标志位。

指令的特殊要求:所建字节表格的长度不能超过256字节,因为存放位移量的是8位寄存器AL。opr为表格的首地址,因为opr所表示的偏移地址已存入BX寄存器,所以opr在换码指令中可有可无,有则提高程序的可读性。 三、地址传送指令

6、有效地址传送器 LEA (load effective address) 指令的汇编格式:LEA reg,src

指令的基本功能:LEA指令把源操作数的有效地址送到指定的寄存器,这个有效地址是由src选定的一种存储器寻址方式确定的。

指令支持的寻址方式:各种存储器寻址方式。 指令对标志位的影响:不影响标志位。

指令的特出要求:指令中reg不能是段寄存器; 7、指针送寄存器和DS LDS (load DS with point) 指针送寄存器和ES LES (load ES with point) 指令的汇编格式:LDS reg,src LES reg,src

指令的基本功能:LDS和LES指令把确定内存单元位置的偏移地址送寄存器,段地址DS或ES。这个偏移地址和段地址(也称地址指针)是由src指定的两个相继字单元提供的。 LDS reg,src (reg)<-(src) (DS)<-(src+2) LES reg,src (reg)<-(src) (ES)<-(src+2) 指令支持的寻址方式:src必须为存储器寻址方式 指令对标志位的影响:不影响标志位。

指令的特殊要求:指令中REG不能是段寄存器; 四、标志寄存器传送指令

8、标志寄存器的低字节送AH LAHF (load AH with FLAGS) 指令的汇编格式:LAHF

指令的基本功能:(AH)<-(FLAGS)0-7 指令对标志位的影响:不影响标志位

9、AH送标志寄存器低字节 SAHF(store AH into FLAGS) 指令的格式:SAHF

指令的基本功能:(FLAGS)0-7<-(AH)

指令对标志位的影响:由装入值来确定标志位的值。 10、标志进栈 PUSHF (push the flags) 指令的汇编格式:PUSHF

指令的基本功能:(SP)<-(SP)-2 ((SP)+1,(SP))<-(FLAGS)0-15 指令对标志位的影响:不影响标志位。 11、标志出栈 POPF (pop the FLAGES) 指令的汇编格式:POPF

指令的基本功能:(FLAGS)0-15<-((SP)+1,(SP)) (SP)<-(SP)+2 指令对标志位的影响:由装入值来确定标志位的值。

2 / 28

【算术指令】

一、加法指令

12、加法指令 ADD (addition) 指令的汇编格式:add dst,src 指令的基本功能:(dst)<-(src)+(dst)

指令支持的寻址方式:他们两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。 指令对标志位的影响:SF=1 加法结果为负数(符号位为1) SF=0 加法结果为正数(符号位为0) ZF=1 加法结果为零 ZF=0 加法结果不为零

CF=1 最高有效位向高位有进位 CF=0 最高有效位向高位无进位

OF=1 两个同符号数相加(正数+正数或负数+负数),结果符号与其相反。 OF=0 两个不同符号数相加,或同符号数相加,结果符号与其相同。 13、带进为加法指令 ADC (add with carry) 指令的汇编格式:ADD dst,src

指令的基本功能:(dst)<-(src)+(dst)+CF

指令支持的寻址方式:他们两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。 指令对标志位的影响:SF=1 加法结果为负数 SF=0 加法结果为正数 ZF=1 加法结果为零 ZF=0 加法结果不为零

CF=1 最高有效位向高位有进位 CF=0 最低有效位相高位无进位

OF=1 两个同符号数相加,结果符号与其相反,

OF=0 两个同符号数相加,或同符号相加,结果符号与其相同 14、加1指令 INC (increament) 指令的汇编格式:INC opr 指令的基本功能:(opr)<-(opr)

指令支持的寻址方式 可以使用除立即数方式外的任何寻址方式 指令对标志位的影响:SF=1 加法结果为负数 SF=0 加法结果为正数 ZF=1 加法结果为零 ZF=0 加法结果不为零

OF=1 两个同符号数相加,结果符号与其相反,

OF=0 两个同符号数相加,或同符号相加,结果符号与其相同。 二、减法指令

15、减法指令 SUB (subtract) 指令的汇编格式:SUB dst,src 指令的基本功能:(dst)<-(dst)-(src)

指令支持的寻址方式:他们两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况

3 / 28

外,源操作数和目地操作数必须有一个寄存器寻址方式。 指令对标志位的影响:SF=1 减法结果为负数(符号位为1) SF=0 减法结果为正数(符号位为0) ZF=1 减法结果为零 ZF=0 减法结果不为零

CF=1 二进制减法运算中最高有效位向高位有借位(被减数小于减数,不够减的情况) CF=0 二进制减法运算中最高有效为向高位无借位(被减数〉=减数,够减的情况) OF=1 两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。 OF=0 同符号数相减时,或不同符号数相减,其结果符号与减数不同。 16、带借位减法指令 SBB (subtract with borrow) 指令的汇编格式:SBB dst,src

指令的基本功能:(dst)<-(dst)-(src)-CF

指令支持的寻址方式:他们两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。 指令对标志位的影响:SF=1 减法结果为负数(符号位为1) SF=0 减法结果为正数(符号位为0) ZF=1 减法结果为零 ZF=0 减法结果不为零

CF=1 二进制减法运算中最高有效位向高位有借位(被减数小于减数,不够减的情况) CF=0 二进制减法运算中最高有效为向高位无借位(被减数〉=减数,够减的情况) OF=1 两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。 OF=0 同符号数相减时,或不同符号数相减,其结果符号与减数不同。 17、减1指令 DEC (decrement) 指令的汇编格式:DEC opr 指令的基本功能:(opr)<-(opr)-1

指令支持的寻址方式:可以使用除立即数方式外的任何寻址方式。 指令对标志位的影响:SF=1 减法结果为负数(符号位为1) SF=0 减法结果为正数(符号位为0) ZF=1 减法结果为零 ZF=0 减法结果不为零

OF=1 两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。 OF=0 同符号数相减时,或不同符号数相减,其结果符号与减数不同。 18、比较指令 CMP (compare) 指令的汇编格式:CMP opr1,opr2

指令的基本功能:(opr1)-(opr2),根据相减结果设置条件码,但不回送结果。

指令支持的寻址方式:他们两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。 指令对标志位的影响:

SF=1 减法结果为负数(符号位为1) SF=0 减法结果为正数(符号位为0) ZF=1 减法结果为零 ZF=0 减法结果不为零 CF=1 二进制减法运算中

4 / 28

最高有效位向高位有借位(被减数小于减数,不够减的情况)

CF=0 二进制减法运算中最高有效为向高位无借位(被减数〉=减数,够减的情况) OF=1 两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。 OF=0 同符号数相减时,或不同符号数相减,其结果符号与减数不同。 19、求补指令 NEG (negate) 指令的汇编格式:NEG opr 指令的基本功能:(opr)<- -(opr)

指令支持的寻址方式:可以使用除立即数方式外的任何寻址方式。 指令对标志位的影响:CF=1 不为0的操作数求补时 CF=0 为0的操作数求补时

OF=1 操作数为-128(字节运算)或操作数为-32768(字运算)

OF=0 当求补运算的操作数不为-128(字节)或-32768(字)时三、乘法指令 20、无符号乘法指令 NUL (unsigned multiple) 有符号乘法指令 IMUL(signed muliple) 指令的汇编格式:NUL src IMUL src

指令的基本功能:(AX)<-(AL)*(src) (DX,AX)<-(AX)*(src)

指令支持的寻址方式:src可以使用除立即数方式以外的任一种寻址方式。 指令对标志位的影响:乘法指令只影响标志位CF和OF,其他条件码位无定义。 MUL指令的条件码设置为:

CF OF=0 0 乘积的高一半为0(字节操作的(AH)或字操作的(DX)) CF OF=1 1 乘积的高一半不为0 IMUL指令的条件码设置为:

CF OF=0 0 乘积的高一半为低一半的符号扩展. CF OF=1 1 其他情况

指令的特殊要求:MUL和IMUL指令的区别仅在于操作数是无符号还是带符号数,它们的共同点是,指令中只给出源操作数src,目的操作数是隐含的,它只能是累加器(字运算为AX,字节运算为AL)。隐含的乘积寄存器是AX或DX(高位)和AX(低位)。 四、符号扩展指令

21、节扩展为字 CBW (convert byte to word) 指令的汇编格式:CBW

指令的基本功能:(AH)=00H 当(AL)的最高有效位为0时 (AH)=FFH 当(AL)的最高有效位为1时 指令对标志位的影响:不影响标志位

指令的特殊要求:这是条无操作数的指令,进行符号扩展的操作数必须存放在AL寄存器 AX寄存器中。

22、字扩展为双字 CWD (convert word to double word) 指令的汇编格式:CWD

指令的基本功能:(DX)=0000H 当(AX)的最高有效位为0时 (DX)=FFFFH 当(AX)的最高有效位为1时 指令对标志位的影响:不影响标志位

指令的特殊要求:这是条无操作数的指令,进行符号扩展的操作数必须存放在AL寄存器或AX寄存器中。 五、除法指令

23、无符号数除法 DIV (unsigned divide)

5 / 28

带符号数除法 IDIV (singed divide) 指令的汇编格式:DIV src IDIV src 指令的基本功能:字操作

(AL)<-(AX)/src的商 (AH)<-(AX)/src的余数 字节操作

(AX)<-(DX,AX)/src的商 (DX)<-(DX,AX)/src的余数

指令支持的寻址方式:src作为除数,可用除立即数以外的任一种寻址方式来取得。 指令对标志位的影响:不影响条件码。

指令的特殊要求:除法指令要求字操作时,被除数必须为32位,除数是16位,商和余数是16位的;字节操作时,被除数必须为16位,除数是8位,得到的商和余数是8位的。 六、十进制调整指令

【逻辑指令】

一、逻辑运算

指令的格式:AND dst,src

指令的基本功能:(dst)<-(dst)与(src) 指令支持的寻址方式:两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况外,源操作数和目地操作数必须有一个寄存器寻址方式。

指令对标志位的影响:指令执行后 CF 和 OF 置零,AF无定义。 SF=1 指令执行后的结果为负数(符号位为1) SF=0 指令执行后的结果为正数(符号位为0) ZF=1 指令执行后的结果为零 ZF=0 指令执行后的结果不为零

PF=1 结果操作数中1的个数为偶数时置1 PF=0 结果操作数中1的个数为奇数时置0 25、逻辑或 OR (logic or) 指令的汇编格式:OR dst,src

指令的基本功能:(dst)<-(dst)或(src) 指令支持的寻址方式:两个操作数不能同时为存储器寻址。即为除源操作数为立即数的情况外,原操作数和目的操作数必须有一个寄存器寻址方式。

指令对标志位的影响:令执行后 CF 和 OF 置零,AF无定义。 SF=1 指令执行后的结果为负数(符号位为1) SF=0 指令执行后的结果为正数(符号位为0) ZF=1 指令执行后的结果为零 ZF=0 指令执行后的结果不为零

PF=1 结果操作数中1的个数为偶数时置1 PF=0 结果操作数中1的个数为奇数时置0 26、逻辑非 NOT (logic not) 指令的汇编格式:NOT orc 指令的基本功能:(dst)<-(opr)

指令支持的寻址方式:除立即数寻址方式以外的其余寻址方式

6 / 28

汇编语言各种指令解释及用法

【数据传输指令】一、通用数据传送指令1、传送指令MOV(move)指令的汇编格式:MOVDST,SRC指令的基本功能:(DST)<-(SRC)将原操作数(字节或字)传送到目的地址。指令支持的寻址方式:目的操作数和源操作数不能同时用存储器寻址方式,这个限制适用于所有指令。指令的执行对标志位的影响:不影响标志位。指令的特
推荐度:
点击下载文档文档为doc格式
741fv9wjx4862m61dk4v721et5ixox005n7
领取福利

微信扫码领取福利

微信扫码分享