Mais um blog inútil.

Abril 20, 2009

arvorezinha em x86 2.0 – boot sector

Filed under: Arvorezinha,Assembly,Coding,Fail — dongs @ 11:09

Olá sirs,

Para completar a colecção fiz a arvorezinha como boot sector, sem recorrer a chamadas ao sistema ou à BIOS. Assim até podem usar uma BIOS opensource e a arvorezinha continua a funcionar!

Eis o código:

BITS 16
ORG 0x7C00

start:
mov ax, 0xb800
mov es, ax
mov ax, 0x072a
mov bx, 5
mov dx, 1
xor di, di
_loop1:
mov cx, dx
rep stosw
add di, 160
sub di, dx
sub di, dx
inc dx
cmp dx, bx
jbe _loop1

_loop2:
in al,0x60 ; read from keyboard
cmp al, 1 ; is it escape?
jnz _loop2

jmp 0xFFFF:0000 ; reboot ;-)

; pad to 512
times 510-($-$$) db 0
dw 0xAA55 ; magic boot value

Assemblem com o NASM, e guardem o output de 512 bytes no sector 0 de um disco ou disquete ou CD. As últimas instruções antes do padding servem para esperar que o utilizador carregue na tecla ESC; após isto, reinicia.

 

Output testada no VMWare:

boot

2 comentários a “arvorezinha em x86 2.0 – boot sector”

  1. C-16 diz:

    Já te disse que te amo ?

  2. […] Yes, trivially boring. But still, it gets mildly interesting when you try to implement this in every language you can think of. This is what my friends at blol.org have been doing for the past few years, implementing little trees in almost every language you can think of, from several assembly languages to SQL. Here’s one that runs on the boot sector of a x86 machine. […]

Comentar

widgeon
widgeon
widgeon
widgeon