. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验8  [待解决] 回复[ 5次 ]   点击[ 564次 ]  
xxdhj
[帖 主]   [ 发表时间:2009-05-09 17:16 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-03-09 09:23
汗 一开始还以为是死循环呢,后来DEBUG了下发现能正常返回,可是自己琢磨的又不对然后查看论坛才知道了为什么会正常返回了。说下小弟的理解
           assume cs:codesg 

          codesg segment 
          mov ax,4c00H 
          int 21H 

           start: 
0B55:0005    mov ax,0 
    :0008    s: nop(通过复制这时0008就变成了EBF6,其内容是jmp short s1,因为short是8位位移,
    :0009       nop  所以,不予考试s1.  F6就是8位位移的位置,用补码计算也就是是-10.这时候IP的指向指的是000A{不明白为什么指向000A的看下P179页}。而jmp short 标记功能为:IP=IP+8位位移。 也就是说A+ -10那IP地址是0所以也就指向了mov ax,4c00H)
    
    :000A       mov di,offset s 
                 mov si,offset s2 (把S2里面的数据EBF6复制给SI)
                 mov ax,cs:[si]    (把SI内容复制给ax)
                 mov cs:[di],ax     (把ax内容复制给DI,因为DI默认是指向S:的,而且一个nop占用一个字节,就把s2:处jmp short s1拷贝到s处,即覆盖2个nop(正好2个字节))

              s0: jmp short s  (把IP地址指向S处)
s1: 
mov ax,0 
int 21H 
mov ax,0 

s2: 
jmp short s1 
nop 

codesg ends 
end start
xxdhj
[第1楼]   [ 回复时间:2009-05-09 17:18 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-03-09 09:23
补充下看的时候从:000A       mov di,offset s开始看
zpd1976
[第2楼]   [ 回复时间:2009-05-10 12:07 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-03-25 19:19
我明白了,其实 jmp short s1这条指令在编译的时候已经确定的就是IP-10;
他自己不能识别自己已经被提升位置了。
zhenglxd
[第3楼]   [ 回复时间:2009-05-12 15:44 ]   [引用]   [回复]   [ top ] 
荣誉值:30
信誉值:0
注册日期:2009-04-09 10:05
s1:mov ax,0
       int 21h
       mov ax,0
    s2:jmp short s1

上面这段地址中 s2~s1的位差和下面的一段中s:~ mov ax,4c00h的位

差是相等的!所以当s0:jmp short s被执行后(代码从s:处开始而s处

代码保留的是s2~s1的位差)因此 ip跳转到了 mov ax,4c00h所在的代

码,至此研究结束这个世纪之谜也被本人破解大爽!
(下段)
mov ax,4c00h
  int 21h
start: mov ax,0
    s: nop
enjoyshare
[第4楼]   [ 回复时间:2009-12-15 14:15 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2009-11-26 12:16
哦,我也明白了,这个程序的关键在于这里!
helonsy
[第5楼]   [ 回复时间:2010-07-24 07:53 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-07-11 16:57
我明白了,谢谢楼主分享。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved