MOV AX, [1234H]和MOV AX, 1234H 有何不同?

zhangwuji156 2009-04-23 04:18:40
我在调试下看,结果都是把
AX改成1234了呀
...全文
4766 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
goodider 2009-05-03
  • 打赏
  • 举报
回复
DEBUG和编译器对于MOV AX,1234H有不同解释。
ufofind 2009-05-03
  • 打赏
  • 举报
回复 1
mov ax,1234是把ax中的值变为1234,而mov ax,[1234]是把ds:[1234]内存的肉容给ax
jyicai 2009-05-03
  • 打赏
  • 举报
回复
2楼正解
czc1009 2009-05-03
  • 打赏
  • 举报
回复
二楼对了!寻址是不同的!
另外
(...)表示地址“...”内的内容
[...]表示以地址“...”中的内容为偏移地址
sheiiiii 2009-05-02
  • 打赏
  • 举报
回复
支持2楼!
ycwp12 2009-05-02
  • 打赏
  • 举报
回复
不同的原因是因为取地址的方式不同,二楼说的很对
nanlingcg 2009-04-24
  • 打赏
  • 举报
回复
开始-->运行--》输入 command-->确定-->DEBUG-->A,U,R等命令你自己用了。。。王爽的书基本有介绍。再不行就上百度搜下DEBUG命令。。。
zhangwuji156 2009-04-24
  • 打赏
  • 举报
回复
本人菜鸟,用的是MASM FOR WINDWOS集成开发环境,
这个编译链接全由一个按钮完成,就像C++编译器一样,调试也是,生成.exe调试的,要是没生成,直接调试,它提示请先生成.exe
nanlingcg 2009-04-23
  • 打赏
  • 举报
回复
直接在DEBUG中操作,会是不同,但你如果就那么编译了,再调试结果会一样!
直接在DEBUG中操作,
MOV AX, [1234H] 被解释为MOV AX,DS:[1234H] 直接寻址,即把DS:1234H内存空间里的信息传进AX
MOV AX, 1234H 被解释为MOV AX, 1234H 即立即数传进AX

如果就那么编译了,再调试
MOV AX, [1234H]
MOV AX, 1234H
都被解释为 MOV AX, 1234H 即立即数1234H传进AX

所以我估计你那是生成EXE文件后再调试的。。。
为了避免不必要的错误,在直接寻址时尽量用加段的方式!
niimp2 2009-04-23
  • 打赏
  • 举报
回复
2楼正解
goodider 2009-04-23
  • 打赏
  • 举报
回复
2楼说得对啊。
willflyz 2009-04-23
  • 打赏
  • 举报
回复
寻址方式不同,
MOV AX,[1234H];直接寻址,将DS:[1234H],将数据段1234H为偏移地址的内存单元的值送入寄存器AX
MOV AX,1234H;立即数寻址,直接将1234H送入AX
一个是取内存地址单元中的值,一个是直接取数值
denelf 2009-04-23
  • 打赏
  • 举报
回复
debug中有不同
debug中
[1234H]代表
(DS)<<4+1234H

真正汇编中无不同
mov ax,1234H 和 mov ax,[1234H]相同

你想让它像debug中那样就加段前缀

例如:

mov ax,ds:[1234H]

21,497

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧