- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
例【3-1】 指令MOV AX,#0002H,是将立即数0002H送到AX中。MOV EAX,指令是将立即传送给EAX。 8086乘法运算指令分为无符号数乘MUL和有符号数乘IMUL。乘法在实现字节相乘时乘积放在AX寄存器中,字相乘时乘积放在DX:AX寄存器中,因此乘法指令不会产生溢出和进位,这时用OF和CF位来表示乘积有效数字的长度: 若乘积的高半部分(字节乘法为AH,字乘法为DX)有效(MUL指令是指AH或DX中的内容不为0,IMUL指令指的则是AH或DX中的内容是否为符号位的扩展),则CF和OF都为1,表示DX或AH中含有乘积的有效数字,否则CF和OF为0。 给你举个例子吧。 无符号数0B4H与11H相乘 mov al,0b4h ;al=b4h=180d(被乘数放在al中) mov bl,11h ;bl=11h=17d(乘数放在bl中) mul bl ;ax=Obf4h=3060d,OF=CF=1(乘积放在ax中。AX高8位不为0) 再来一个有符号数乘法的例子。 有符号数0B4H与11H相乘 mov al,0b4h ;al=b4h=-76d mov bl,11h ;bl=11h=17d imul bl ;ax=faf4h=-1292d,OF=CF=1 ;AX高8位不是低8位的符号扩展,表示含有有效数字 计算二进制数乘法:b4h×11h。如果把它当作无符号数,用MUL指令结果为0bf4h;如果看作是有符号数,用IMUL指令则结果为faf4h。由此可见,同样的二进制数看作无符号数与有符号数相乘,即采用MUL与IMUL指令,它们的结果是不相同的。 例【3-34】 利用SUB和SBB指令,实现两个64位二进制数相减。设被减数高、低32位分别存放在EAX和EBX中,减数的高、低32位分别存放在ECX和EDX中,假设(EAX),(EBX),(ECX),(EDX),相减的结果存于(EAX)和(EBX)中。主要程序如下: SUB EBX,EDX ;(EBX)←(EBX)-(EDX),结果是 ;CF=1, (EBX) SBB EAX,ECX ;(EAX)←(EAX)-(ECX)-CF,结 ;果是CF=0,(EAX) 3.DEC指令(减1指令) 指令格式:DEC OPD 功能:(OPD)-1→OPD 影响的标志位是:AF、OF、PF、SF、ZF DEC 指令有下面2种具体格式: DEC reg ;例 DEC EAX DEC mem ;例 DEC BYTE PTR [ESI] 4.CMP指令(比较指令) 指令格式:CMP OPD,OPS 功能:(OPD)-(OPS) 影响的标志位是:AF、OF、PF、SF、ZF、CF 3.5.3 乘法指令 1.MUL指令(无符号数的乘法指令) 指令格式:MUL OPS ;OPS可以是reg ;和mem操作数 字节乘法: (AL)*(OPS8)→AX 字乘法: (AX)*(OPS16)→DX:AX 双字乘法: (EAX)*(OPS32)→EDX:EAX 影响的标志位是:CF、OF,不影响AF、PF、SF、ZF。 例【3-35】 设(AL)=02H,(BH)=81H,(AL)*(BH)→AX,执行MUL BH指令后,(AX)= 02H*81H=0102H。 2.IMUL指令(带符号数整数乘法指令) 指令基本格式: IMUL OPS 字节乘法: (AL)*(OPS8)→AX 字乘法: (AX)*(OPS16)→DX:AX 双字乘法: (EAX)*(OPS32)→EDX:EAX 对标志位的影响:与MUL指令相同。 3.5.2 除法指令 : 1.DIV指令(无符号数的除法指令) 指令格式: DIV OPS 字节除法: (AX)/(OPS8)→AL(商)、AH(余数) 字除法: (DX:AX)/(OPS16)→AX(商)、DX(余数) 双字除法: (EDX:EAX)/(OPS32)→EAX(商)、EDX(余数) 对标志位的影响:CF、OF、AF、PF、SF、ZF均未定义。 2.IDIV指令(带符号数的除法指令) 指令格式: IDIV OPS 字节除法: (AX)/(OPS8)→AL(商)、AH(余数) 字除法: (DX:AX)
文档评论(0)