. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  问一个迷惑不解的[BX]问题  [待解决] 回复[ 6次 ]   点击[ 388次 ]  
cxmz
[帖 主]   [ 发表时间:2009-10-23 09:38 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-10-22 10:38
我是刚学汇编的新手,问个高手们见笑[BX]表示的问题
[BX]到底是具体表示什么?书本上都是说是地址
在我的脑海里一直有两种想法:
一种是:BX在CPU中的寄存器物理编号地址(不是所存储的内容)
一种是:BX中存储的内容是地址,不是数据也不是指令,[BX]应该表示该存储内容对应的地址,
      如果MOV AX,[BX] 那么是把BX中的内容(实际是地址信息)对应的内存地址中的具体数据内容传到AX中
不知道我应该怎么样来理解,恳求各位给小弟解释一下!
cxmz
[第1楼]   [ 回复时间:2009-10-23 11:31 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-10-22 10:38
mov [di],bx 的具体意思是:
   把Bx寄存器的值存储到(以DS首地址为段值)和(以di存储内容为偏移地址)的位置吗?
scuzg
[第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 中。
scuzg
[第3楼]   [ 回复时间:2009-10-29 12:33 ]   [引用]   [回复]   [ top ] 
荣誉值:307
信誉值:0
注册日期:2009-03-15 23:46
字存储单元就是地址连续的两个字节单元。
versaariel
[第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]里面的内容是一个字型内存单元的数据,可能是另一个地址,也可能是数据,和具体应用有关。
可能我理解的不对,请大家指正。
versaariel
[第5楼]   [ 回复时间:2009-12-11 13:46 ]   [引用]   [回复]   [ top ] 
荣誉值:62
信誉值:0
注册日期:2009-12-03 13:14
ds:[ds:[bx]]又是立即数1234h内存单元的指针,写错了
应该是
ds:bx又是立即数1234h内存单元的指针
belial
[第6楼]   [ 回复时间:2009-12-14 16:17 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:0
注册日期:2009-11-26 15:08
我个人认为应该是这样理解力的!1
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved