Eu estava tentando escrever um bootloader na linguagem assembly para um drive USB, para testá-lo em outro computador. O bootloader (deve) funcionar com processadores Intel. O computador que eu estou testando (windows 7 com intel celeron e 2 GB de memória RAM) deve estar rodando, ele ainda tem uma opção para inicializar a partir de uma unidade USB na BIOS (e detecta a unidade). Quando eu corro a inicialização da unidade, ela inicializa no Windows. Ele deve estar exibindo meu sistema operacional personalizado, que é basicamente apenas um programa de montagem do tipo Hello-World. Eu estou supondo que isso é porque não conseguiu encontrar o sistema operacional: Ou o OS-tag (que eu encontrei devemos ser "dw 0xAA55") não está correto, o drive USB não é inicializável, ou eu simplesmente não estou colocando o arquivo bin bootloader no primeiro setor.
Minhas perguntas são: Como testar se (a) o drive USB é capaz de inicializar um sistema operacional, (b) se o sistema operacional está sendo reconhecido, e (c) se o arquivo bin está no setor correto (o primeiro setor) .
Aqui está o código de montagem:
org 7C00h
jmp 0x0:start
start:
cli
mov ax, 0x9000 ;Set up stack
mov ss, ax ;Tell processor where stack is
mov sp, 0xFB00 ;Set stack offset
sti
mov AH, 0Eh ;Tell bios we're writing a char to screen!
mov AL, 'T' ;Load a new character into memory
int 10h ;Call BIOS video interrupt
jmp start ;And so on and so on
times 510-($-$$) db 0 ;Fill rest of sector up with 0s to make this 512B (a sector)
dw 0xAA55 ;Let BIOS know this is an OS! (defines a word)
Eu sou bastante novo para a montagem, por isso, se os comentários depois de algumas das linhas não corresponderem ao que deveriam ser, então provavelmente é por isso. Obrigado pela ajuda!