找回密码
 加入计匠网
搜索
热搜: BIOS ACPI CPU Windows
查看: 8454|回复: 4

修改bios二进制码后,为什么不能显示post code?

[复制链接]
发表于 2008-3-17 13:59:25 | 显示全部楼层 |阅读模式
我想验证一下cpu是否已经启动,自己把bios的2进制文件反汇编,发现第一条指令,是跳转到F000:E05B的位置,然后,我在E05B的位置写以下代码; z7 n/ C" E8 X9 Q) u7 _1 Q: i
u_bios_suru: ;E05B的位置
/ R  S- N$ X, K* ~1 s        cli                             ; test under CLI mode1 d  E5 q% C- R: ]0 `
        cld                             ; ensure direction
: w$ ^2 _7 o8 M' i4 g2 Q         mov     ax,cs
: y; G! S( W  c4 d- l        mov     ss,ax
, D" h  Z/ [! |$ W' d+ w         mov  al, 77h$ X" k% _8 D; y7 }/ t
         out    80h, al ;打印信息到80端口9 V2 ]9 e: g5 L3 W9 k0 J* X0 G
         mov ax, 0e05bh : @3 o3 Y+ `- t0 _7 {3 ?3 \( T
         jmp     ax; 跳转到E05B" W: u; {; n7 u" v9 q0 a# f! C
汇编后的2进制FA FC 8C C8 8E  D0 B0 77 E6 80 B8 5B E0-FF E0 00,直接放到0X7E05B的位置,这样是否可行?
0 H7 k+ t3 ^& x) s' ~. z# k- M& s在开始就往80端口写东西,是否能从debug卡看到?
发表于 2008-3-17 14:06:00 | 显示全部楼层
并不建议你去直接修改ROM,直接修改ROM大致会导致BIOS checksum错误.最前面向Port 80h输出,但你必须清楚,在开机一上电的状态下是由谁解码port 80h的.也就是PCI呢?还是LPC还是其它总线.所以,你的port 80h debug卡的位置也必须在那个能解码80h port的总线上挂着.这样你的debug code才可以正常输出.
1 R- Y; N3 E. A7 B( W0 M3 y* \9 ]1 _
你要问这样是否可行?问是否从debug卡上看到?这就是你需要自己动手然后回答自己的问题.
回复

使用道具 举报

发表于 2008-3-17 14:19:29 | 显示全部楼层
貌似那个时候80端口还没被初始化吧。。。
回复

使用道具 举报

 楼主| 发表于 2008-3-17 14:31:01 | 显示全部楼层
首先我没有bios源码,所以无法在源码中修改然后编译。我是用编程器直接烧录到bios里,因此不存在checksum的问题。pc上电后能执行bios里的代码,只要是Intel cpu能认得机器码都应该能执行(实模式)。我的debug卡是挂在pci上的,理论上讲在pci总线初始化之前debug卡就不会输出code? 在没有bios源代码的情况下,如何确认cpu已经跑起来?除了通过debug卡外,还有其他方式吗?
回复

使用道具 举报

发表于 2008-3-17 16:08:17 | 显示全部楼层
方法很多。介绍一种:把你上面的代码换成写系统控制端口0cf9h,让系统重启。看看系统是不是不停重启即可。判断是否重启,需要量信号。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入计匠网

本版积分规则

Archiver|手机版|小黑屋|计匠网

GMT+8, 2024-5-19 08:40 , Processed in 0.022445 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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