一个反汇编LILO启动代码的汇编问题???????

water239 2002-11-30 10:08:12
最近反汇编了LILO的启动代码,但是有些看不懂。
看到一些资料介绍,LILO在启动的时候,每完成一步工作都要显示相应的字符:

1。LILO将自己移动到9A00:0000,然后显示“L”。
.....
...
...

BCB:01B3 B00D MOV AL,0D
0BCB:01B5 E86900 CALL 0221
0BCB:01B8 B00A MOV AL,0A
0BCB:01BA E86400 CALL 0221
0BCB:01BD B04D MOV AL,4C "L"
0BCB:01BF E85F00 CALL 0221


2。紧接着调入the secondary boot loader,
下面的这段代码是紧跟在上面的,应该被连续执行的。我看不懂了。

0BCB:01C2 BE3400 MOV SI,0034
0BCB:01C5 68 DB 68 ????????????
//////DB 68 是定义数据的,应该不会被执行的啊!!!!!
//我修改从01C2开始的代码,显示一个字符,重新写到MBR中,在启动的时候,
//该字符被显示了,说明应该这个地方要被执行,但是,DB是怎么回事呢????
0BCB:01C6 000B ADD [BP+DI],CL
0BCB:01C8 07 POP ES
0BCB:01C9 31DB XOR BX,BX
0BCB:01CB AD LODSW
0BCB:01CC 91 XCHG CX,AX
......
......
......


...全文
94 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
water239 2002-12-01
  • 打赏
  • 举报
回复
这是因为DEBUG的版本太低,不能识别一些指令,使用DEBUG32后解决了。
用户 昵称 2002-12-01
  • 打赏
  • 举报
回复
这个我是这么认为的
首先两个连续的代码未必连续执行,所以上面的call可能把流程转移了
其次对于二进制代码来说,执行起始位置非常重要,差一点就面目全非了
再次这可能就是数据。

23,118

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧