鱼C论坛

 找回密码
 立即注册
查看: 2645|回复: 2

实验8为什么能正常结束

[复制链接]
发表于 2016-8-28 13:10:13 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 你是空气 于 2016-8-29 09:44 编辑

实验8最后为什么程序能走完?我看到这一步看不懂了:

assume cs:codesg
codesg segment
    mov ax,4c00h
    int 21h
start: mov ax,0           ;ax=0  理解了
    s: nop                ;占一字节,机器码90 理解了
       nop                 ;占一字节,机器码90 理解了
       mov di,offset s     ;(di)=s偏移地址 理解了
       mov si,offset s2   ; (si)=s2偏移地址 理解了
       mov ax,cs:[si]      ;(ax)=jmp short s1指令对应的机器码EBF6 理解了
       mov cs:[di],ax     ; jmp short s1覆盖s处指令2条nop指令 理解了
   s0: jmp short  s   ; 这里不懂:程序的内存图在下面,我想问的是:根据s标号地址-ip自增后的地址=-16
   s1: mov ax,0                        ;也就是8h-18h=-16D,最后ip加上这个-16等于8,于是跳到s标号处执行被替换的jmp short s1指令对吗?然后继续执行的时,
       int 21h                        ;根据si的标号减去ip的值,也就是20h-A=10啊,偏移地址是10,怎么能到的0呢?
       mov ax,0                        ;
   s2: jmp short s1      
       nop
codesg ends
end start

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

使用道具 举报

 楼主| 发表于 2016-8-28 13:15:53 | 显示全部楼层
而且,标号地址减去IP得到偏移地址;然后IP再加上这个偏移地址有什么意义?这和不减有什么区别?小甲鱼第九章1视频,我没看懂,因为那个图里的便宜地址变0他没有解释,直接就变FA了,一会儿再看看吧。求帮忙解决上面的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-29 09:43:41 | 显示全部楼层
我明白了,看了下一节视频就懂了,感谢小甲鱼
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-19 12:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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