|
主题 : : 问一个迷惑不解的[BX]问题 [待解决] |
回复[ 6次 ]
点击[ 388次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2009-10-23 09:38 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-10-22 10:38 |
我是刚学汇编的新手,问个高手们见笑[BX]表示的问题
[BX]到底是具体表示什么?书本上都是说是地址
在我的脑海里一直有两种想法:
一种是:BX在CPU中的寄存器物理编号地址(不是所存储的内容)
一种是:BX中存储的内容是地址,不是数据也不是指令,[BX]应该表示该存储内容对应的地址,
如果MOV AX,[BX] 那么是把BX中的内容(实际是地址信息)对应的内存地址中的具体数据内容传到AX中
不知道我应该怎么样来理解,恳求各位给小弟解释一下! | | |
|
|
|
|
[第1楼]
[ 回复时间:2009-10-23 11:31 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-10-22 10:38 |
mov [di],bx 的具体意思是:
把Bx寄存器的值存储到(以DS首地址为段值)和(以di存储内容为偏移地址)的位置吗? | | |
|
|
|
|
[第2楼]
[ 回复时间:2009-10-29 12:32 ]
[引用]
[回复]
[ top ] | |
荣誉值:307
信誉值:0
注册日期:2009-03-15 23:46 |
正确:
mov [di],bx 是将 BX 的内容传递到以 DI 的内容为偏移地址、DS 的内容为段基址(高16位)的那个字存储单元中去。
对语句 MOV AX,[BX] 的理解也是正确的:是将以 DS 的内容为段基址(高16位)、以 BX 的内容作为偏移量的字存储单元的内容传递到 AX 中。 | | |
|
|
|
|
[第3楼]
[ 回复时间:2009-10-29 12:33 ]
[引用]
[回复]
[ top ] | |
荣誉值:307
信誉值:0
注册日期:2009-03-15 23:46 |
|
|
|
|
|
[第4楼]
[ 回复时间:2009-12-11 13:37 ]
[引用]
[回复]
[ top ] | |
荣誉值:62
信誉值:0
注册日期:2009-12-03 13:14 |
按照LZ的想法
如果MOV AX,[BX] 那么是把BX中的内容(实际是地址信息)对应的内存地址中的具体数据内容传到AX中
乍一看LZ的这句话,我理解为了二级指针
设:
ds=2000h
bx=100h
word ptr ds:bx=3000h
word ptr ds:3000=1234h
word ptr ds:[ds:[bx]]中的值1234h
这样的话BX成了地址ds:bx的指针,而ds:[ds:[bx]]又是立即数1234h内存单元的指针,那么BX就是立即数1234h的二级指针。
但是,mov ax,[bx]其实就是把mov ax,3000h,而不是二级指针。
word ptr[BX]里面的内容是一个字型内存单元的数据,可能是另一个地址,也可能是数据,和具体应用有关。
可能我理解的不对,请大家指正。 | | |
|
|
|
|
[第5楼]
[ 回复时间:2009-12-11 13:46 ]
[引用]
[回复]
[ top ] | |
荣誉值:62
信誉值:0
注册日期:2009-12-03 13:14 |
ds:[ds:[bx]]又是立即数1234h内存单元的指针,写错了
应该是
ds:bx又是立即数1234h内存单元的指针 | | |
|
|
|
|
[第6楼]
[ 回复时间:2009-12-14 16:17 ]
[引用]
[回复]
[ top ] | |
荣誉值:4
信誉值:0
注册日期:2009-11-26 15:08 |
|