arvorezinha em x86 2.0 – boot sector
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:
Já te disse que te amo ?
[…] 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. […]