我想减92H-64H在两个的互补和状态是带标志位C和溢出标志位V是1还是0。到目前为止,转换和签入十进制没有问题,因为它是146-100=46=2EH,但是我在执行逐个检查位的减法操作中迷路了。我可以想象它是用二进制语言完成的,但是怎么做到的呢?感谢你的帮助!!
发布于 2013-12-26 00:58:11
你必须用二进制操作。十六进制只不过是一种简单的(=较少的数字)方式,可以在内部显示二进制数字。
也就是说,你的两个数字:
92h - 64h。我猜你的工作是8位。将它们转换为二进制:1001 0010 - 0110 0100
若要使用c2进行减除,请使用第二个数字0110 0100
反转其位:1001 1011
添加一个:1001 1011 + 1 = 1001 1100
将此新数字添加到前一个第一个数字:
1001 0010
1001 1100
---------
10010 1110进位是这个加法的第9位.在这种情况下,溢出位的计算方式如下:取加法中每个数的第8位:它们是1、1和0。这些是每个数字的符号位。
如果操作数1和2的两个符号是相同的,则存在溢出,位结果的符号是不同的。在任何其他情况下,都不会有溢出。
在这个加法中,两个操作数的符号是相同的(1),但是结果的符号不是(它是0),所以这里有溢出。
顺便说一句,这个加法的结果(取其较低的8位,丢弃进位)是原始减法的结果。
加成的结果是0010 1110,也就是十六进制中的2E。
所以92h - 64h = 2Eh,进位是1,溢出是1。
https://stackoverflow.com/questions/20644980
复制相似问题