. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  哪位老师给指点一下啊  [待解决] 回复[ 6次 ]   点击[ 572次 ]  
caoheqian
[帖 主]   [ 发表时间:2007-11-14 19:09 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2007-09-30 21:53
对于如下程序:  
    assume cs:code  
    data segment  
    ?  
    data ends  
    code segment  
    start:mov ax,data  
    mov ds,ax  
    mov bx,0  
    jmp dword ptr [bx+2]  
    code ends  
    end start  
    若在指令jmp dword ptr [bx+2]执行后,要使程序再次从第一条指令开始执行,下列对data段中的数据的定义更合理的是______。  
 1、 dd 0,0,0  
 2、 dw 0,0,0  
 3、 dw 0,0,seg code   
 4、 dw 0,0,offset code   


//--------------------------------------
我认为1和2都是正解啊,说明如下:
 1、 dd 0,0,0 
定义了12个字节,小于16
2、 dw 0,0,0 
定义了6个字节,小于16

由题意可知:ds=cs,
要使jmp dword ptr [bx+2] =0,则 cs=0,ip=0
我觉得1和2都可以,实在不知道应该选哪个了。
请哪位老师给指点一二吧。
happy
[第1楼]   [ 回复时间:2007-11-14 19:37 ]   [引用]   [回复]   [ top ] 
荣誉值:32
信誉值:0
注册日期:2007-07-14 19:06
“由题意可知:ds=cs,”为什么呢?怎么样得出的这个结论呢?
“要使jmp dword ptr [bx+2] =0,则 cs=0,ip=0”这个说法也不对吧?
要想让程序再次从第一条指令开始执行,那么第一条指令的段地址和偏移地址是多少呢?这个首先的弄清楚。它的段地址不可能是0吧?
caoheqian
[第2楼]   [ 回复时间:2007-11-15 20:14 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2007-09-30 21:53
第4个选项吗?
caoheqian
[第3楼]   [ 回复时间:2007-11-15 20:15 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2007-09-30 21:53
ip=0
cs=offset code?
cook702
[第4楼]   [ 回复时间:2007-11-18 23:52 ]   [引用]   [回复]   [ top ] 
荣誉值:40
信誉值:2
注册日期:2007-06-26 11:53
这个程序楼主完全可以向debug请教吗。
把这四个答案都试演一次,结果不就一清二楚了吗!
liumin
[第5楼]   [ 回复时间:2007-11-20 17:05 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2007-10-21 22:53
答案是3,o(∩_∩)o...哈哈
caoheqian
[第6楼]   [ 回复时间:2007-11-20 21:34 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2007-09-30 21:53
为什么,讲讲道理啊。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved