cfer 发表于 2011-11-13 09:51:55

mov bx, [0]到底表示什么

书上前面说过,如果【】中是个数字的话编译时会被处理成立即数,所以要想用它来表示内存地址中的数要显式地给出段寄存器,如ds:[]。可是后面又说mov bx, 表示直接寻址,按照前面说的,不应该是立即数寻址吗

z310394543 发表于 2011-11-13 09:57:59

zyp2011_mit 发表于 2011-11-13 10:01:56

0表示偏移地址,而段地址隐藏在ds中~

ArcherJhon 发表于 2011-11-14 15:16:36

我不明白- -

keiv0717 发表于 2011-11-14 15:41:07

MOV BX ,

指:DS段地址中旳偏移地址旳数。 放入BX中。

zhanshengkui 发表于 2011-11-19 15:41:25

好象今天听到了,mov bx,是特殊地,在debug是直接寻址.而mov bx,就是立即数寻址

cfer 发表于 2011-11-19 18:23:11

zhanshengkui 发表于 2011-11-19 15:41 static/image/common/back.gif
好象今天听到了,mov bx,是特殊地,在debug是直接寻址.而mov bx,就是立即数寻址

我也听到小甲鱼这么讲过,可是编了个实验性的程序发现没什么特殊的,编译的时候还是处理成立即数0

ztc123 发表于 2011-11-19 22:43:04

我只听说 MOV BX,,表示默认DS段地址的第0和第1位的数放在BX中。

Mr.HO 发表于 2011-11-20 02:09:40

-D DS:0 的字数据放入BX寄存器

licker 发表于 2011-11-20 10:22:46

本帖最后由 licker 于 2011-11-20 10:29 编辑

比如在内存中:


0A010B 0F14A5C6ABCCD01A11BCDDCEF1
00010203040506070809ABCDEF
比如段地址是:DS
上面红色的是单元编号,蓝色的是数据。
mov bx,
意思是说:将DS: 0号单元的数据放入BX寄存器中。因为是16位寄存器,所以放入BX的数据就是:010A
这样应该容易理解了吧。。

补充说明一下:mov bx, <------这个表示方式,在这个指令中段地址一定是:DS,里面的0为偏移地址;方式为:立即寻址

逗留者me 发表于 2011-11-22 15:51:03

cfer 发表于 2011-11-19 18:23 static/image/common/back.gif
我也听到小甲鱼这么讲过,可是编了个实验性的程序发现没什么特殊的,编译的时候还是处理成立即数0

那是因为ds段中0的位置指的就是0。。。若是其他数,就不会显示0了。。。可用debugd看一下内存单元中存放的是什么

cfer 发表于 2011-11-22 22:39:19

逗留者me 发表于 2011-11-22 15:51 static/image/common/back.gif
那是因为ds段中0的位置指的就是0。。。若是其他数,就不会显示0了。。。可用debugd看一下内存单元中存放 ...

其实在debug中用u命令看反汇编指令就行了,发现还是mov ax, 汇编成机器码再反汇编出来确实是mov ax, 0。我也试验过了,把ds:位置放别的数,还是把0给了ax。
页: [1]
查看完整版本: mov bx, [0]到底表示什么