注册 登录
编程论坛 汇编论坛

关于jmp,此题求解

powlin1991 发布于 2012-04-12 16:19, 928 次点击
[local]1[/local]

帮忙解释下原因,谢谢。
16 回复
#2
powlin19912012-04-12 16:19
图片。。。
#3
powlin19912012-04-12 16:22
1000:0 mov ax,8
1000:3 jmp ax
1000:5 mov ax,0
1000:8 mov bx,ax
1000:a jmp bx

CPU从1000:0处开始执行指令,当执行完1000:a处的指令后CPU几次修改IP?
#4
阴阳2012-04-12 16:29
14次吧?
#5
于祥2012-04-12 16:37
回复 3楼 powlin1991
每执行一个字节,ip加1
#6
powlin19912012-04-12 19:26
回复 4楼 阴阳
怎么会有14次呢。。。选项中没这么大的。
#7
powlin19912012-04-12 19:27
回复 5楼 于祥
执行不是按ip加1来算的吧?比如第一句mov ax,8占3个字节,执行后ip变化一次,从00到03

我感觉是每次执行一句都变化一次,执行jmp的时候会变化两次。
#8
zklhp2012-04-12 20:20
1000:0 mov ax,8
1000:3 jmp ax
1000:5 mov ax,0
1000:8 mov bx,ax
1000:a jmp bx

ip放的是要执行语句的偏移量

开始ip=0
执行完1000:0 mov ax,8  ip=3
执行完1000:3 jmp ax  ip=8
执行完1000:8 mov bx,ax  ip=a
执行完1000:a jmp bx  ip=8

0-3-8-a-8 变了几次呢

正常情况下 上一条指令执行完了ip自动变成下一条指令的地址并且执行 jmp相当于设置ip

我这么理解的不知道对不对 貌似这个题我都见过了 唉。。



[ 本帖最后由 zklhp 于 2012-4-12 20:33 编辑 ]
#9
zklhp2012-04-12 20:21
图发不出是浏览器兼容性的问题 你用的啥浏览器呢。。
#10
zklhp2012-04-12 20:35
我怎么感觉这个好像是错的啊。。

我帖一个全部的输入罢

进debug


C:\DOCUME~1\ADMINI~1>debug
-a 0
0BB4:0000 mov ax,8
0BB4:0003 jmp ax
0BB4:0005 mov ax,0
0BB4:0008 mov bx,ax
0BB4:000A jmp bx
0BB4:000C
-t =0

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

AX=0008  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0BB4  ES=0BB4  SS=0BB4  CS=0BB4  IP=0008   NV UP EI PL NZ NA PO NC
0BB4:0008 89C3          MOV     BX,AX
-t

AX=0008  BX=0008  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0BB4  ES=0BB4  SS=0BB4  CS=0BB4  IP=000A   NV UP EI PL NZ NA PO NC
0BB4:000A FFE3          JMP     BX


AX=0008  BX=0008  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0BB4  ES=0BB4  SS=0BB4  CS=0BB4  IP=0008   NV UP EI PL NZ NA PO NC
0BB4:0008 89C3          MOV     BX,AX
-t

AX=0008  BX=0008  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0BB4  ES=0BB4  SS=0BB4  CS=0BB4  IP=000A   NV UP EI PL NZ NA PO NC
0BB4:000A FFE3          JMP     BX
-t

AX=0008  BX=0008  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0BB4  ES=0BB4  SS=0BB4  CS=0BB4  IP=0008   NV UP EI PL NZ NA PO NC
0BB4:0008 89C3          MOV     BX,AX
-



[ 本帖最后由 zklhp 于 2012-4-13 10:21 编辑 ]
#11
于祥2012-04-12 22:24
回复 7楼 powlin1991
我也是正在学习中,看完楼下的知道自己错了!
#12
于祥2012-04-12 22:35
回复 10楼 zklhp
怎么得到那个结果的?求指点,把那段程序输入哪里才能得到那种结果?
#13
zklhp2012-04-13 10:22
以下是引用zklhp在2012-4-12 20:35:49的发言:

我怎么感觉这个好像是错的啊。。

我帖一个全部的输入罢

进debug


C:\DOCUME~1\ADMINI~1>debug
-a 0
0BB4:0000 mov ax,8
0BB4:0003 jmp ax
0BB4:0005 mov ax,0
0BB4:0008 mov bx,ax
0BB4:000A jmp bx
0BB4:000C
-t =0

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

AX=0008  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0BB4  ES=0BB4  SS=0BB4  CS=0BB4  IP=0008   NV UP EI PL NZ NA PO NC
0BB4:0008 89C3          MOV     BX,AX
-t

AX=0008  BX=0008  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0BB4  ES=0BB4  SS=0BB4  CS=0BB4  IP=000A   NV UP EI PL NZ NA PO NC
0BB4:000A FFE3          JMP     BX


AX=0008  BX=0008  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0BB4  ES=0BB4  SS=0BB4  CS=0BB4  IP=0008   NV UP EI PL NZ NA PO NC
0BB4:0008 89C3          MOV     BX,AX
-t

AX=0008  BX=0008  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0BB4  ES=0BB4  SS=0BB4  CS=0BB4  IP=000A   NV UP EI PL NZ NA PO NC
0BB4:000A FFE3          JMP     BX
-t

AX=0008  BX=0008  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0BB4  ES=0BB4  SS=0BB4  CS=0BB4  IP=0008   NV UP EI PL NZ NA PO NC
0BB4:0008 89C3          MOV     BX,AX
-

我发现以前的好像有错误啊 我改了 帖了全部的出来

注意我写的a和t的用法
#14
powlin19912012-04-13 12:30
回复 13楼 zklhp
请问z版,如何复制debug下的东西出来呢?
#15
于祥2012-04-13 13:45
对啊,怎么把那里边的东西复制出来?
#16
zklhp2012-04-13 14:13
只有本站会员才能查看附件,请 登录


改成这样 可以选了 选完了回车就复制了
#17
powlin19912012-04-13 14:58
回复 16楼 zklhp
膜拜啊,嘿嘿,又学了点有用的,不然每次特纠结。
1