. : : 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