鱼C论坛

 找回密码
 立即注册
查看: 2683|回复: 5

求教关于MOV的问题

[复制链接]
发表于 2012-2-11 00:06:46 | 显示全部楼层 |阅读模式

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

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

x
MOV AL,[0]
MOV AX,1000[0]
以上两个命令可以操作
为什么下面的不行
MOV AL,1000[0]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-11 08:20:44 | 显示全部楼层
我试验了一下,得出以下结论:
1. MOV AX,1000[0]  不是将1000:0这个内存单元的值赋给ax,而赋的是ds:1000这个内存单元的值;
2. 对于 1000[0]这种写法,我不清楚CPU的全部的判断方法,但1000这个数据必须和所要赋值的寄存器的大小符合,即ax可存一个字型数据,那么1000[0]中的这个1000就可以是0~ffff中的任何数据;而al只可存放一个字节的数据,那么1000[0]中的这个1000就只能是0~ff之间的数据,超出这个范围就会报错;
3. 暂时没有看出这种赋值方式有什么好处,觉得是画蛇添足,求高手指点!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-2-11 15:55:50 | 显示全部楼层
本帖最后由 小小鱼苗 于 2012-2-11 16:28 编辑

谢谢解答,但是我还有个疑问.
1.我用的是系统自带的DEBUG 命令    只输入代码 这个DEBUG会在执行之前检测内存地址与寄存器符合不?
2.(此问题2楼已解决,总结原因:我把课本学死了,学的是8位的系统.以为都是以字节来存放的,所以进入误区,而我现在的机器是32位的)
3.求这个方法的用途.我想既然他存在,一定有必要性.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-11 16:01:39 | 显示全部楼层
你用mov ax,1000[0]就没问题咯  要不再加个 MOV AH,0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-2-11 16:29:28 | 显示全部楼层
谢谢小军解答,我已经懂了.
第1.3问题有人来帮忙吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-11 20:35:23 | 显示全部楼层
你要硬想这么干也行,指明长度就可以了。
MOV AL,byte ptr ds:1000[0]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-10-8 12:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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