鱼C论坛

 找回密码
 立即注册
查看: 2243|回复: 0

[汇编作业] 实验八 分析一个奇怪的程序

[复制链接]
发表于 2020-4-8 15:42:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
assume cs:codesg

        
codesg segment
        mov ax,4c00H;cs:0000
        int 21h
start:        
        mov ax,0000H
s:        nop;cs:0008
        nop
        
        mov di,offset s
        mov si,offset s2
        mov ax,cs:[si]
        mov cs:[di],ax

s0:        jmp short s;cs:0018
        
s1:        mov ax,0
        int 21H
        mov ax,0

s2:        jmp short s1;cs:0020
        nop

        
codesg ends
end start
s的作用,是把s2处jmp short s1的值EBF6复制到s的两个nop处
但经过编译后,cs:0020处的EBF6成了jmp 0018,而cs:0008处的EBF6则变成了jmp 0000,这样运行下来ip就能感受到永远不会到达0018的真实
所以我认为EBF6的意思是从当前cs:ip位置上移8个字节
这样就能解释为啥相同的编码值却看似编译成了不同的结果,
比方说有个人在楼上拿着梯子,梯子上有猴子在爬,
猴子看到桃子就在往上爬8步就能拿到的地方,于是埋头往上爬8步,
爬完8步后抬头一看发现桃子不见了,低头一看才发现自己离桃子高出了好几米,
是自己计算错了吗?
不,是人把梯子往上抬好几米,而猴子在爬的时候没有注意自己早就和桃子擦肩而过,还是死脑筋地往上爬8步。

评分

参与人数 1鱼币 +1 收起 理由
a83711140 + 1 鱼C有你更精彩^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 22:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表