* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0001.00C1(C), :0001.00C8(C)
|
:0001.00E6 8A5600 mov dl, [bp+00] ;dl=80H 假设
:0001.00E9 60 pusha ;通用寄存器全部入栈
:0001.00EA BBAA55 mov bx, 55AA ;bx=55aa
:0001.00ED B441 mov ah, 41 ;ah=41h 扩展INT13H调用
:0001.00EF CD13 int 13 ;检查驱动器是否支持扩展INT 13H
:0001.00F1 7236 jb 0129 ;检测CF是否为1 为1则不支持扩展INT13H,跳转到0129执行
:0001.00F3 81FB55AA cmp bx, AA55 ;比较BX的值,同样是检查扩展INT13H
:0001.00F7 7530 jne 0129 ;失败跳转到129执行
:0001.00F9 F6C101 test cl, 01 ;检查CL的最低位是否为1
:0001.00FC 742B je 0129 ;仍旧检查扩展INT13H的调用是否成功,不成功跳转到0129执行
:0001.00FE 61 popa ;恢复寄存器的值
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0001.0127(U)
|
:0001.00FF 60 pusha ;通用寄存器全部入栈
:0001.0100 6A00 push 0000
:0001.0102 6A00 push 0000 ;入栈立即数
:0001.0104 FF760A push word ptr [bp+0A] ;入栈分区起始地址的高16位
:0001.0107 FF7608 push word ptr [bp+08] ;入栈分区起始地址的低16位
:0001.010A 6A00 push 0000
:0001.010C 68007C push 7C00
:0001.010F 6A01 push 0001
:0001.0111 6A10 push 0010 ;入栈立即数
;以上构造 "磁盘地址数据包"
;内存中的数据为 10 00 01 00 00 7c 00 00 xx xx xx xx 00 00 00 00
:0001.0113 B442 mov ah, 42 ;AH=42H 扩展INT13H 读扇区功能调用
:0001.0115 8BF4 mov si, sp ;SI=SP指向磁盘地址包的开始
:0001.0117 CD13 int 13 ;调用扩展INT13H 读扇区功能
:0001.0119 61 popa ;用栈中的数据设置通用寄存器的值 此处是把构造的磁盘地址数据包出栈
:0001.011A 61 popa ;恢复通用寄存器的值
:0001.011B 730E jnb 012B ;调用成功,跳转到12B执行
:0001.011D 4F dec di ;di减1
:0001.011E 740B je 012B ;DI值为0跳转到12B执行
:0001.0120 32E4 xor ah, ah ;清零AH的值
:0001.0122 8A5600 mov dl, [bp+00] ;DL=80H 假设激活标志为80
:0001.0125 CD13 int 13 ;调用INT 13H 磁盘复位
:0001.0127 EBD6 jmp 00FF ;再次跳转到00FF循环
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0001.00F1(C), :0001.00F7(C), :0001.00FC(C)
|
:0001.0129 61 popa ;恢复寄存器的值
:0001.012A F9 stc ;使CF=1
*******************************************************************************************
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0001.00D8(C), :0001.00DB(C), :0001.011B(C), :0001.011E(C)
| 反汇编工具提示: 00D8处有一条条件转移指令跳转到此处12B
*******************************************************************************************
:0001.012B C3 ret ;返回指令
:0001.012C --> :0001.017B ASCII码表示的字符串
*************************************************************************************
Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F
00000120 49 6E 76 61 Inva
00000130 6C 69 64 20 70 61 72 74 69 74 69 6F 6E 20 74 61 lid partition ta
00000140 62 6C 65 00 45 72 72 6F 72 20 6C 6F 61 64 69 6E ble Error loadin
00000150 67 20 6F 70 65 72 61 74 69 6E 67 20 73 79 73 74 g operating syst
00000160 65 6D 00 4D 69 73 73 69 6E 67 20 6F 70 65 72 61 em Missing opera
00000170 74 69 6E 67 20 73 79 73 74 65 6D ting system
*************************************************************************************