社区
汇编语言
帖子详情
MOV AX, [1234H]和MOV AX, 1234H 有何不同?
zhangwuji156
2009-04-23 04:18:40
我在调试下看,结果都是把
AX改成1234了呀
...全文
4766
13
打赏
收藏
MOV AX, [1234H]和MOV AX, 1234H 有何不同?
我在调试下看,结果都是把 AX改成1234了呀
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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]
MOV
AX
,BX 与
MOV
AX
,[BX] 区别
<1>
MOV
AX
,BX 假设
AX
= 2022H,BX = 2099H,则在指令
MOV
AX
,BX执行之后,
AX
= 2099H,BX = 2099H <2>
MOV
AX
,[BX] 假设
AX
= 2022H, BX= 2099H,DS = 2000H, 可以算出物理地址 PA = DS * 10H + BX= 22099H 如果在指令执行之前,22099H 中存储的数据为A0H,2209AH中...
MOV
AX
,BX和
MOV
AX
,[BX]的区别
MOV
AX
,BX是把BX里的内容给
AX
MOV
AX
,[BX]是把BX里的内容作为地址,再把这个地址里的内容给
AX
例如 BX=0x1000,而0x1000处储存的内容是0001H,那么
MOV
AX
,[BX]就是相当于
MOV
AX
,0001H
用编译器写的
mov
ax
,[0]指令,执行的实际上是
mov
ax
,0
学习汇编,不像学习c,c++,java等等一样,可以一开始就来个Hello world,得先熟悉相关寄存器,指令,在跟着小甲鱼的教学中,说用编译器写指令
mov
ax
,[0]实际上,执行的是
mov
ax
,0 感觉很奇怪,之前在debug上执行
mov
ax
,[0],是将段地址为ds,偏移地址为0的物理地址的内存单元处的数据传送给
ax
,所以就自己测试了下,首先用debug看看: 顺便说一下,de
MOV
AX
,DATA
MOV
DS,
AX
MOV
AX
,DATA
MOV
DS,
AX
其实就是把data(数据) 转到 DS 数据段寄存器,让数据段指向正确的位置。
MOV
AX
,DATA起到过渡作用
计组寻址方式例题
设(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21201H)=xx;(21200H)=4CH,(21202H)=B7H,(21203H)=65H,试说明下列各条指令执行完后
AX
寄存器中的内容是多少? ①
MOV
AX
,1200H ②
MOV
AX
,BX ③
MOV
AX
,[12...
汇编语言
21,497
社区成员
41,618
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章