鱼C论坛

 找回密码
 立即注册
查看: 1830|回复: 4

请教jmp段内转移的一道习题

[复制链接]
发表于 2013-2-4 20:45:13 | 显示全部楼层 |阅读模式
2鱼币
  1. assume cs:code
  2. data segment
  3.      ?
  4. data ends
  5. code segment
  6. start:   mov ax,dtat
  7.           mov ds,
  8.           mov bx,0
  9.           jmp word ptr [bx+1]
  10. code ends
  11. end start
复制代码
王爽《汇编语言》9.1检测题若要使jmp指令执行后,CS:IP指向程序的第一条指令,在data段中应该定义哪些数据?
答案这样解释:
jmp word ptr [bx+1]为段内转移,要CS:IP指向程序的第一条指令,应设置ds:[bx+1]的字单元(2个字节)存放数据应为0,则(ip)=ds:[bx+1]=0

对于红色划线部分我一直想不通它的关系,请教一下,谢谢!

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2013-2-4 22:02:00 | 显示全部楼层
想通了,
  1. assume cs:code
  2. data segment
  3.    ?
  4. data ends
  5. code segment
  6.   start: mov ax,dtat
  7.          mov ds,ax
  8.          mov bx,0
  9.          jmp word ptr [bx+1]
  10. code ends
  11. end start
复制代码


jmp word ptr [bx+1]为段内转移,要CS:IP指向程序的第一条指令,而第一条指令地址即为ds:0,应设置ds:[bx+1]指向ds:0,即:(ip)=ds:[bx+1]=0,而内存单元的值做为地址用,所以就是将偏移地址所指的的字单元(2个字节)存放数据应为0。
“只要ds:[bx+1]起始地址的两个字节为0就可以了”,所以会有多个答案:
答案①db 3 dup (0)    放3个字节的0
答案②dw 2 dup (0)    放4个字节的0
答案③dd 0            放4个字节的0
只要让ds:[bx+1]起始地址的字单元为0就可以了,让下一地址的单元内存为0也没关系。






想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-2-8 13:06:57 | 显示全部楼层
无师自通了。很好啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-2-10 00:44:49 | 显示全部楼层
不错,其实很多问题,我们只要多用心,就会迎刃而解的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-2-17 21:19:45 | 显示全部楼层
俺也不知道
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-12 18:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表