|
| 14 Jul 2011 04:58 PM |
Be sure to try convert it to a CD, Cause it only works at a disket at now. Gonna post the code here:
Boot loader:
org 7C00h ;organiza o offset ;inicialização da pilha mov ax, 07C0h mov ss, ax ;seta o SS para 07C0h mov sp, 03FEh ;aponta para o topo da pilha ;seta segmento de dados xor ax, ax ;zera AX mov ds, ax ;seta o segmento de dados par 0000h ;altera o modo de vídeo mov ah, 00h ;subfucao para setar modo de vídeo mov al, 03h ;03h = 80x25, 16 cores int 10h ;interrupt de vídeo ;le dados do disquete mov ah, 02h ;subfunção de leitura mov al, 1 ;numero de setores para ler mov ch, 0 ;trilha ( cylinder ) mov cl, 2 ;setor mov dh, 0 ;cabeça mov dl, 0 ;drive ( 00h = A: ) mov bx, 0800h ;ES:BX aponta para o local da memória_ mov es, bx ;onde vai ser escrito os dados_ mov bx, 0 ;0800:0000h ( ES = 0800h, BX = 0000h ) int 13h ;interrupt de disquete jmp 0800h:0000h
Kernel: org 0000h ;organiza o offset push cs ;CS = endereço do programa atual pop ds ;DS = CS call clearscreen ;chama procedure de limpar a tela lea si, Mensagem ;SI = endereço da mensagem mov ah, 0Eh ;subfuncao para imprimir caractere repetição: mov al, [si] ;move para AL o caractere em SI cmp al, 0h ;compara com 0 ( fim da string ) jz terminou ;caso terminou, pule para ‘terminou’ int 10h ;interrupção de video inc si ;próximo caractere jmp repetição ;repete o processo ate achar o 0 terminou: mov ah, 0h ;subfuncao de aguardar tecla int 16h ;interrupção de teclado mov ax, 0040h ;método de reboot consiste em setar_ mov ds, ax ;o valor do endereço 0040:0072h_ mov w.[0072h], 1234h ;para 1234h e pular para o endereço_ jmp 0FFFFh:0000h ;FFFF:0000h clearscreen proc ;procedure de limpar a tela pusha ;coloca todos os reg na pilha mov ah, 06h ;subfuncao de rolar a tela pra cima mov al, 0 ;limpa a tela mov bh, 0000_1111b ;seta as cores ( fundo_texto ) mov ch, 0 ;linha do canto sup. esq. mov cl, 0 ;coluna do canto sup. esq. mov dh, 19h ;linha do canto inf. dir. ( 25 ) mov dl, 50h ;coluna do canto inf. dir. ( 80 ) int 10h ;interrupção de vídeo popa ;repõe os valores dos registradores ret ;retorna para o código clearscreen endp Mensagem db ‘Meu primeiro SO’,0 ;nossa string que vai ser exibida |
|
|
| Report Abuse |
|
|
|
| 14 Jul 2011 05:00 PM |
| Lol; my browser asked me if I wanted to translate the page into English because it was in Portuguese... |
|
|
| Report Abuse |
|
|
|
| 14 Jul 2011 05:01 PM |
@Nick Fergo is brazilian, And that ends people saying "Brazilians are dumb." |
|
|
| Report Abuse |
|
|
|
| 14 Jul 2011 05:03 PM |
I doubt a few lines of assembly is going to make a good bootloader or kernel.
But brofist for NASM syntax. |
|
|
| Report Abuse |
|
|
Camoy
|
  |
| Joined: 21 May 2009 |
| Total Posts: 6207 |
|
| |
|
|
| 14 Jul 2011 05:04 PM |
@Necro Thats a simple OS written in Assembly, If you want more you need make a bootloader that loads C, That is more easier. Also this is not a Windows or Linux equivalent, Its a example. |
|
|
| Report Abuse |
|
|
|
| 14 Jul 2011 05:39 PM |
| What architecture is that made for? |
|
|
| Report Abuse |
|
|
LocalChum
|
  |
| Joined: 04 Mar 2011 |
| Total Posts: 6906 |
|
| |
|
mattchewy
|
  |
| Joined: 19 Feb 2008 |
| Total Posts: 7300 |
|
|
| 14 Jul 2011 05:48 PM |
Lol, it's not like he didn't just go and copy paste this off the internet...
br(.)groups(.)yahoo.com/group/assembly-br/message/1301 |
|
|
| Report Abuse |
|
|
|
| 14 Jul 2011 05:48 PM |
| 900q bit processors are better, chum. |
|
|
| Report Abuse |
|
|
blocco
|
  |
| Joined: 14 Aug 2008 |
| Total Posts: 29474 |
|
|
| 14 Jul 2011 05:52 PM |
| The comments are in a different language, fail |
|
|
| Report Abuse |
|
|
dap300
|
  |
| Joined: 23 Nov 2009 |
| Total Posts: 4738 |
|
| |
|