Код: Выделить всё
locatekernel:
0x9d202: mov si,0x800
fk1:
0x9d205: mov al,BYTE PTR [si]
0x9d207: inc al
0x9d209: je 0x9d209
0x9d20b: cmp al,0x8
0x9d20d: je 0x9d214
0x9d20f: add si,WORD PTR [si+0x4]
0x9d212: jmp 0x9d205 ; fk1
fk2:
0x9d214: mov eax,DWORD PTR [si+0x10]
0x9d218: mov ds:0x31,eax
0x9d21c: push si
0x9d21d: mov si,WORD PTR ds:0x27
0x9d221: call 0x9d243
0x9d224: mov si,0x757
0x9d227: call 0x9d243
0x9d22a: pop si
0x9d22b: mov bl,BYTE PTR [si+0xe]
0x9d22e: mov BYTE PTR ds:0x25,bl
0x9d232: mov di,WORD PTR [si+0xc]
0x9d235: mov eax,DWORD PTR [si+0x8]
0x9d239: shr eax,0x4
0x9d23d: mov es,ax
0x9d23f: add si,0x14
0x9d242: ret
writestring:
0x9d243: lods al,BYTE PTR ds:[si]
0x9d244: cmp al,0x0
0x9d246: je 0x9d24d
0x9d248: call 0x9d1d6
0x9d24b: jmp 0x9d243
wsend:
0x9d24d: ret
nextsector:
0x9d24e: sub WORD PTR [si+0x4],cx
0x9d251: jne 0x9d0d5 ; rk2
0x9d255: pop WORD PTR [si+0x4]
0x9d258: pop DWORD PTR [si]
0x9d25b: add si,0x8
0x9d25e: dec di
0x9d25f: jne 0x9d0cf ; rk1
0x9d263: mov si,0x76c
0x9d266: cmp BYTE PTR ds:0x25,0x0
0x9d26b: jne 0x9d1ab ; rs7
0x9d26f: mov si,0x800
fe0:
0x9d272: mov al,BYTE PTR [si]
0x9d274: cmp al,0x8
0x9d276: jne 0x9d288
0x9d278: lea bx,[si+0x8]
0x9d27b: mov WORD PTR ds:0x748,bx
0x9d27f: mov bx,WORD PTR [si+0x4]
0x9d282: add bx,si
0x9d284: mov WORD PTR ds:0x35,bx
fe2:
0x9d288: inc al
0x9d28a: je 0x9d291 ; fe1
0x9d28c: add si,WORD PTR [si+0x4]
0x9d28f: jmp 0x9d272 ; fe0
fe1:
0x9d291: mov DWORD PTR [si],0x3
0x9d298: mov DWORD PTR [si+0x4],0x10
0x9d2a0: xor eax,eax
0x9d2a3: mov ax,cs
0x9d2a5: shl eax,0x4
0x9d2a9: mov DWORD PTR [si+0x8],eax
0x9d2ad: mov DWORD PTR [si+0xc],0x2000
0x9d2b5: add si,WORD PTR [si+0x4]
0x9d2b8: mov ah,0x88
0x9d2ba: int 0x15
0x9d2bc: and eax,0xffff
0x9d2c2: mov DWORD PTR [si],0x4
0x9d2c9: mov DWORD PTR [si+0x4],0x10
0x9d2d1: mov DWORD PTR [si+0x8],0x100000
0x9d2d9: shl eax,0xa
0x9d2dd: mov DWORD PTR [si+0xc],eax
0x9d2e1: add si,WORD PTR [si+0x4]
bt1: ?
0x9d2e4: cld
0x9d2e5: push ds
0x9d2e6: pop es
0x9d2e7: mov DWORD PTR [si],0xffffffff
0x9d2ee: mov DWORD PTR [si+0x4],0x0
0x9d2f6: lea bx,[si+0x8]
0x9d2f9: mov WORD PTR ds:0x37,bx
0x9d2fd: call 0x9d67f
0x9d300: cmp BYTE PTR ds:0xa,0x0
0x9d305: jne 0x9d366
0x9d307: push ds
0x9d308: mov ax,0x0
0x9d30b: mov ds,ax
0x9d30d: mov al,ds:0x417
0x9d310: pop ds
0x9d311: test BYTE PTR ds:0xa,al
0x9d315: jne 0x9d366
0x9d317: jmp 0x9d3c8
ee20:
0x9d31a: mov al,ds:0x58
0x9d31d: and al,0xdf
ee27:
0x9d31f: cmp al,0x43 ; 'C'
0x9d321: je 0x9d3c8 ; eend
0x9d325: cmp al,0x0
0x9d327: je 0x9d366
0x9d329: cmp al,0x57 ; 'W'
0x9d32b: je 0x9d332
0x9d32d: mov si,0x778
0x9d330: jmp 0x9d38e
; write boot table
ee22:
0x9d332: mov si,0x800
ee24:
0x9d335: cmp BYTE PTR [si],0x3
0x9d338: je 0x9d33f
0x9d33a: add si,WORD PTR [si+0x4]
0x9d33d: jmp 0x9d335 ; ee24
ee23:
0x9d33f: mov DWORD PTR [si],0xffffffff
0x9d346: mov eax,ds:0x39
0x9d34a: mov bx,0x800
0x9d34d: mov cx,0x4
0x9d350: mov WORD PTR ds:0x3f,0x4300
0x9d356: call 0x9d12f ; writesectors
0x9d359: mov DWORD PTR [si],0x3
0x9d360: mov si,0x764
0x9d363: call 0x9d243 ; writestring
ee0:
0x9d366: call 0x9d67f ; InitVal
0x9d369: mov si,WORD PTR ds:0x748
0x9d36d: lods al,BYTE PTR ds:[si]
0x9d36e: cmp al,0x0
0x9d370: je 0x9d38b
0x9d372: push ax
0x9d373: push si
0x9d374: mov si,0x769
0x9d377: call 0x9d243
0x9d37a: pop si
0x9d37b: pop ax
0x9d37c: call 0x9d1d6
0x9d37f: lods al,BYTE PTR ds:[si]
0x9d380: cmp al,0x0
0x9d382: jne 0x9d37c
0x9d384: mov al,0x3d
0x9d386: call 0x9d248
0x9d389: jmp 0x9d36d
0x9d38b: mov si,0x7b7
0x9d38e: call 0x9d243
0x9d391: mov di,0x58
0x9d394: mov ah,0x0
0x9d396: int 0x16
0x9d398: cmp al,0x0
0x9d39a: je 0x9d394
0x9d39c: cmp al,0xd
0x9d39e: je 0x9d3c0
0x9d3a0: cmp al,0x8
0x9d3a2: jne 0x9d3b2
0x9d3a4: cmp di,0x58
0x9d3a7: je 0x9d394
0x9d3a9: dec di
0x9d3aa: mov si,0x760
0x9d3ad: call 0x9d243
0x9d3b0: jmp 0x9d394
0x9d3b2: cmp di,0x128
0x9d3b6: je 0x9d394
0x9d3b8: mov BYTE PTR [di],al
0x9d3ba: inc di
0x9d3bb: call 0x9d1d6
0x9d3be: jmp 0x9d394
0x9d3c0: mov BYTE PTR [di],0x0
0x9d3c3: call 0x9d517
0x9d3c6: jmp 0x9d366
eend:
0x9d3c8: mov bx,WORD PTR ds:0x41
0x9d3cc: cmp bx,0x0
0x9d3cf: je 0x9d3dc ; oldInit
0x9d3d1: or bx,0x4000
0x9d3d5: mov ax,0x4f02
0x9d3d8: int 0x10
0x9d3da: jmp 0x9d410 ; apm
oldInit:
0x9d3dc: call 0x9d674
0x9d3df: mov si,0x58
in1:
0x9d3e2: call 0x9d640
0x9d3e5: jae 0x9d3f8
0x9d3e7: mov ah,al
0x9d3e9: shl ah,0x4
0x9d3ec: call 0x9d640
0x9d3ef: jae 0x9d3f8
0x9d3f1: or ah,al
0x9d3f3: mov BYTE PTR [si],ah
0x9d3f5: inc si
0x9d3f6: jmp 0x9d3e2
in6:
0x9d3f8: mov BYTE PTR [si],0xc3
0x9d3fb: pusha
0x9d3fc: push ds
0x9d3fd: push es
0x9d3fe: mov ax,cs
0x9d400: sub ax,0x40
0x9d403: mov es,ax
0x9d405: xor di,di
0x9d407: call 0x9d058
0x9d40a: pop es
0x9d40b: pop ds
0x9d40c: call 0x9d507 ; passkpar
0x9d40f: popa
apm:
0x9d410: mov ax,0x5300
0x9d413: xor bx,bx
0x9d415: int 0x15
0x9d417: jb 0x9d46c
0x9d419: mov ax,0x5303
0x9d41c: xor bx,bx
0x9d41e: int 0x15
0x9d420: jb 0x9d46c
0x9d422: shl eax,0x4
0x9d426: mov ds:0x7da,ax
0x9d429: shr eax,0x10
0x9d42d: and al,0xf
0x9d42f: mov ds:0x7dc,al
0x9d432: shl ecx,0x4
0x9d436: mov WORD PTR ds:0x7e2,cx
0x9d43a: shr ecx,0x10
0x9d43e: and cl,0xf
0x9d441: mov ds:0x7e4,al
0x9d444: shl edx,0x4
0x9d448: mov WORD PTR ds:0x7ea,dx
0x9d44c: shr edx,0x10
0x9d450: and dl,0xf
0x9d453: mov BYTE PTR ds:0x7ec,dl
0x9d457: mov DWORD PTR ds:0x7f0,ebx
0x9d45c: mov ax,0x530e
0x9d45f: xor bx,bx
0x9d461: mov cx,0x101
0x9d464: int 0x15
0x9d466: mov WORD PTR ds:0x7f4,0x2f
apmend:
0x9d46c: mov dx,0x3f2
0x9d46f: mov al,0xc
0x9d471: out dx,al
0x9d472: cli
0x9d473: call 0x9d639 ; empty8042
0x9d476: mov al,0xd1
0x9d478: out 0x64,al
0x9d47a: call 0x9d639 ; empty8042
0x9d47d: mov al,0xdf
0x9d47f: out 0x60,al
0x9d481: call 0x9d639 ; empty8042
0x9d484: mov al,0xff
0x9d486: out 0x21,al
0x9d488: out 0xa1,al
0x9d48a: mov ax,0x1020
di1:
0x9d48d: out 0x20,al
0x9d48f: xor cx,cx
0x9d491: loop 0x9d491
0x9d493: dec ah
0x9d495: jne 0x9d48d
0x9d497: lidtw ds:0x7fa
0x9d49c: xor eax,eax
0x9d49f: mov ax,cs
0x9d4a1: shl eax,0x4
0x9d4a5: add eax,0x7c0
0x9d4ab: mov ds:0x7f6,eax
0x9d4af: lgdtw ds:0x7f4
; здесь где-то db66h ; temporary fix
0x9d4b4: push 0x8
0x9d4b7: push DWORD PTR ds:0x31 ; kentry
0x9d4bc: xor edx,edx
0x9d4bf: mov dx,ss
0x9d4c1: shl edx,0x4
0x9d4c5: mov eax,edx
0x9d4c8: add eax,0x800
0x9d4ce: push eax
0x9d4d0: push DWORD PTR ds:0x29
; pass the 32-bit physical address of the frame buffer to
; Machine.Mod and AosDisplayLinear.Mod
0x9d4d5: push DWORD PTR ds:0x2d
0x9d4da: xor eax,eax
0x9d4dd: mov ebp,eax
0x9d4e0: mov ax,sp
0x9d4e2: add edx,eax
; Enter 80286 protected mode
0x9d4e5: smsw ax
0x9d4e8: or al,0x1
0x9d4ea: lmsw ax
0x9d4ed: jmp 0x9d4ef ; kd0, flush instruction (prefecth) queue
kd0: ; kernel data segment selector
0x9d4ef: mov ax,0x10
0x9d4f2: mov ss,ax
0x9d4f4: mov ds,ax
0x9d4f6: mov es,ax
0x9d4f8: mov fs,ax
0x9d4fa: mov gs,ax
; jump to kernel
0x9d4fc: mov esp,edx
0x9d4ff: pop edi ; kpar1
0x9d501: pop esi ; kpar0
0x9d503: pop eax
; здесь db066h
0x9d505: retf ; jump to kernel via Machine.Mod as 1st module
passkpar:
0x9d507: mov ds:0x29,ax
0x9d50a: mov WORD PTR ds:0x2b,bx
0x9d50e: mov WORD PTR ds:0x2d,cx
0x9d512: mov WORD PTR ds:0x2f,dx
0x9d516: ret
0x9d517: mov di,0x58
0x9d51a: cmp BYTE PTR [di],0x0
Т.е. нас интересует адрес b *0x9d4e2