. : : Assembly Language : : .
|
首页
|
我提出的问题
|
我参与的问题
|
我的收藏
|
消息中心
|
游客 登录
|
刷新
|
提问
|
未解决
|
已解决
|
精华区
|
搜索
|
《汇编语言》论坛
->
转移指令的原理
管理员:
assembly
[
回复本贴
]
[
收藏本贴
] [
管理本贴
] [
关闭窗口
]
主题 : :
实验八.为什么能够正确返回
[待解决]
回复[
5
次 ] 点击[
441
次 ]
b307077419
[帖 主]
[ 发表时间:2010-11-14 11:33 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2010-09-04 10:41
assume cs:codesg
codesg segment
mov ax,4c00H
int 21H ;执行这里时已经返回操作系统,后面的指令都不在执行了。
start:
mov ax,0
s:
nop
nop
mov di,offset s
mov si,offset s2
mov ax,cs:[si]
mov cs:[di],ax
s0:
jmp short s
s1:
mov ax,0
int 21h
mov ax,0
s2:
jmp short s1
nop
codesg ends
end
在debug中调试时,执行到int 21H时已经返回到操作系统,cs:ip已经指向另一个地方了。
sempron
[第
1
楼]
[ 回复时间:2010-11-15 12:22 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2010-10-29 09:56
基础不扎实,看来前面几章你就没仔细看啊。
最后加上end start,你就会发现CS:IP指向的第一条指令是从start开始的
b307077419
[第
2
楼]
[ 回复时间:2010-11-22 13:47 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2010-09-04 10:41
汗~!~!发完帖才知道家end和end start的区别!
yang8930688
[第
3
楼]
[ 回复时间:2010-12-18 23:33 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:2
注册日期:2010-12-03 15:01
因为JMP只传送偏移多少
three-stone
[第
4
楼]
[ 回复时间:2010-12-24 17:15 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:0
注册日期:2010-10-21 15:56
但是 jmp short s
不是一直循环了吗?
xohome
[第
5
楼]
[ 回复时间:2011-10-06 12:53 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:2
信誉值:2
注册日期:2010-11-24 11:04
实验八考验的是对jmp指令的了解
程序s1其实是没有执行的,s中,将s2的指令jmp short s1拷贝到了s开头的nop nop两个字节中,因为(jmp short 标号) 是根据偏移地址移动,而程序编译时s2的jmp指令到s1的偏移地址是-3,负数用补码标识为18H,移动到s后执行,IP向上移动了3个字节,即mov ax,4C00H处.
需要登录后才能回帖 -->>
请单击此处登录
Copyright © 2006-2024 ASMEDU.NET All Rights Reserved