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!
fonte
a) Tente iniciar um sistema operacional diferente a partir de um stick. Deve haver instruções sobre como, por exemplo, Coloque o Windows em um pendrive. Se isso funcionou, você sabe que sua máquina pode fazer isso.
b) Se você sabe que sua caixa inicializa qualquer sistema operacional, você sabe que ele inicializa seu sistema operacional quando ele trava ou exibe seu "olá". Você sabe que não reconheceu o sistema operacional quando ele inicializa em sua partição normal. Mais informações aqui: http://en.wikipedia.org/wiki/Master_boot_record
c) O primeiro setor é acessível, abrindo a disco em si. Veja isso: http://msdn.microsoft.com/pt-br/library/windows/desktop/aa363858%28v=vs.85%29.aspx , parágrafo "Discos Físicos e Volumes"
fonte