遒羽 发表于 2013-2-4 20:45:13

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

assume cs:code
data segment
   ?
data ends
code segment
start:   mov ax,dtat
          mov ds,
          mov bx,0
          jmp word ptr
code ends
end start
王爽《汇编语言》9.1检测题若要使jmp指令执行后,CS:IP指向程序的第一条指令,在data段中应该定义哪些数据?
答案这样解释:
jmp word ptr 为段内转移,要CS:IP指向程序的第一条指令,应设置ds:的字单元(2个字节)存放数据应为0,则(ip)=ds:=0

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

遒羽 发表于 2013-2-4 22:02:00

想通了,assume cs:code
data segment
   ?
data ends
code segment
start: mov ax,dtat
         mov ds,ax
         mov bx,0
         jmp word ptr
code ends
end start

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





NGtailang 发表于 2013-2-8 13:06:57

无师自通了。很好啊

ai979520253 发表于 2013-2-10 00:44:49

不错,其实很多问题,我们只要多用心,就会迎刃而解的

隐逸侠甘凤池 发表于 2013-2-17 21:19:45

俺也不知道
页: [1]
查看完整版本: 请教jmp段内转移的一道习题