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
安装grub 后的第二扇区反汇编
最新推荐文章于 2022-02-23 15:02:25 发布