D.调dē哗丽 发表于 2011-12-21 00:08:14

实验6的问题,无法编译,提示错误。。。

本帖最后由 D.调dē哗丽 于 2011-12-21 17:56 编辑

http://bbs.fishc.com/data/attachment/album/201112/21/00033255p5oknrntzttznq.gif

实验6的问题,无法编译,提示错误。。。

我先自己做了一遍实验六的题,做完以后编译试了一下,结果错误了,就是上图的这个提示,我以为自己哪里错了,下载看了下鱼老师的教程,和我写的一样啊,可怎么会错误的?
然后我把AL改成了AX,结果成功编译了,可这怎么回事?改了一下数据不就是都变了么?还想Debug单步调试一下了……

谁能帮我解答一下呢?谢谢了!{:5_110:}

ytrfamli 发表于 2011-12-21 00:36:19

这貌似是指令单位的问题,
mov 寄存器,
这样子的指令,都是以Word为单位(2个byte,写成16进制就是长0x1234这样)
如果要以一个byte作单位的话,加上byte ptr表示你只想移动一个字节.

mov al,byte ptr

mov byte ptr ,al

应该就可以了.

D.调dē哗丽 发表于 2011-12-21 00:43:35

ytrfamli 发表于 2011-12-21 00:36 static/image/common/back.gif
这貌似是指令单位的问题,
mov 寄存器,
这样子的指令,都是以Word为单位(2个byte,写成16进制就是长0 ...

我想也是这个问题,因为AL是一个8位寄存器,而后面的ax+3+si 里面的axsi都是16位寄存器,所以他会报错,可是书 里面前几个都是类似这样写的 全是mov al,难道书这里的也是错误的?

还有这个是什么意思哈,我不太明白……mov al,byte ptr
“byte ptr ”

ytrfamli 发表于 2011-12-21 01:26:13

难道书这里的也是错误的?
这我不敢确定,可能是编译器版本?
照理说mov al, 直接解读来看没有人会说是要移动一个word,
可是编译器通常都会报错要求要指明移动单位.
(呃,瞎猜的,当作参考吧~)


byte ptr是指byte pointer,字节指针.表示指向的地方是一个字节.
後面还会遇到像是word ptr,dword ptr之类的前缀,道理都一样的

D.调dē哗丽 发表于 2011-12-21 17:54:32

OK,搞定了,今天往后看了下视频,原来就是这个问题,没有给偏移地址的值一个说明,告诉他应该是字型数据还是字节型数据~
谢谢啦
页: [1]
查看完整版本: 实验6的问题,无法编译,提示错误。。。