. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  9.1第二题的疑问  [待解决] 回复[ 7次 ]   点击[ 473次 ]  
oddx
[帖 主]   [ 发表时间:2011-06-13 07:36 ]   [引用]   [回复]   [ top ] 
荣誉值:3
信誉值:0
注册日期:2010-08-24 03:46
检测点9.1(第170页)

----------------------

 

(1)若要使jmp指令执行后,CS:IP指向程序的第一条指令,在data段中应该定义哪些数据?

 

完整程序如下:

assume cs:code,ds:data

 

data segment

    db 0,0,0

data ends

 

code segment

start:  mov ax,data

    mov ds,ax

    mov bx,0

    jmp word ptr [bx+1]   ;段内间接转移

 

code ends

end start

 

;解题理由:为了使IP的值经跳转后变为0,则需保证ds:[bx+1]处的字型单元数据为0000H,

;所以定义3个字节型数据0就符合“应该”的要求

 

 

(2)补全程序,使jmp指令执行后,CS:IP指向程序的第一条指令。

 

完整程序如下:

assume cs:code,ds:data

 

data segment

    dd 12345678h

data ends

 

code segment

start:  mov ax,data

    mov ds,ax

    mov bx,0

    mov [bx],bx      ;源操作数bx为所填内容

    mov [bx+2],cs    ;源操作数cs为所填内容

    jmp dword ptr ds:[0]

 

code ends

end start

 

; 我的问题是 数据段里定义的是双字啊。

;mov ax,data  双字就是32字节,为什么可以送入到ax  ,ax不是才16位的吗?

这样不会错误吗?

希望大家指点一下啊,先谢过了啊。
licker
[第1楼]   [ 回复时间:2011-07-27 11:45 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-05-08 00:01
(1)我认为dw更好...
(2)mov ax,data data为段地址...你误会了...
chinatree
[第2楼]   [ 回复时间:2011-07-27 16:38 ]   [引用]   [回复]   [ top ] 
荣誉值:118
信誉值:0
注册日期:2011-07-07 22:59
你们晕了呀,Data是一个段的段名,首先把它送给Ds是把它的段地址送给Ds,记住是地址,就只是一个16位的指针,而不是这个地址的内容12345678h,所以ax是能放的下的
zzm321990
[第3楼]   [ 回复时间:2011-11-15 11:51 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-10-23 13:50
顶二楼!
sunnysong14
[第4楼]   [ 回复时间:2011-12-08 18:33 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-12-06 11:00
2楼说的对
chunchaowei1983
[第5楼]   [ 回复时间:2012-07-22 14:41 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-06-24 17:08
楼主不要误导大家好不好!! 2个字怎么来的32字节??? 2个字就4个字节吧
chunchaowei1983
[第6楼]   [ 回复时间:2012-07-22 14:43 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-06-24 17:08
你把比特和字节搞混了吧! 不要误导大家!
walykyy
[第7楼]   [ 回复时间:2012-07-23 10:19 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-02-21 22:36
我认为(1)db 最好吧,dw 定义的是字,jmp word ptr [bx+1] 很明显是从第2个字节开始算的
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved