二进制的加减法与标志位CF、OF数值的判断方法

首先先来解释一下标志位OF、CF不同数值所代表的含义
OF为1时,代表有符号数越界,即当8位时,超出-128~127的范围
OF为0时,代表有符号数未越界
CF为1时,代表无符号数越界,即当8位时,超出0~255的范围
CF为0时,代表无符号数未越界
另外CF在循环移位/移位类指令中用来保存从最高位或最低位移出的0或1。

我们知道,当这个数是有符号数时,最高位是符号位,1代表负数,0代表负数。
现用emu8086编写代码如下
MOV AL, 10000111B
SUB AL, 00001000B

那么执行过后,CF和OF分别是什么呢?
我们先看看负数的二进制如何表示
负数由其绝对值再取反码(除符号位)+1构成
例:
-1的原码:1000 0001
其反码为:1111 1110
再加1得:1111 1111

那么首先我们知道10000111B代表有符号数时是-121,代表无符号数时是135,
10000111B -121 135
00001000B 8 (或已经超出界限的-248)
那么在执行代码后得出
01111111
由于我们只有八位,无法显示出更多,所以我们可以看出,若是有符号数
结果为-129,-129的二进制数是
101111111,显然越界,此时OF为1
若是无符号数
结果为127,显然不越界,此时CF为0

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值