Enviado em 24/06/2017 - 05:18h
Antes se realmente alguém perguntasse Nelson é realmente possível construir um Sistema Operacional do zero sozinho? É óbvio que a resposta seria negativa. Mas hoje em parte eu diria que sim é realmente possível e qualquer programador, conhecedor de linguagens de baixo e médio nível, poderia construir um. As ferramentas de programação estão a cada vez mais poderosas no casso do gcc, tende a ser uma linguagem mais próxima ao Hardware, até mesmo é possível contruir um OS em 90% de C.
bits 16 ; usaremos endereçamento de 16-Bits
org 0x7c00 ; o nosso offset
jmp short _start ; salta para _start
msg1 db "Hello, World!",0 ;nossa string
_start:
cli ; Desablita interrupções
xor ax, ax ; zera ax
mov ds, ax
mov es, ax
mov ss, ax
mov sp, 0x200 ;512 bytes de pilha
sti ; Hablita interrupções
mov ax, 0x0003 ; define modo vídeo texto 80x25
int 0x10 ; pedido de interrupção de video
mov si, msg1 ; si aponta para nossa string
call puts ; chamando a função imprime string
xor ax, ax ; espera uma tecla
int 0x16 ; pedido de interrupção de teclado
int 0x19 ; pedido de interrupção de BIOS reboot
puts:
pusha ; pões todos os registradores de uso geral na pilha
cld ; flag de direição
.next:
lodsb ; a cada loop pega volor em si e coloca em al, incrementando si
cmp al, 0
je .end
mov ah, 0x0e ; função BIOS TTY
int 0x10
jmp .next
.end:
ret ; retorna
popa ; desempilha todo os registradores de uso geral
times 510 - ($-$$) db 0
dw 0xaa55 ; Assinatura de inicialização