…… .text:000112CA push ecx ; Value = 块地址 24~27 .text:000112CB push dword ptr [esi+20h] ; Port = 0x1F6 .text:000112CE call ebx ; WRITE_PORT_UCHAR(x,x) ; WRITE_PORT_UCHAR(x,x) .text:000112D0 push dword ptr [ebp+devExt_ach] ; Value = 000de1cf .text:000112D3 push dword ptr [esi+14h] ; Prot = 0x1F3 .text:000112D3 ; 块地址0~7位 .text:000112D6 call ebx ; WRITE_PORT_UCHAR(x,x) ; WRITE_PORT_UCHAR(x,x) .text:000112D8 mov eax, dword ptr [ebp+devExt_ach] .text:000112DB shr eax, 8 .text:000112DE push eax ; Value .text:000112DF push dword ptr [esi+18h] ; Port = 0x1F4 .text:000112DF ; 块地址8~15位 .text:000112E2 call ebx ; WRITE_PORT_UCHAR(x,x) ; WRITE_PORT_UCHAR(x,x) .text:000112E4 mov eax, dword ptr [ebp+devExt_ach] .text:000112E7 shr eax, 10h .text:000112EA push eax .text:000112EB push dword ptr [esi+1Ch] ; Port = 0x1F5 .text:000112EB ; 块地址16~23位 .text:000112EE jmp short loc_1135B .text:0001135B loc_1135B: ; CODE XREF: .text:0001135B call ebx ; WRITE_PORT_UCHAR(x,x) ;
上面的汇编代码就算是结合注释想理解也很困难。因为它涉及到了IDE接口的一
WRITE_PORT_xxxx 或者 READ_PORT_xxxx 系列的函数读写数据。下面给出这些 IDE 寄存器的 |