. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->基础知识
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  jmp跳转指针如何变化  [待解决] 回复[ 7次 ]   点击[ 517次 ]  
tianyu_lianxin
[帖 主]   [ 发表时间:2008-12-30 09:08 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-12-12 12:10
程序是这样的:
mov ax,8
jmp ax
mov ax,0
mov bx,ax
jmp bx
不知道指针IP是怎么变化的啊,请各位高手帮帮忙!
mouse
[第1楼]   [ 回复时间:2008-12-30 11:20 ]   [引用]   [回复]   [ top ] 
荣誉值:472
信誉值:12
注册日期:2007-10-16 15:34
这个问题和检测点2.3是一样的。所以看了下楼主的博客..

[  tianyu_lianxin   发表于  2008-12-23 21:02  ] 
有点理解了,是程序执行到JMP AX后,有一次改变,但由于执行了JMP AX ,IP又被改变了一次。
------------
这是楼主的回答,不过好像楼主只是“得过且过”了,没有研究这个问题,在知道了这个问题一周后依然没有明白其中的知识而向下学习了。

这个知识点是比较简单的,根据书中的介绍,cpu每读入一条指令后ip就会自动增加,指向下一条指令。比如检测题2.3的答案是4次修改ip,其中三次修改就是这个原因,而第四次是因为jmp指令的特性而更改了一次ip。
这个题同理。
tianyu_lianxin
[第2楼]   [ 回复时间:2009-01-04 10:15 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-12-12 12:10
说的是,当时是有点理解,但是有点不是十分肯定,看了论坛他们的解释又有点乱。
你看我现在理解的对不对啊:
指针初始化,改变一次,也就是指向mov ax,8
执行mov ax,8 改变一次,指针指向jmp ax
执行jmp ax 改变两次,指针指向mov ax,0 ,由于jmp是跳转指令所以指针改为指向mov bx,ax
mov ax,0 
执行mov bx,ax 改变一次,指针指向jmp bx
执行jmp bx 改变两次,指针指向下一条指令,由于jmp是跳转指令所以指针改为指向mov bx,ax
zcouyangpeng
[第3楼]   [ 回复时间:2009-01-04 21:52 ]   [引用]   [回复]   [ top ] 
荣誉值:35
信誉值:44
注册日期:2008-09-03 21:36
呵呵 楼主理解也没错

mov ax,8   JMP AX

执行 mov ax,8后

cpu 指向 JMP AX

执行JMP AX=debug中(RIP)

cpu从cs:8处读取指令
maxm
[第4楼]   [ 回复时间:2009-02-17 16:54 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:4
注册日期:2009-01-15 22:41
cpu 执行过程:
1. (ip)= (ip) + 当前读入指令缓冲寄存器的指令的长度
2. 执行读入指令缓冲寄存器的指令
yangling716
[第5楼]   [ 回复时间:2009-03-05 16:26 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:0
注册日期:2008-08-19 14:12
-a
1374:0100 mov ax,8
1374:0103 jmp ax
1374:0105 mov ax,0
1374:0108 mov bx,ax
1374:010A jmp bx
1374:010C
-t

AX=0008  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=1374  ES=1374  SS=1374  CS=1374  IP=0103   NV UP EI PL NZ NA PO NC
1374:0103 FFE0          JMP     AX
-t

AX=0008  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=1374  ES=1374  SS=1374  CS=1374  IP=0008   NV UP EI PL NZ NA PO NC
1374:0008 1DF04F        SBB     AX,4FF0
-t

AX=B018  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=1374  ES=1374  SS=1374  CS=1374  IP=000B   NV UP EI NG NZ NA PE CY
1374:000B 03D8          ADD     BX,AX
-t

AX=B018  BX=B018  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=1374  ES=1374  SS=1374  CS=1374  IP=000D   NV UP EI NG NZ NA PE NC
1374:000D 0D8A03        OR      AX,038A
-t


-d
1374:0100  B8 08 00 FF E0 B8 00 00-89 C3 FF E3 00 00 00 00   ................
1374:0110  00 00 00 00 00 00 00 00-00 00 00 00 34 00 63 13   ............4.c.
1374:0120  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
1374:0130  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
1374:0140  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
1374:0150  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
1374:0160  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
1374:0170  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
yangling716
[第6楼]   [ 回复时间:2009-03-05 16:28 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:0
注册日期:2008-08-19 14:12
-u 100
1374:0100 B80800        MOV     AX,0008
1374:0103 FFE0          JMP     AX
1374:0105 B80000        MOV     AX,0000
1374:0108 89C3          MOV     BX,AX
1374:010A FFE3          JMP     BX
yangling716
[第7楼]   [ 回复时间:2009-03-05 17:20 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:0
注册日期:2008-08-19 14:12
SBB和OR也出来了。。。。是DEBUG还是JMP指令带来的。。。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved