|
楼主 |
发表于 2009-11-23 15:59:25
|
显示全部楼层
反汇编第1.2步
;在已经有一个引导标记的情况下,如果其他分区还有引导标记,则进入出错处理程序:
0000063a: ( ): mov al, byte ptr ds:0x7b5 ; a0b507 ;这里记录了出错信息的低位偏移地址
0000063d: ( ): mov ah, 0x07 ; b407 ;偏移地址的高位是07
0000063f: ( ): mov si, ax ; 8bf0 ;把完整的出错偏移地址装入到串操作的源操作数寄存器SI中
00000641: ( ): lodsb al, byte ptr ds:[si] ; ac ;取一个出错字符信息到AL中
00000642: ( ): cmp al, 0x00 ; 3c00 ;判断是否到了出错信息的末尾了(末尾有0标志)
00000644: ( ): jz .+0xfffc ; 74fc ;是字符串末尾则跳到0642处死循环
00000646: ( ): mov bx, 0x0007 ; bb0700 ;为INT 10H显示字符串设置参数,懒得去查手册了
00000649: ( ): mov ah, 0x0e ; b40e ;为INT 10H显示字符串设置参数,懒得去查手册了
0000064b: ( ): int 0x10 ; cd10 ;调用INT 10H显示一个字符信息
0000064d: ( ): jmp .+0xfff2 ; ebf2 ;继续下一个字符的显示
[ 本帖最后由 cxdzxc 于 2009-11-23 16:03 编辑 ]
cxdzxc 于 2009-11-23 17:17 补充以下内容
改正下:
00000634: ( ): jz .+0x0019 ; 7419 ;如果后面的3个分区都检测完成,则CX会被减到0,同时ZR标志被置有效,程序将跳转到064d执行----改正下,应该是:
00000634: ( ): jz .+0x0019 ; 7419 ;如果后面的3个分区都检测完成,则CX会被减到0,同时ZR标志被置有效,程序将跳转到064F执行
[ 本帖最后由 cxdzxc 于 2009-11-23 17:20 编辑 ] |
|