. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  不懂啊``好不容易学到这了``  [待解决] 回复[ 6次 ]   点击[ 665次 ]  
xuan214
[帖 主]   [ 发表时间:2009-03-17 00:51 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:4
注册日期:2009-02-22 23:57
第9章检测题9.1 (1)
assume cs:code
data segment
   ?
data ends
code segment
start:mov ax,data
mov ds,ax
mov bx,0
jmp word ptr [bx+1]
code ends
end start
若要使程序中的JMP指令执行后,CS:IP 指向程序的第一条指令,在data 段中应该定义哪些数据?

            

  这题我不懂啊``他们说填 db 0,0,0  我不懂 为什么要填3个0? 希望有人能详细的解答出来``我也看过别的帖子`说要使[bx+1]=ip=0 就行了``那为什么要填3个0呢`他定义的是字 2个0就好了丫``
 他们
mywiil
[第1楼]   [ 回复时间:2009-03-18 10:24 ]   [引用]   [回复]   [ top ] 
荣誉值:61
信誉值:4
注册日期:2008-10-14 16:29
这题我不懂啊``他们说填 db 0,0,0  我不懂 为什么要填3个0? 希望有人能详细的解答出来``我也看过别的帖子`说要使[bx+1]=ip=0 就行了``那为什么要填3个0呢`他定义的是字 2个0就好了丫`` 
=============
“使[bx+1]=ip=0 就行了”的理解是对的。只要保证第2、3个位置上是0就行了。更兼容的定义数据形式我觉得应该这么写 db *,0,0,*,...
当然,这么写不是真的答案,取其中的一种就是正确的。你说的“他们”就是取了一种。

楼主之所以不懂,是因为没有理解jmp指令通过内存空间跳转的知识。我觉得书中说的很清楚,楼主不妨在多看两遍这一章的内容,仔细看,仔细想,这个问题没有弯子绕的。
xuan214
[第2楼]   [ 回复时间:2009-03-18 14:39 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:4
注册日期:2009-02-22 23:57
我明白了`这题的偏移地址是[bx+1][bx+2] 因为是word 而在内存中是以0算起的`所以第一个数不管他是什么都可以 只要第1 和第2个是0就好了(起始地址以0算起) 想了2天 =.=
xueyugaoyuan
[第3楼]   [ 回复时间:2012-08-20 22:18 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-08-14 17:57
O(∩_∩)O哈哈哈~ 不容易啊 ,明白了就好。
sz_hgc
[第4楼]   [ 回复时间:2012-08-31 02:48 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-07-21 21:21
我明白了`这题的偏移地址是[bx+1][bx+2] 因为是word 而在内存中是以0算起的`所以第一个数不管他是什么都可以 只要第1 和第2个是0就好了(起始地址以0算起) 想了2天 =.=
------------------
回复: 呵呵
whaition
[第5楼]   [ 回复时间:2012-09-26 11:34 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-09-26 11:24
db 3 dup(0) 也是可以的
qq1027798947
[第6楼]   [ 回复时间:2012-12-25 13:21 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-12-25 12:34
这题只能定义:3个0,,只定义两个是不可以的。。
因为:jmp word prt [bx+1}
     ip的值是从第2个0开始取,,
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved