社区
汇编语言
帖子详情
mov bx,ax和mov [bx],ax的不同
qdxby
2002-05-04 06:14:07
其实也就是我不明白,bx和[bx]的不同,多谢!
...全文
4034
18
打赏
收藏
mov bx,ax和mov [bx],ax的不同
其实也就是我不明白,bx和[bx]的不同,多谢!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ydaye
2002-05-12
打赏
举报
回复
哦,原来如此,长知识了,多谢多谢。
wowocock
2002-05-12
打赏
举报
回复
大家都没错,在8086下只有BX,BP,SI,DI可以做变址,但从386以后除了ESP外所有的寄存器都可以做变址寄存器,包括ESP在内的所有寄存其都可以做基址寄存器
这是386强大方便的地方,所以大家学汇编不要拘泥于以前8086,而多研究386以后的保护模式,毕竟DOS已经淘汰了。
ydaye
2002-05-11
打赏
举报
回复
呵呵,终于知道啦?
archer101
2002-05-11
打赏
举报
回复
错了,错了,错了。。。。。。。。。。。。。
这个指令不合法,因为ax不可以用作寄存器间接寻址方式,但是bx,bp,si
和di 可以
archer101
2002-05-11
打赏
举报
回复
to ydaye(ydaye):
这个指令是合法的,你说通不过可能是因为你在debug下直接汇编,这样是会出现error的。mov [bx],ax bx寄存器里存放的不是绝对地址,而是相对地址,就如楼上的说的,[bx]这种引用方法叫寄存器间接寻址方式。
XIAOBUDIAN2
2002-05-11
打赏
举报
回复
bx 是做什么用的呢?
[BX]又是做什么用的呢!
MOV [BX],AX;BX是可以用做寄存器间接寻址的!
自己解决是最好的?
小树
ydaye
2002-05-10
打赏
举报
回复
但是非常抱歉,[ax]的写法是非法的,ax不能作为指针寄存器。
archer101
2002-05-10
打赏
举报
回复
1
mov ax,bx;就是将bx寄存器里的内容赋给ax寄存器,比如原先bx寄存器内的值时4444h,执行该指令后,ax寄存器里的值就是4444h。
mov [ax],bx;其实是可以把ax寄存器看作一个指针,ax寄存器的内容看作是一个地址值,[ax]其实是该地址指向的内存单元。该指令是把bx寄存器里的内容赋给一个内存单元{由[ax]指向}。当然,ax寄存器里的内容不是该单元的实际地址,而是偏移地址。实际地址是ax与dx寄存器里的值相加的结
果(dx:ax)。
比如,dx=1000h,ax=123h,bx=999h,执行该指令后,bx的值赋给了dx:ax指向的内存单元。即地址值为1123h的内存单元值变为了999h.
wowocock
2002-05-07
打赏
举报
回复
建议你自己跟踪一下,DEBUG执行看看就很清楚了,很多问题其实只要自己时间一下就很简单了。
giantzz
2002-05-07
打赏
举报
回复
建议你看看书
qdxby
2002-05-06
打赏
举报
回复
那就只有一句指令
mov ax,bx
那么[ax]是什么呀
wowocock
2002-05-06
打赏
举报
回复
对,就那么简单。
Lesily
2002-05-05
打赏
举报
回复
前一种是寄存器寻址方式。后一种是寄存器间接寻址方式。
自己找本好书看看啦!说的很清楚。
书名:《IBM-PC 汇编语言程序设计》
沈美明 温冬婵 编著
出版社:清华大学出版社
书号:ISBN 7-302-00829-9
qdxby
2002-05-05
打赏
举报
回复
lea bx,buffer
则bx中装的是buffer的偏移量,[bx]中是该偏移地址中存放的内容
是这样理解吗
e_board
2002-05-05
打赏
举报
回复
机器猫说的很对;我非长赞同。
wowocock
2002-05-05
打赏
举报
回复
mov bx,ax,把AX的值赋予BX比如AX=1234,BX=1000那么执行后AX=BX=1234
mov [bx],ax把AX的值赋予BX所指向的内存单元比如AX=1234,BX=1000
DS:1000内容为1111那么执行后AX=1234,BX=1000,DS:1000的内容为1234
就那么简单
atlantis13579
2002-05-04
打赏
举报
回复
前一个是bx内容,后一个是bx指向的地址
giantzz
2002-05-04
打赏
举报
回复
单就问题看,是寻址方式的不同!
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
,
BX
和
MOV
AX
,[
BX
] 有什么区别
MOV
AX
,
BX
是将寄存器
BX
中的值传送到寄存器
AX
中,而
MOV
AX
, [
BX
]是将内存地址为
BX
处的数据传送到寄存器
AX
中
汇编 第五章 【
bx
】和loop指令
第五章 【
bx
】和loop指令 5.1 [
bx
] 因为在debug中使用
mov
ax
,[0]:代表的是偏移地址,而在asm文件中写的编译后却变成了数字
mov
ax
,0 相当与把0给了
ax
,而不是 ds:0,所以出现了
bx
。要写成这样才能实现:
mov
ax
,ds:[0] 1.和[0]类似,[0]表示内存单元,它的偏移地址是0; 2.[
bx
]同样也表示一个内存单元,它的段地址在DS中 它的偏移地址在
bx
中,至于是取字还是取字节, 要看他放入的寄存器是
汇编语言王爽第四部分(内存单元)
内存单元 1,内存单元的地址 2,内存单元的长度
mov
ax
,2000h
mov
ds,
ax
;段地址设为2000
mov
bx
,1000h偏移地址从1000开始
mov
ax
,[
bx
];将21000h的字转移到
ax
中 add
bx
,2;偏移地址+2
mov
[
bx
],
ax
;将
ax
中的字转移到21002h中 add
bx
,2;偏移地址+2
mov
[
bx
],
ax
;将
ax
中的字转移到21004h中...
汇编语言
21,496
社区成员
41,617
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章