cy966 发表于 2015-12-1 21:40:50

一道计算题引发的血案问题

为什么7dh+0bh的sf标志寄存器是ng 也就是计算结果存在负数
首先 按照国际惯例先把7d转换成2进制为1111101
最高位不是1 所以不用转换成补码形式 也就是二进制为125
b为11 所以125+11=136 结果不可能为负数
是在低8位内进行运算的
还有关于有符号运算的一个小问题 80h的补码结果根据我的技术是-128
那么为什么80h+80h=-256 结果为负数但是sf标志寄存器的结果却为pl
也就是结果不为负数?

cy966 发表于 2015-12-2 09:53:15

自己顶一下希望大神看到

一念天堂 发表于 2015-12-4 20:00:55

符号标志 SF   NG/Negative/负
7d:0111 1101
d:0000 1101
8a:1000 1010   
SF它记录指令执行后,其结果是否为负。结果为负,sf=1.

一念天堂 发表于 2015-12-4 20:05:25

80h+80h=100h
8位运算最高位舍去,=00h,SF最高位为0,但是CF=1。

cy966 发表于 2015-12-4 20:39:30

一念天堂 发表于 2015-12-4 20:00
符号标志 SF   NG/Negative/负
7d:0111 1101
d:0000 1101


所以sf是看结果然后在来看补码的?不是说数据先转换成补码形式 然后进行运算来看结果的吗
页: [1]
查看完整版本: 一道计算题引发的血案问题