安装grub 后的第二扇区反汇编

seg000:0000 ; File Name   : E:/blk2
seg000:0000 ; Format      : Binary file
seg000:0000 ; Base Address: 0000h Range: 0000h - 0200h Loaded length: 0200h
seg000:0000
seg000:0000                 .686p
seg000:0000                 .mmx
seg000:0000                 .model flat
seg000:0000
seg000:0000 ; ===========================================================================
seg000:0000
seg000:0000 ; Segment type: Pure code
seg000:0000 seg000          segment byte public 'CODE' use16
seg000:0000                 assume cs:seg000
seg000:0000                 assume es:nothing, ss:nothing, ds:nothing, fs:nothing, gs:nothing
seg000:0000
seg000:0000 ; =============== S U B R O U T I N E =======================================
seg000:0000
seg000:0000 ; Attributes: noreturn
seg000:0000
seg000:0000 sub_0           proc near
seg000:0000                 push    dx
seg000:0001                 push    si
seg000:0002                 mov     si, 2103h       ; 'Loading stage1.5'
seg000:0005                 call    puts
seg000:0008                 pop     si
seg000:0009                 mov     di, 21F8h
seg000:000C                 mov     ebp, [di]       ; 2
seg000:000F
seg000:000F loc_F:                                  ; CODE XREF: sub_0+DEj
seg000:000F                 cmp     word ptr [di+4], 0 ; seg000:01F8                 dw 2
seg000:000F                                         ; seg000:01FA                 db    0
seg000:000F                                         ; seg000:01FB                 db    0
seg000:000F                                         ; seg000:01FC                 db  0Fh
seg000:000F                                         ; seg000:01FD                 db    0
seg000:000F                                         ; seg000:01FE                 dw 220h
seg000:000F                                         ; seg000:01FE seg000          ends
seg000:000F                                         ;
seg000:0013                 jz      loc_E1          ; 输出"/n"
seg000:0017
seg000:0017 loc_17:                                 ; CODE XREF: sub_0+D7j
seg000:0017                 cmp     byte ptr [si-1], 0
seg000:001B                 jz      short loc_5B
seg000:001D                 mov     ebx, [di]
seg000:0020                 xor     eax, eax
seg000:0023                 mov     al, 7Fh ; ''
seg000:0025                 cmp     [di+4], ax
seg000:0028                 jg      short loc_2D
seg000:002A                 mov     ax, [di+4]
seg000:002D
seg000:002D loc_2D:                                 ; CODE XREF: sub_0+28j
seg000:002D                 sub     [di+4], ax
seg000:0030                 add     [di], eax
seg000:0033                 mov     word ptr [si], 10h
seg000:0037                 mov     [si+2], ax
seg000:003A                 mov     [si+8], ebx
seg000:003E                 mov     word ptr [si+6], 7000h ; DATA XREF: puts-3r
seg000:0043                 push    ax
seg000:0044                 xor     eax, eax
seg000:0047                 mov     [si+4], ax
seg000:004A                 mov     [si+0Ch], eax   ; DATA XREF: sub_0+50r
seg000:004A                                         ; sub_0+ABr
seg000:004E                 mov     ah, 42h ; 'B'   ; 0 0x10
seg000:004E                                         ; 2 0x7F
seg000:004E                                         ; 4 0
seg000:004E                                         ; 6 0x7000
seg000:004E                                         ; 8 2
seg000:004E                                         ; c 0
seg000:004E                                         ;
seg000:0050                 int     13h             ; DISK -
seg000:0052                 jb      loc_F5          ; 失败则输出read error
seg000:0056                 mov     bx, 7000h
seg000:0059                 jmp     short loc_B1
seg000:005B ; ---------------------------------------------------------------------------
seg000:005B
seg000:005B loc_5B:                                 ; CODE XREF: sub_0+1Bj
seg000:005B                 mov     eax, [di]
seg000:005E                 xor     edx, edx
seg000:0061                 div     dword ptr [si]  ; seg000:01F8                 dw 2
seg000:0061                                         ; seg000:01FA                 db    0
seg000:0061                                         ; seg000:01FB                 db    0
seg000:0061                                         ; seg000:01FC                 db  0Fh
seg000:0061                                         ; seg000:01FD                 db    0
seg000:0061                                         ; seg000:01FE                 dw 220h
seg000:0061                                         ; seg000:01FE seg000          ends
seg000:0061                                         ;
seg000:0064                 mov     [si+0Ah], dl
seg000:0067                 xor     edx, edx
seg000:006A                 div     dword ptr [si+4]
seg000:006E                 mov     [si+0Bh], dl
seg000:0071                 mov     [si+0Ch], ax
seg000:0074                 cmp     ax, [si+8]
seg000:0077                 jge     short loc_ED    ; 输出"Geom"
seg000:0079                 mov     ax, [si]
seg000:007B                 sub     al, [si+0Ah]
seg000:007E                 cmp     [di+4], ax
seg000:0081                 jg      short loc_86
seg000:0083                 mov     ax, [di+4]
seg000:0086
seg000:0086 loc_86:                                 ; CODE XREF: sub_0+81j
seg000:0086                 sub     [di+4], ax
seg000:0089                 add     [di], eax
seg000:008C                 mov     dl, [si+0Dh]
seg000:008F                 shl     dl, 6
seg000:0092                 mov     cl, [si+0Ah]
seg000:0095                 inc     cl
seg000:0097                 or      cl, dl
seg000:0099                 mov     ch, [si+0Ch]
seg000:009C                 pop     dx
seg000:009D                 push    dx
seg000:009E                 mov     dh, [si+0Bh]
seg000:00A1                 push    ax
seg000:00A2                 mov     bx, 7000h
seg000:00A5                 mov     es, bx
seg000:00A7                 assume es:nothing
seg000:00A7                 xor     bx, bx
seg000:00A9                 mov     ah, 2
seg000:00AB                 int     13h             ; DISK - READ SECTORS INTO MEMORY
seg000:00AB                                         ; AL = number of sectors to read, CH = track, CL = sector
seg000:00AB                                         ; DH = head, DL = drive, ES:BX -> buffer to fill
seg000:00AB                                         ; Return: CF set on error, AH = status, AL = number of sectors read
seg000:00AD                 jb      short loc_F5    ; 输出"Read"
seg000:00AF                 mov     bx, es
seg000:00B1
seg000:00B1 loc_B1:                                 ; CODE XREF: sub_0+59j
seg000:00B1                 mov     es, word ptr [di+6]
seg000:00B4                 assume es:nothing
seg000:00B4                 pop     ax              ; edi+4
seg000:00B5                 shl     ax, 5           ; *32
seg000:00B8                 add     [di+6], ax      ; [edi+6]=220h+(edi+4)*32
seg000:00BB                 pusha
seg000:00BC                 push    ds
seg000:00BD                 shl     ax, 4
seg000:00C0                 mov     cx, ax          ; [edi+4]*32*16   32*16=512
seg000:00C2                 xor     di, di
seg000:00C4                 xor     si, si
seg000:00C6                 mov     ds, bx
seg000:00C8                 assume ds:nothing
seg000:00C8                 cld
seg000:00C9                 rep movsb               ; 拷贝数据,从7000:0 -> 220:0
seg000:00C9                                         ;
seg000:00CB                 pop     ds
seg000:00CC                 assume ds:nothing
seg000:00CC                 mov     si, 2114h
seg000:00CF                 call    puts            ; "."
seg000:00D2                 popa
seg000:00D3                 cmp     word ptr [di+4], 0
seg000:00D7                 jnz     loc_17
seg000:00DB                 sub     di, 8
seg000:00DE                 jmp     loc_F
seg000:00E1 ; ---------------------------------------------------------------------------
seg000:00E1
seg000:00E1 loc_E1:                                 ; CODE XREF: sub_0+13j
seg000:00E1                 mov     si, 2116h       ; 输出"/n"
seg000:00E4                 call    puts
seg000:00E7                 pop     dx
seg000:00E8                 jmp     far ptr 0:2200h ; 跳转到2200处继续执行
seg000:00ED ; ---------------------------------------------------------------------------
seg000:00ED
seg000:00ED loc_ED:                                 ; CODE XREF: sub_0+77j
seg000:00ED                 mov     si, 2119h       ; 输出"Geom"
seg000:00F0                 call    puts
seg000:00F3                 jmp     short loc_FB    ; 输出"Error"
seg000:00F5 ; ---------------------------------------------------------------------------
seg000:00F5
seg000:00F5 loc_F5:                                 ; CODE XREF: sub_0+52j
seg000:00F5                                         ; sub_0+ADj
seg000:00F5                 mov     si, 211Eh       ; 输出"Read"
seg000:00F8                 call    puts
seg000:00FB
seg000:00FB loc_FB:                                 ; CODE XREF: sub_0+F3j
seg000:00FB                 mov     si, 2123h       ; 输出"Error"
seg000:00FE                 call    puts
seg000:00FE sub_0           endp ; sp-analysis failed
seg000:00FE
seg000:00FE ; ---------------------------------------------------------------------------
seg000:0101 unk_101         db 0EBh ; ?
seg000:0102                 db 0FEh ; ?
seg000:0103 aLoadingStage1_ db 'Loading stage1.5',0
seg000:0114 a_              db '.',0
seg000:0116                 db 0Dh,0Ah,0
seg000:0119 aGeom           db 'Geom',0
seg000:011E aRead           db 'Read',0
seg000:0123 aError          db ' Error',0
seg000:012A ; ---------------------------------------------------------------------------
seg000:012A ; START OF FUNCTION CHUNK FOR puts
seg000:012A
seg000:012A loc_12A:                                ; CODE XREF: puts+4j
seg000:012A                 mov     bx, 1
seg000:012D                 mov     ah, 0Eh
seg000:012F                 int     10h             ; - VIDEO - WRITE CHARACTER AND ADVANCE CURSOR (TTY WRITE)
seg000:012F                                         ; AL = character, BH = display page (alpha modes)
seg000:012F                                         ; BL = foreground color (graphics modes)
seg000:0131                 inc     si
seg000:0131 ; END OF FUNCTION CHUNK FOR puts
seg000:0132
seg000:0132 ; =============== S U B R O U T I N E =======================================
seg000:0132
seg000:0132
seg000:0132 puts            proc near               ; CODE XREF: sub_0+5p
seg000:0132                                         ; sub_0+CFp ...
seg000:0132
seg000:0132 ; FUNCTION CHUNK AT seg000:012A SIZE 00000008 BYTES
seg000:0132
seg000:0132                 mov     al, [si]
seg000:0134                 cmp     al, 0
seg000:0136                 jnz     short loc_12A
seg000:0138                 retn
seg000:0138 puts            endp ; sp-analysis failed
seg000:0138
seg000:0138 ; ---------------------------------------------------------------------------
seg000:0139                 db    0
seg000:013A                 db    0
seg000:013B                 db    0
seg000:013C                 db    0
seg000:013D                 db    0
seg000:013E                 db    0
seg000:013F                 db    0
seg000:0140                 db    0
seg000:0141                 db    0
seg000:0142                 db    0
seg000:0143                 db    0
seg000:0144                 db    0
seg000:0145                 db    0
seg000:0146                 db    0
seg000:0147                 db    0
seg000:0148                 db    0
seg000:0149                 db    0
seg000:014A                 db    0
seg000:014B                 db    0
seg000:014C                 db    0
seg000:014D                 db    0
seg000:014E                 db    0
seg000:014F                 db    0
seg000:0150                 db    0
seg000:0151                 db    0
seg000:0152                 db    0
seg000:0153                 db    0
seg000:0154                 db    0
seg000:0155                 db    0
seg000:0156                 db    0
seg000:0157                 db    0
seg000:0158                 db    0
seg000:0159                 db    0
seg000:015A                 db    0
seg000:015B                 db    0
seg000:015C                 db    0
seg000:015D                 db    0
seg000:015E                 db    0
seg000:015F                 db    0
seg000:0160                 db    0
seg000:0161                 db    0
seg000:0162                 db    0
seg000:0163                 db    0
seg000:0164                 db    0
seg000:0165                 db    0
seg000:0166                 db    0
seg000:0167                 db    0
seg000:0168                 db    0
seg000:0169                 db    0
seg000:016A                 db    0
seg000:016B                 db    0
seg000:016C                 db    0
seg000:016D                 db    0
seg000:016E                 db    0
seg000:016F                 db    0
seg000:0170                 db    0
seg000:0171                 db    0
seg000:0172                 db    0
seg000:0173                 db    0
seg000:0174                 db    0
seg000:0175                 db    0
seg000:0176                 db    0
seg000:0177                 db    0
seg000:0178                 db    0
seg000:0179                 db    0
seg000:017A                 db    0
seg000:017B                 db    0
seg000:017C                 db    0
seg000:017D                 db    0
seg000:017E                 db    0
seg000:017F                 db    0
seg000:0180                 db    0
seg000:0181                 db    0
seg000:0182                 db    0
seg000:0183                 db    0
seg000:0184                 db    0
seg000:0185                 db    0
seg000:0186                 db    0
seg000:0187                 db    0
seg000:0188                 db    0
seg000:0189                 db    0
seg000:018A                 db    0
seg000:018B                 db    0
seg000:018C                 db    0
seg000:018D                 db    0
seg000:018E                 db    0
seg000:018F                 db    0
seg000:0190                 db    0
seg000:0191                 db    0
seg000:0192                 db    0
seg000:0193                 db    0
seg000:0194                 db    0
seg000:0195                 db    0
seg000:0196                 db    0
seg000:0197                 db    0
seg000:0198                 db    0
seg000:0199                 db    0
seg000:019A                 db    0
seg000:019B                 db    0
seg000:019C                 db    0
seg000:019D                 db    0
seg000:019E                 db    0
seg000:019F                 db    0
seg000:01A0                 db    0
seg000:01A1                 db    0
seg000:01A2                 db    0
seg000:01A3                 db    0
seg000:01A4                 db    0
seg000:01A5                 db    0
seg000:01A6                 db    0
seg000:01A7                 db    0
seg000:01A8                 db    0
seg000:01A9                 db    0
seg000:01AA                 db    0
seg000:01AB                 db    0
seg000:01AC                 db    0
seg000:01AD                 db    0
seg000:01AE                 db    0
seg000:01AF                 db    0
seg000:01B0                 db    0
seg000:01B1                 db    0
seg000:01B2                 db    0
seg000:01B3                 db    0
seg000:01B4                 db    0
seg000:01B5                 db    0
seg000:01B6                 db    0
seg000:01B7                 db    0
seg000:01B8                 db    0
seg000:01B9                 db    0
seg000:01BA                 db    0
seg000:01BB                 db    0
seg000:01BC                 db    0
seg000:01BD                 db    0
seg000:01BE                 db    0
seg000:01BF                 db    0
seg000:01C0                 db    0
seg000:01C1                 db    0
seg000:01C2                 db    0
seg000:01C3                 db    0
seg000:01C4                 db    0
seg000:01C5                 db    0
seg000:01C6                 db    0
seg000:01C7                 db    0
seg000:01C8                 db    0
seg000:01C9                 db    0
seg000:01CA                 db    0
seg000:01CB                 db    0
seg000:01CC                 db    0
seg000:01CD                 db    0
seg000:01CE                 db    0
seg000:01CF                 db    0
seg000:01D0                 db    0
seg000:01D1                 db    0
seg000:01D2                 db    0
seg000:01D3                 db    0
seg000:01D4                 db    0
seg000:01D5                 db    0
seg000:01D6                 db    0
seg000:01D7                 db    0
seg000:01D8                 db    0
seg000:01D9                 db    0
seg000:01DA                 db    0
seg000:01DB                 db    0
seg000:01DC                 db    0
seg000:01DD                 db    0
seg000:01DE                 db    0
seg000:01DF                 db    0
seg000:01E0                 db    0
seg000:01E1                 db    0
seg000:01E2                 db    0
seg000:01E3                 db    0
seg000:01E4                 db    0
seg000:01E5                 db    0
seg000:01E6                 db    0
seg000:01E7                 db    0
seg000:01E8                 db    0
seg000:01E9                 db    0
seg000:01EA                 db    0
seg000:01EB                 db    0
seg000:01EC                 db    0
seg000:01ED                 db    0
seg000:01EE                 db    0
seg000:01EF                 db    0
seg000:01F0                 db    0
seg000:01F1                 db    0
seg000:01F2                 db    0
seg000:01F3                 db    0
seg000:01F4                 dw 0
seg000:01F6                 db    0
seg000:01F7                 db    0
seg000:01F8                 dw 2
seg000:01FA                 db    0
seg000:01FB                 db    0
seg000:01FC                 db  0Fh
seg000:01FD                 db    0
seg000:01FE                 db  20h
seg000:01FF                 db    2
seg000:01FF seg000          ends
seg000:01FF
seg000:01FF
seg000:01FF                 end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值