- 1、本文档共42页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
x算数运算指令.ppt
错误分析 MOV AL,0B4H ;设置被乘数 MUL 11H ;指定立即数作乘数 MUL [BX+SI] ;当乘数为存储器操作数…… MUL BYTR PTR[BX+SI] MUL WORD PTR[BX+SI] 四、 除法指令 DIV /IDIV : 无符号/有符号数除法 格式: DIV/IDIV SRC 功能:将两个无符号/有符号数相除。除数显式给出,隐含使用另一个操作数AX、DX作为被除数。 DIV/IDIV r8/m8 ;AL←AX÷r8/m8的商,Ah←AX÷r8/m8的余数 DIV/IDIV r16/m16 ;AX←DX.AX÷r16/m16的商, DX←DX.AX÷r16/m16的余数 被除数长度是除数的2倍 除法指令应用举例: 无符号 mov ax,0400h ;ax 400h 1024 mov bl,0b4h ;bl b4h 180 div bl ;商al=05h=5 ;余数ah=7ch=124 有符号 mov ax,0400h ;ax 400h 1024 mov bl,0b4h ;bl b4h -76 idiv bl ;商al=f3h=-13 ;余数ah=24h=36 除法指令注意事项: 源操作数不能使用立即数方式和段寄存器。 除法指令对标志位的影响:除法指令对标志没有定义。 除法错1: 当被除数远大于除数时,所得的商就有可能超出它所能表达的范围。 例如: MOV AX,0FFF1H MOV DL,01H DIV DL ;商为FFF1H,AL中存放不下。 如果存放商的寄存器AL/AX不能表达,这种情况叫做溢出: 对DIV指令,除数为0,或者在字节除时商超过8位,或者在字除时商超过16位 对IDIV指令,除数为0,或者在字节除时商不在-128~127范围内,或者在字除时商不在-32768~32767范围内 示例 当产生除法溢出,CPU自动产生“0号”中断,运行相应中断服务程序。程序设计时,应避免产生除法溢出 next 除法错2: 除法指令的溢出问题:DIV下列情况可能产生溢出 除数为零 字节除时,被除数的高8位≥除数 商>8位) 字除时,被除数的高16位≥除数(商>16位) 高8位 低8位 8位除数 与高8位被除 数对应的商 S1 S2 S3 S1 S2 S3 1 S1>S2 S3>1 除法指令举例 div bl div byte ptr[bx] idiv cx idiv word ptr[bp+si] div 2050h × div [bx] × AL÷BL,AH为0 xor ah,ah / and ah,0 / mov ah,0 AX÷BX,使DX为0。 无符号数的扩展 采用直接使高8位或高16位清0的方法进行扩展 无符号数除法 符号扩展是指用一个操作数的符号位扩展形成另一个操作数。符号扩展不改变数据大小 符号扩展的概念 有符号数除法 例:将存放在AL中的带符号数-87,除以CL中的带符号数21 符号扩展指令: ·CBW 字节扩展成字指令 格式:CBW 功能:将(AL)的符号位扩充到AH中,形成AX中的字 即若(AL)的符号位为0,则(AH) 00H; 若(AL)的符号位为1,则(AH) 0FFH。 ·CWD 字转换成双字指令 格式:CWD 功能:CWD指令将(AX)的符号位扩展到DX,形成DX:AX中的双字 即若(AX)的符号位为0,则(DX) 0000H 若(AX)的符号位为1,则(DX) 0FFFFH。 举例: 例:将存放在AL中的带符号数-87,除以CL中的带符号数21 CBW ;将AL中带符号数扩展成AX ;AX 1111 1111 1010 1001B -87D IDIV CL ;AX内容除以CL内容 ;商在AL中AL -4D 1111 1100B, ;余数在AH中AH -3D 1111 1101B 指令不影响标志位 练习 1、在debug中写出以下程序片段 (1234+8765)+1-1+|-3| 具体要求: 1234在ds:[1000H]单元 mov 8765在ds:[2000h]单元 mov , -3的补码存放在dx寄存器中, 最后的计算结果存放在BX中 4.2 算术指令 ? 加法指令 ADD、ADC、INC ? 减法指令 SUB、SBB、DEC、NEG、CMP ? 乘法指令 MUL、IMUL 除法指令 DIV、IDIV 符号扩展指令 CBW、CWD 教学指示 请注意算术运算类指令对标志的影响 掌握:ADD/ADC/INC、SUB/SBB/DEC/ NEG/CMP 熟悉:MUL/IMUL、DIV/I
文档评论(0)