【求助】拜托了,求助,几行int 13_8的分析.
这是ntfs的dbr,大家看看我分析对了没有。这个小call是通过int13_ah8来计算一共有多少个扇区么?
俩次的inc是什么意思?
inc ax
inc cx
seg000:7C7B CountSector proc near ; CODE XREF: seg000:7C62p
seg000:7C7B
seg000:7C7B var_1 = byte ptr -1
seg000:7C7B g_SetcotNum = dword ptr 20h
seg000:7C7B g_DirverNumer = byte ptr 24h
seg000:7C7B
seg000:7C7B mov dl, ds:g_DirverNumer
seg000:7C7F mov ah, 8 ; int13 ah =8读驱动器 dl=80驱动器号码
seg000:7C81 int 13h ; DISK - DISK - GET CURRENT DRIVE PARAMETERS (XT,AT,XT286,CONV,PS)
seg000:7C81 ; DL = drive number
seg000:7C81 ; Return: CF set on error, AH = status code, BL = drive type
seg000:7C81 ; DL = number of consecutive drives
seg000:7C81 ; DH = maximum value for head number, ES:DI -> drive parameter
seg000:7C83 jnb short Sucess ; cf = 0 jmp
seg000:7C85
seg000:7C85 Error: ; cx 0ffff
seg000:7C85 mov cx, 0FFFFh
seg000:7C88 mov dh, cl ; dh ff
seg000:7C8A
seg000:7C8A Sucess: ; CODE XREF: CountSector+8j
seg000:7C8A movzx eax, dh ; 磁头数
seg000:7C8E inc ax ; 磁头数加1
seg000:7C8F movzx edx, cl ; 扇区,柱
seg000:7C93 and dl, 3Fh ; 扇区数
seg000:7C96 mul dx ; 磁头*扇区,dx高位,ax低位
seg000:7C98 xchg cl, ch ; 交换后,ch有高2位,cl有低6位
seg000:7C9A shr ch, 6 ; ch ,只有高2位 cx柱面数
seg000:7C9D inc cx ; 柱面数加1
seg000:7C9E movzx ecx, cx
seg000:7CA2 mul ecx ; 柱面*(磁头数*扇区)edx高位,eax低位
seg000:7CA5 mov ds:g_SetcotNum, eax ; 总扇区数
seg000:7CA9 retn
seg000:7CA9 CountSector endp
seg000:7CA9