青草 发表于 2013-2-11 15:30:05

8086 王爽汇编书中也有BUG 各位学友有兴趣转观下



我说 我在Debug中按书上的代码得出的结果怎么会老是驴头不对马嘴 后来才发现 那个10001/100 前面的10001转成的十六进制 而后面的 100(十六进制64)没有转成十六进制结果老是出错后面的更甚 bl是八位寄存器 一个12位数据怎么能放进8位寄存器中呢 各位学友们注意了

cct 发表于 2013-2-11 16:22:18

你应该回复可见的...伸手党比较坑

压寨宝宝 发表于 2013-2-11 17:02:51

书上的程序可能是按照.asm程序文件的写法来写的。因为编译器会把100视为十进制的,100h为十六进制的。而在debug中用-a命令的话,默认写100就是十六进制的。综上,我觉得书上可能是用masm来编译文件的写法,然后用debug来进行跟踪查看的。

メ㊣逆ご帅☆ 发表于 2013-2-11 18:13:24

好像都不是错误呢。。。
那个确实是十进制啊
看题目是没错的(十进制和十六进制是等同的,怎么看是我们人类的事情,为什么输入要区分,因为我们输入的是ASCII码,而不是那个值)
从上下文看,应该是在文本编辑器里面写代码,不加后缀默认为10进制


第2张图,不知道为什么要圈03E8H呢。

第3张图BL可以存储数值大小是2^8=256,完全可以的哦



LZ有探究精神{:5_108:}


牡丹花下死做鬼 发表于 2013-2-11 19:29:02

哦 我知道了 谢谢啊

青草 发表于 2013-2-11 22:10:46

压寨宝宝 发表于 2013-2-11 17:02 static/image/common/back.gif
书上的程序可能是按照.asm程序文件的写法来写的。因为编译器会把100视为十进制的,100h为十六进制的。而在d ...

{:5_99:}三句代码 直接Debug不就得了 还要MASM一次 晕 受教了

青草 发表于 2013-2-11 22:14:48

メ㊣逆ご帅☆ 发表于 2013-2-11 18:13 static/image/common/back.gif
好像都不是错误呢。。。
那个确实是十进制啊
看题目是没错的(十进制和十六进制是等同的,怎么看是我们人 ...

{:5_100:} 汗 这Debug和啥不和masm一至晕 真晕我把那个BL=100 里的100当成十六进制的数据了

青草 发表于 2013-2-11 22:16:32

本帖最后由 青草 于 2013-2-11 22:18 编辑

唉 第一张图里 一个“mov ax,86A1H”还好看着是十六进制可第二个"mov bx,100"又来个十进制 这十六进制和十进制在加上一个debug和masm有区别 就给弄晕了新年容易给弄晕

メ㊣逆ご帅☆ 发表于 2013-2-11 22:40:42

青草 发表于 2013-2-11 22:16 static/image/common/back.gif
唉 第一张图里 一个“mov ax,86A1H”还好看着是十六进制可第二个"mov bx,100"又来个十进制 这十六进制和十 ...

DEBUG是全部16进制的
DEBUG不会有后缀h,如果有后缀H你可以直接认为是ASM源码
就不会乱了

镜花水月 发表于 2013-2-11 23:48:28

:L早就知道有错误,第二版的也有错误。我当初学的时候,害死我了:Q

压寨宝宝 发表于 2013-2-12 09:54:02

青草 发表于 2013-2-11 22:10 static/image/common/back.gif
三句代码 直接Debug不就得了 还要MASM一次 晕 受教了

一起学习加油!{:5_109:}

季末、梨花雨落 发表于 2013-2-12 10:34:55

masm是当做十进制来处理的 。而debug中则是十六进制,这个我早在前面进行loop循环的时候就发现这个问题了。在debug中,如果你要用loop来计算1加到100的累加值。直接按十进制进去的话肯定错的。而用masm编译的代码,十进制的出来的结果完全没错~

热血冰点 发表于 2013-2-12 16:21:27

这个跟你用的汇编器有关,要注意到他每一个十六进制数后面都会加'H',是你用的汇编器一律将无提示数视为十六进制进行编译.不管怎么说,总算有人会想,这就行了.

牡丹花下死做鬼 发表于 2013-2-12 23:56:05

楼主很认真啊    我就和你没得比了

有只小稚飞不起 发表于 2013-2-13 10:09:53

hao xi xin
页: [1]
查看完整版本: 8086 王爽汇编书中也有BUG 各位学友有兴趣转观下