O _intensdown_ no mirc disse que hoje tiveram a fazer na escola em VB um programinha que davam um certo valor, e o gajo desenhava estilo uma arvore em ascii. Por exemplo, dava o valor 5, e aquilo desenhava:
*
**
***
****
*****
Como ando ca pica toda do cracking do assembly e tal, tentei fazer isso em assembly, e aqui está o resultado de 3 horas de work:
;this asm can never fail
section .data
estrela db '*'
len equ $-estrela
newline db 0xa
final dd 5
counter1 dd 0
counter2 dd 5
section .text
global main ;must be declared for linker (ld)
main: ;tell linker entry point
_ciclo1:
mov eax, [counter1]
mov ebx, [final]
cmp eax, ebx
je _fim ; se o contador2 == final sai-se
mov dword [counter2],0 ; mete o contador2 a 0
_ciclo2:
mov eax,[counter2]
cmp eax,[counter1]
jle _estrela ; se o contador2 for menor que o 1 entao : estrelinha, senão é uma newline
; newline
mov edx,len
mov ecx,newline
mov ebx,1 ;file descriptor (stdout)
mov eax,4 ;system call number (sys_write)
int 0x80 ;call kernel
mov eax,[counter1]
inc eax
mov dword [counter1], eax ; incrementa o contador 1
jmp _ciclo1
_estrela
mov edx,len
mov ecx,estrela
mov ebx,1 ;file descriptor (stdout)
mov eax,4 ;system call number (sys_write)
int 0x80 ;call kernel
mov eax,[counter2]
inc eax
mov dword [counter2],eax ; incrmenta o contador 2
jmp _ciclo2
_fim:
mov eax,1 ;system call number (sys_exit)
int 0x80 ;call kernel
[bud@daemon tree]$ make
nasm -f elf -l tree2.lst tree2.asm
gcc -o tree tree2.o
[bud@daemon tree]$ ./tree
*
**
***
****
*****
[bud@daemon tree]$
Podem fazer download do sores aqui.