汇编语言中加减法运算的溢出处理

1.无符号数运算

只有相加才有可能溢出 ,以及小减大肯定溢出,大减小不会溢出

相加前在编码前加个0,作为符号位.如果结果的符号为1,则溢出.

举例,12+7=19(溢出)  

01100+00111=10011

2.有符号数运算

两个异号数相加或两个同号数相减,其结果不会溢出 .仅当两个同号数相加或两个异号数相减 ,才有可能发生溢出的情况.

今以4位二进制补码整数加法运算为例说明如下:

(前注,4位二进制只能表示-8~7,所以必需在前面加个符号位)

9+5=14

01001+00101=01110

(-9)+(-5)=-14

10111+11011=110010

12+7=19(溢出)

01100+00111=10011

(-12)+(-7)=-19(溢出)

10100+11001=101101

14-1=13

01110+11111=101101

-14+1=-13

10010+00001=10011

判别方法:当符号相同的两数相加时,如果结果的符号与加数(或被加数)不相同,则为溢出。

真实案例:

mov bx,9048H    ;bx=9048H,即bh=90H,bl=48H

sub bh,bl             ;bh=48H,bl=48H,即bx=4848H

     ;CF=0    OF=1

解释:无符号运算,大数减小数,所以不溢出,所以CF=0;

有符号运算,90-48=10010000-01001000=10010000+10111000=101001000(必须转成补码加法,才能使用该方法判断,且寄存器bh,bl中的最高位即为符号位)

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值