Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; ---------------------------------------------------------
- ; Kernel teste by José Ferreira at (sei lá)
- ; ---------------------------------------------------------
- ;Imprime uma frase na tela e espera uma tecla para reiniciar.
- ; ---------------------------------------------------------
- ; MAIN DO KERNEL
- ; ---------------------------------------------------------
- startKernel:
- mov ax, 1000h ; Põe endereço em AX
- mov ds, ax ; Atualiza o segmento de dados
- mov es, ax ; Atualiza o segmento extra
- mov si, helloWord ; Aponta para a string da mensagem
- call poeString ; Chama a função para imprimir a mensagem
- call reboot
- ; ---------------------------------------------------------
- ; Funções auxiliares e variáveis do nosso bootstrap
- ; ---------------------------------------------------------
- ;------------ imprime uma string na tela (SI=ponteiro para a string) ----------------
- poeString:
- lodsb ; Copia o byte em DS:SI para AL e incrementa SI
- or al,al ; Verifica se o byte lido é zero
- jz volta ; Se sim, salta para volta
- mov ah,0x0E ; Serviço 0E da INT 10 da BIOS (Imprimir caracter)
- mov bh,0x00 ; Número da página de vídeo
- mov bx,0x07 ; Imprimir branco em fundo preto
- int 0x10 ; Imprimir caracter
- jmp poeString ; Pegar próximo caracter
- volta:
- retn ; Terminada a tarefa, voltar ao ponto de chamada
- ;------------ Aguarda uma tecla ----------------
- getkey:
- mov ah, 0 ; wait for key
- int 016h
- ret
- ;------------ Reinicia o pc ----------------
- reboot:
- mov si, ResetPC ; be polite, and say we're rebooting
- call poeString
- call getkey ; and even wait for a key :)
- db 0EAh ; machine language to jump to FFFF:0000 (reboot)
- dw 0000h
- dw 0FFFFh
- ; no ret required; we're rebooting! (Hey, I just saved a byte :)
- ; ---------------------------------------------------------
- ; CONSTANTES E VARIAVEIS
- ; ---------------------------------------------------------
- helloWord db 'SO iniciado',13,10,0
- ResetPC db 'Aperte uma tecla para reiniciar.',13,10,0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement