首页
社区
课程
招聘
刚才看中山大学的视频又发现了些问题[求助]
发表于: 2007-3-21 07:40 3405

刚才看中山大学的视频又发现了些问题[求助]

2007-3-21 07:40
3405
,请大家给解答下,请看下面指令

mov bx, 6*2
mov si, 5
mov di, offset [bx][si]
inc [di]

老师讲解说这是错的,原因是[bx][si]的值不确定,我就不懂了,这怎么不确定了,bx是12,si是5啊,都告诉了啊,还有在汇编了好像没有*这个东西吧,能这样表示乘法吗?

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
怎么没人理我
2007-3-21 18:25
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
3
想想如果你写编译器,你会怎么解释那句话

OFFSET是伪指令,编译器遇到这个指令时,会寻找其操作数的地址
2007-3-21 18:44
0
雪    币: 200
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
乘法指令mul

要访问数组,不能用这样的下标形式
2007-3-21 21:30
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
还是不太明白既然 bx和si的值都知道了,只需要把
ds*10h+bx+si不就找到地址了吗?怎么不确定了?
苦茶兄或者熊斑竹可不可以再说说,万分感谢!
2007-3-21 21:40
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
6
或者这么解释吧

OFFSET指令可以简单的等价于LEA指令

将mov di, offset [bx][si]翻译成对应的X86指令就是

LEA DI,[BX*SI]

CPU不允许这样的寻址方式

只允许如[reg1 * x + reg2]

x和reg2都是可以缺省的

其实你也不必理解这么多。。。编译器是别人写的,所以你只能按照别人的规则。CPU也是别人做的。。所以你只能接受既定的规则
2007-3-21 21:55
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
有点懂了,谢谢
2007-3-22 07:31
0
游客
登录 | 注册 方可回帖
返回
//