汇编问题,求解答
答案:2 悬赏:10 手机版
解决时间 2021-01-30 23:48
- 提问者网友:谁的错
- 2021-01-30 08:50
设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啊???
最佳答案
- 五星知识达人网友:野慌
- 2021-01-30 10:25
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除外)。正数求补,结果变负。
全部回答
- 1楼网友:蕴藏春秋
- 2021-01-30 10:35
其实你应该看王爽的《汇编语言》的,这本书先让你熟悉汇编,让你先入门。这是经典的书。 然后你再看intel汇编语言程序设计这本书,也就是你手头上的那本。 我现在就在看王爽的《汇编语言》,其实我也有intel汇编语言程序设计这本书,但我看到第三章的时候,我连代码都编译不过,因为我不会搭建平台。但我过些日子把汇编语言看完后,我就开始学习intel汇编语言程序设计这本书。如果可以的话,加个qq,我们俩一起,我是新手。现在才学16位汇编。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯