鱼C论坛

 找回密码
 立即注册
查看: 2772|回复: 4

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

[复制链接]
发表于 2011-12-21 00:08:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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


                               
登录/注册后可看大图


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

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

谁能帮我解答一下呢?谢谢了!

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-12-21 00:36:19 | 显示全部楼层
这貌似是指令单位的问题,
mov 寄存器, [xxxx]
这样子的指令,都是以Word为单位(2个byte,写成16进制就是长0x1234这样)
如果要以一个byte作单位的话,加上byte ptr表示你只想移动一个字节.

mov al,byte ptr [bx+3+si]

mov byte ptr [bx+3+si],al

应该就可以了.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-12-21 00:43:35 | 显示全部楼层
ytrfamli 发表于 2011-12-21 00:36
这貌似是指令单位的问题,
mov 寄存器, [xxxx]
这样子的指令,都是以Word为单位(2个byte,写成16进制就是长0 ...

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

还有这个是什么意思哈,我不太明白……mov al,byte ptr [bx+3+si]
“byte ptr ”
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-12-21 01:26:13 | 显示全部楼层
难道书这里的也是错误的?

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


byte ptr是指byte pointer,字节指针.表示指向的地方是一个字节.
後面还会遇到像是word ptr,dword ptr之类的前缀,道理都一样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-12-21 17:54:32 | 显示全部楼层
OK,搞定了,今天往后看了下视频,原来就是这个问题,没有给偏移地址的值一个说明,告诉他应该是字型数据还是字节型数据~
谢谢啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-8 18:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表