真·不明人士 发表于 2014-12-25 22:50:48

实验八的关键思路是否在于jmp指令的位移量

本帖最后由 真·不明人士 于 2014-12-25 22:55 编辑

RT 以下是我自己通过运行整理出的思路(我只是看书 没看甲鱼哥的视频):
1.先贴出汇编指令与对应的机器码
assume cs:codesg
codesg segment
                                                                     ;机器码
               mov ax,4c00h                               ;B8 00 4C
               int 21h                                          ;CD 21

   start:mov ax,0                                       ;B8 00 00
         s:nop                                              ;90
               nop                                              ;90
         
               mov di,offset s                           ;BF 08 00
               mov si,offset s2                           ;BF 08 00
               mov ax,cs:                               ;2E——8B 04
               mov cs:,ax                              ;2E——89 05
      
      s0:jmp short s                                  ;EB F0
   
      s1:mov ax,0                                     ;B8 00 00
            int 21h                                       ;CD 21
            mov ax,0                                    ;B8 00 00
         
      s2: jmp short s1                               ;EB E6
             nop                                             ;90
   
codesg ends
end start
2.程序开始运行
①mov ax,0
②nop * 2                ; 空指令,每个占一个字节
③mov di,offset s    ;将s段的偏移地址装入di
④mov si,offset s2   ;将s2段的偏移地址装入si
⑤mov ax,cs:      ;将jmp short s1对应的机器码装入ax
⑥mov         mov cs:,ax;将ax装入cs: 即将 nop * 2替换成 jmp short s1
⑦jmp short s             ;向前转移指令,计算到s的偏移量AC并偏移到s处
⑧jmp short s1         ;向后转移指令,无法计算s1到s的偏移量AC,转而使用当前指令的偏移量作为AC值即为8向上偏移   ???
⑨mov ax,4c00h   int 21h;结束程序

请教各位鱼油是否是如此

页: [1]
查看完整版本: 实验八的关键思路是否在于jmp指令的位移量