汇编语言中[BX]表示什么77
发布网友
发布时间:2023-11-04 14:26
我来回答
共4个回答
热心网友
时间:2024-03-15 18:43
bx代表一个寄存器,[bx]代表一个内存地址,段地址默认在ds中,偏移地址在bx中,即ds:bx。一般[bx]做变量使用。有什么问题加q讨论,我也是汇编爱好者。qq:7234801
热心网友
时间:2024-03-15 18:40
mov ax, [bx]
[bx]这种方式叫做寄存器间接寻址方式。
即把[bx]指向的地址中的内容,送入ax寄存器。
[bx]的计算:
物理地址 = (ds) * 16d + (bx)
如:ds=0770H, bx=10H
物理地址=0770H*10H+10H = 07710H ,如果07710,07711这两个字节中的内容是5678,则执行后ax中的内容即是:7856H
热心网友
时间:2024-03-15 18:46
您好,很高兴为您解答。
[bx]表示的是一个偏移地址。
比如你ds=1000H的话。
mov bx,1
那么 mov ax,[bx]
那么他就会寻找 段地址1000,偏移地址为0001H 的数据放入到ax中
热心网友
时间:2024-03-15 18:41
强制属性操作符
在程序中,我们有时需要对同一个存储单元以不同的属性来访问,或对一些不确定的存储属性需要显式指定等,这时,我们就需要强制属性操作符ptr。该操作符的作用有点象c语言中的类型强制方法。
对于指令:mov
[bx],
1h,其目标操作数[bx]是寄存器间接寻址方式,它指向一个存储单元。在作传送操作时,是把“1h”扩展成8位作字节传送,还是扩展成16位作字传送呢?这就使该指令具有二义性,因为[bx]指向的存储单元可以字节或字的首地址。含有该指令的程序在汇编时,可能会产生警告或出错信息。
为了使指令中存储单元操作数具有明确的属性,我们可以使用强制属性操作符ptr。其一般格式为:
数据类型
ptr
地址表达式
其中:数据类型是前面所学的各种数据类型,常用的数据类型有:byte、word、dword、near和far等。
为了明确指令中存储单元的属性,可把指令“mov
[bx],
1h”可改写成:
mov
byte
ptr
[bx],
1h
或
mov
word
ptr
[bx],
1h
在指令中用操作符ptr强制后,不管其后的地址表达式原数据类型是什么,在本指令中就以ptr前面的类型为准。该强制属性只在本指令有效,是一种临时性的属性,它不会改变原内存单元的定义属性。
例如:
w1
dw
1234h,
5678h
b1
db
2
db
5
d1
dd
23456789h
…
mov
ax,
word
ptr
b1
;把b1开始的二个字节拼接成一个字,执行后,(ax)=0502h
mov
bh,
byte
ptr
w1
;把字w1的低字节传送给bh,执行后,(bh)=34h
mov
ch,
byte
ptr
w1+1
;把字w1的高字节传送给ch,执行后,(ch)=12h
mov
word
ptr
d1,
12h
;把双字d1的低字修改成0012h,执行后,(d1)=23450012h
上面指令中的强制属性是临时属性,它不能改变这些变量在定义时的永久属性。