Advertisement
DavidsonDFGL

Kernel

Jul 24th, 2013
362
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ; ---------------------------------------------------------
  2. ; Kernel teste by José Ferreira at (sei lá)
  3. ; ---------------------------------------------------------
  4. ;Imprime uma frase na tela e espera uma tecla para reiniciar.
  5.  
  6. ; ---------------------------------------------------------
  7. ; MAIN DO KERNEL
  8. ; ---------------------------------------------------------
  9.  
  10. startKernel:
  11.    mov ax, 1000h        ; Põe endereço em AX
  12.    mov ds, ax           ; Atualiza o segmento de dados
  13.    mov es, ax           ; Atualiza o segmento extra
  14.  
  15.    mov si, helloWord          ; Aponta para a string da mensagem
  16.    call poeString       ; Chama a função para imprimir a mensagem
  17.  
  18.    call reboot
  19.    
  20. ; ---------------------------------------------------------
  21. ; Funções auxiliares e variáveis do nosso bootstrap
  22. ; ---------------------------------------------------------
  23.  
  24. ;------------ imprime uma string na tela (SI=ponteiro para a string) ----------------
  25.  
  26. poeString:
  27.    lodsb                ; Copia o byte em DS:SI para AL e incrementa SI
  28.    or al,al             ; Verifica se o byte lido é zero
  29.    jz volta             ; Se sim, salta para volta
  30.    mov ah,0x0E          ; Serviço 0E da INT 10 da BIOS (Imprimir caracter)
  31.    mov bh,0x00          ; Número da página de vídeo
  32.    mov bx,0x07          ; Imprimir branco em fundo preto
  33.    int 0x10             ; Imprimir caracter
  34.    jmp poeString        ; Pegar próximo caracter
  35.    
  36. volta:
  37.    retn                  ; Terminada a tarefa, voltar ao ponto de chamada
  38.  
  39. ;------------ Aguarda uma tecla ----------------
  40.         getkey:
  41.                 mov ah, 0               ; wait for key
  42.                 int 016h
  43.                 ret
  44.  
  45. ;------------ Reinicia o pc ----------------
  46.         reboot:
  47.                 mov si, ResetPC         ; be polite, and say we're rebooting
  48.                 call poeString
  49.                 call getkey             ; and even wait for a key :)
  50.  
  51.                 db 0EAh                 ; machine language to jump to FFFF:0000 (reboot)
  52.  
  53.                 dw 0000h
  54.                 dw 0FFFFh
  55.                 ; no ret required; we're rebooting! (Hey, I just saved a byte :)
  56.  
  57. ; ---------------------------------------------------------
  58. ; CONSTANTES E VARIAVEIS
  59. ; ---------------------------------------------------------
  60.  
  61. helloWord           db 'SO iniciado',13,10,0      
  62. ResetPC             db 'Aperte uma tecla para reiniciar.',13,10,0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement