18510682557 发表于 2022-3-17 00:34:33

实验8分析

本帖最后由 18510682557 于 2022-3-17 00:41 编辑


assume cs:codesg
codesg segment

                mov ax, 4c00H         (3字节指令)
                int 21H               (2字节指令)
       
start:         mov ax, 0               (3字节指令)
           s:nop                     (2字节指令) (EBF6)执行jump前,IP会先指向下一条指令,这时在执行EBF6向上跳10个字节的位置,正好是 mov ax, 4c00 也就是0000的位置第三步
       cs:ip ->nop                           
               
                mov di, offset s
                mov si, offset s2
                mov ax, cs:
                mov cs:, ax       (将EBF6写到s:处)   第二步
               
        s0: jmp short s
               
        s1: mov ax, 0                (3字节指令)
             int 21H                  (2字节指令)
             mov ax, 0                (3字节指令)
               
        s2: jmp short s1            (2字节指令)"EBF6" = JUMP -10(F6是补码,对应原码就是-10,执行jump前,IP会先指向下一条指令,所以编译器通过计算得知IP需要向上移动10个字节空间才能指向S1的位置,所以是EBF6) 第一步
   cs:ip -> nop                        

codesg ends
end start

学会了 发表于 2022-3-17 14:03:02

:'(:);P

maikehong 发表于 2023-7-23 22:49:22

不正确
页: [1]
查看完整版本: 实验8分析