어셈블리에서 기본 부트 로더를 만들었지 만 실제로 커널로 점프하지는 않습니다. 그냥 "부팅 중 ..."이라고 말합니다. 나는 그것이 잘못된 장소로 점프하는 것처럼 내가 만든 바보 같은 실수 일 것이라고 확신한다. "부팅 중 ...로드 됨!"과 같은 출력이 표시되어야합니다. 또한 그것을로드하기 전에 es를 0으로 설정하려고했지만 작동하지 않습니다. 내 코드는 다음과 같습니다.어셈블리 부트 로더가 커널로 점프하지 않습니다
mov ax, 9ch
mov ss, ax
mov sp, 4096d
mov ax, 7c0h
mov ds, ax
mov es, ax
xor ah, ah
int 13h
clc
mov si, msg2
call print
mov ah, 02h
xor ax, ax
mov es, ax
mov bx, 0x7E00
mov al, 1h
mov ch, 0
mov cl, 2h
mov dh, 0
int 13h
jc error
jmp 0x7E00
mov si, msg3
call print
error:
mov si, msg
call print
hlt
print:
lodsb
cmp al, 0
jz done
mov ah, 0eh
int 10h
jmp print
done:
ret
msg db "An error occured!!", 0
msg2 db "Booting...", 0
msg3 db "Did not jump to kernel correctly!"
times 510-($-$$) db 0
dw 0xAA55
mov si, msgloaded
call printl
jmp $
printl:
lodsb
cmp al, 0
jz donel
mov ah, 0eh
int 10h
jmp print
donel:
ret
msgloaded db "Loaded!", 0
times 0x400-($-$$) db 0
모든 도움을 받으실 수 있습니다. 나를 도울 수있는 사람은 누구에게나 신용 할 것입니다. 감사!
커널로 점프하지 않았을 수도 있습니다. – Jester
죄송합니다. 상자에 복사 할 때 실수로 삭제 했어야합니다. 죄송합니다. – programmer
또한 'int 13h' 호출은 잘못된 위치에 있습니다 (인수를 설정하기도 전에 ???) ** 그리고 ** 잘못된 위치에 데이터를로드하고 있습니다. – Jester