微机原理学习笔记——运算类指令
目录
带进位加ADC和减SBB指令
比较指令CMP
增量INC和减量DEC指令
求补指令NEG
符号扩展指令CBW和CWD
乘法指令MUL和IMUL
除法指令DIV和IDIV
带进位加ADC和减SBB指令
(1)带进位的加指令
指令格式:ADC DEST,SRC
功能:与ADD相同,相加时要加上CF进位的当前值。
注意事项:DEST、SRC不能同时为存储器mem,SRC可以是立即数imm,运算结果对状态标志位有影响。
(2)带进位的减指令
指令格式:SBB DEST,SRC
功能:与SUB功能相同,相减时还应减去CF进位的当前值。
注意事项:DEST、SRC可以是存储器mem或寄存器reg,但不能同时为存储器,运算结果对状态标志位有影响。
(3)带进位加减例题



比较指令CMP
指令格式:CMP OPR1,OPR2; OPR1-OPR2结果影响标志位。
功能:做两个数的比较,与减法指令一样执行opr1-opr2操作,但是差值不回送目的操作数,只是根据相减的结果做出判断。
注意事项:OPR1、OPR2可以是存储器mem或寄存器reg,但是不能同时为存储器mem,OPR2可以是立即数imm,运算结果对状态标志位有影响。
比较结果有三种可能:AX>BX AX 例题 (1)语法格式:INC reg/mem。 DEC reg/mem。 (2)INC reg/mem 对指定的操作数进行加1操作,其操作数可以是任意一个通用寄存器,也可以在内存单元中,该指令影响状态标志位,但是不影响CF。 (3)DEC reg/mem 对指定的操作数进行减1操作,操作数可以是任意一个通用寄存器,也可以在内存单元中,减1时,把操作数看作为无符号的二进制数,该指令影响状态标志位,但是不影响CF。 (4)例题求5个序数之和 语法格式:NEG reg/mem 注意事项:如果是存储器mem需要指明它是字操作还是字节操作。 例题求补运算 格式:CBW是将AL中的符号位扩展到AH中,形成一个字AX。 CWD是将AX中的符号位扩展到DX中,形成双字(DX.AX) 注意事项:CBW表示将AL中的符号位的数扩展到或者叫覆盖到AH,即根据AL中的D7位来扩展, CWD表示将AX中符号位数扩展到DX中,即根据AX的D15位来扩展。 (1)无符号数乘法指令MUL 格式:MUL SRC ;(AX)(AL)×(opr)字节乘法 要求:字节运算时,目的操作数也就是被乘数必须是累加器AL,做乘法运算时要先把乘数设置好,被乘数和乘数之间是隐含的关系、都是无符号数,乘积会存放在寄存器AX中。 字运算时,目的操作数必须是累加器AX,乘积在寄存器DX,AX中,源操作数src不允许使用立即数。 (2)有符号数乘法指令IMUL 格式:IMUL SRC ;(AX) (AL)×(opr)字节 要求:同无符号数。 (3)乘法指令运算结果影响状态标志,但对OF、CF有特殊的定义,以下是助记规则。 (1)无符号除法指令DIV(被除数和结果隐含) 格式:DIV SRC; 字节操作: (AX)(AH)/(SRC)除法余数 (AX)(AL)/(SRC)除法的商 字操作: (DX,AX) (AX)/(SRC)是除法的商 (DX,AX)(DX)/(SRC)是除法的余数 (2)有符号数除法指令IDIV(被除数和结果隐含) 格式:IDIV SRC; 字节操作:与无符号一致。 字操作:与无符号一致。 需要注意的点: (1)除数为0,会产生0型中断 (2)除法指令运算结果对标志状态位无定义 (3)除法指令要求是字操作时,被除数是必须是32位、除数是16位,商和余数是16位;字节操作时,被除数必须是16位,除数是8位,商和余数是8位,所以就是被除数必须大于除数。 (4)有符号与无符号除法完成的操作都是相同的,只是做有符号数时,操作数是有符号的,得到的商和余数也是有符号的,余数的符号同被除数符号相同。
增量INC和减量DEC指令

求补指令NEG



符号扩展指令CBW和CWD


乘法指令MUL和IMUL
(DX,AX)(AX)×(opr)字乘法
;(DX,AX) (AX)×(opr)字
除法指令DIV和IDIV
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
