| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 965 人关注过本帖
标题:一道题,挺着急的。
只看楼主 加入收藏
outsider_scu
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:430
专家分:1333
注 册:2010-10-21
结帖率:100%
收藏
已结贴  问题点数:100 回复次数:13 
一道题,挺着急的。
假设(DS)=0B00H,(BX)=0210H,对于指令MOV  DS:120H[BX],AL,其目的操作数的物理地址为多少?
这道题,DS:120H[BX],是基址寻址吗?为什么MOV  DS:120H[BX],AL,在DEBUG中有语病?

[ 本帖最后由 outsider_scu 于 2010-11-27 13:27 编辑 ]
搜索更多相关主题的帖子: 物理 
2010-11-27 13:26
duliming
Rank: 2
来 自:辽宁沈阳
等 级:论坛游民
威 望:1
帖 子:13
专家分:79
注 册:2010-11-27
收藏
得分:50 
MOV 120H[BX],AL
DS寄存器是默认的,不用写出来的。写出来也不会报错。
物理地址是:0B00H*10H+0210H=0B210H
MOV 120[BX],AL 是基址寻址。

MOV [BX],AL   ---寄存器间接寻址
MOV [BX+120H]----基址寻址

我现在也在学汇编。大家互相交流。

[ 本帖最后由 duliming 于 2010-11-27 14:00 编辑 ]
2010-11-27 13:58
outsider_scu
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:430
专家分:1333
注 册:2010-10-21
收藏
得分:0 
以下是引用duliming在2010-11-27 13:58:57的发言:

MOV 120H,AL
DS寄存器是默认的,不用写出来的。写出来也不会报错。
物理地址是:0B00H*10H+0210H=0B210H
MOV 120,AL 是基址寻址。

MOV ,AL   ---寄存器间接寻址
MOV ----基址寻址

我现在也在学汇编。大家互相交流。
物理地址是:0B00H*10H+0210H=0B210H
这个不是应该先加上120H吗?
还有,基址寻址是不是立即数在前和在后都一样?比如 mov 120H[BX],AL和MOV [BX]120H,AL是一样的?
还有一个,基址变址寻址可以不要立即数么?比如:ADD DL,[BX][DI]是么?或者这不是基址变址寻址?还是寄存器间接寻址?

编程的道路上何其孤独!
2010-11-27 15:21
duliming
Rank: 2
来 自:辽宁沈阳
等 级:论坛游民
威 望:1
帖 子:13
专家分:79
注 册:2010-11-27
收藏
得分:0 
   哦。对不起。算错啦。呵呵。
应该是:OB00H*10H+0210+120H=0B330H
基址寻址方式我认为是:BX/BP +立即数。
变址寻址方式是:SI/DI+立即数。
而基址变址寻址则是两者合起来。可以没有立即数。就是你所说的:ADD DL,[BX][DI]
寄存器间接寻址是[BX/BP/DI/SI]没有立即数相加。
2010-11-27 16:56
outsider_scu
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:430
专家分:1333
注 册:2010-10-21
收藏
得分:0 
回复 4楼 duliming
那MOV  DS:120H[BX],AL
这个立即数怎么放在前面了。?

编程的道路上何其孤独!
2010-11-27 18:25
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:50 
以下是引用outsider_scu在2010-11-27 18:25:10的发言:

那MOV  DS:120H,AL
这个立即数怎么放在前面了。?



书上应该讲过 一种表示方式 等价于[BX+120H]

[ 本帖最后由 zklhp 于 2010-11-27 20:20 编辑 ]
2010-11-27 20:18
outsider_scu
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:430
专家分:1333
注 册:2010-10-21
收藏
得分:0 
回复 6楼 zklhp
谢咯。
我的书上确实没有这个。

编程的道路上何其孤独!
2010-11-27 20:24
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
用D1[i]来访问一维数组D1的第i个元素,它的寻址有一个自由度,用D2[i][j]来访问二维数组D2的第i行、第j列的元素,其寻址有二个自由度。多一个可变的量,其寻址方式的灵活度也就相应提高了。

相对基址加变址寻址方式有多种等价的书写方式,下面的书写格式都是正确的,并且其寻址含义也是一致的。

MOV AX, [BX+SI+1000H]   MOV AX, 1000H[BX+SI]
MOV AX, 1000H[BX][SI]    MOV AX, 1000H[SI][BX]

但书写格式BX [1000+SI]和SI[1000H+BX]等是错误的,即所用寄存器不能在“[“,”]”之外,该限制对寄存器相对寻址方式的书写也同样起作用。

相对基址加变址寻址方式是以上7种寻址方式中最复杂的一种寻址方式,它可变形为其它类型的存储器寻址方式。表3.1列举出该寻址方式与其它寻址方式之间的变形关系。

表3.1 相对基址加变址寻址方式与其它寻址方式之间的变形关系

源操作数
 指令的变形
 源操作数的寻址方式
 
只有偏移量
 MOV AX, [100H]
 直接寻址方式
 
只有一个寄存器
 MOV AX, [BX] 或 MOV AX, [SI]
 寄存器间接寻址方式
 
有一个寄存器和偏移量
 MOV AX, [BX+100H] 或 MOV AX, [SI+100H]
 寄存器相对寻址方式
 
有二个寄存器
 MOV AX, [BX+SI]
 基址加变址寻址方式
 
有二个寄存器和偏移量
 MOV AX, [BX+SI+100H]
 相对基址加变址寻址方式
2010-11-27 20:28
outsider_scu
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:430
专家分:1333
注 册:2010-10-21
收藏
得分:0 
牛叉

编程的道路上何其孤独!
2010-11-28 10:36
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
学任何东西 只看一本书就不大好。。 说书上没有 本身就有问题 呵呵
2010-11-28 11:05
快速回复:一道题,挺着急的。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017524 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved