
汇编问题,求解答
设AX=0D87BH执行下列指令NEGAXNOTAX结果为啥是0D87AH啊??负数的补码不是最高位是1吗?那么0D87BH=1011100001111011B,执行NE...
设AX=0D87BH执行下列指令 NEG AX NOT AX 结果为啥是0D87AH啊??负数的补码不是最高位是1吗?那么0D87BH=1011 1000 0111 1011B,执行NEG后AX=1100 0111 1000 0101B,再执行NOT后AX=0011 1000 0111 1010B=387AH吗?答案为啥是0D87AH啊???
展开
1个回答
展开全部
AX = 0D87BH = 1101 1000 0111 1011B
NEG指令对其取补运算,就是用0减去它,结果是AX = 0010 0111 1000 0101 B
NOT指令对其取反运算,结果是 AX = 1101 1000 0111 1010 B = 0D87AH
你先是粗心犯了一个小错误,原始数据第一个十六进制位 D 的二进制值是1101,你错写成 1011了。
然后你对NEG的理解有误,NEG指令是对操作数进行求补运算,不是写出负数的补码。
求补运算,是指用0减掉源操作数,有点类似于乘以(-1)。
负数求补,结果变正(8000H除外)。正数求补,结果变负。
NEG指令对其取补运算,就是用0减去它,结果是AX = 0010 0111 1000 0101 B
NOT指令对其取反运算,结果是 AX = 1101 1000 0111 1010 B = 0D87AH
你先是粗心犯了一个小错误,原始数据第一个十六进制位 D 的二进制值是1101,你错写成 1011了。
然后你对NEG的理解有误,NEG指令是对操作数进行求补运算,不是写出负数的补码。
求补运算,是指用0减掉源操作数,有点类似于乘以(-1)。
负数求补,结果变正(8000H除外)。正数求补,结果变负。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询