Mais um blog inútil.

Janeiro 11, 2008

Arvorezinha

Filed under: Arvorezinha,Assembly — falso @ 1:00

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.

4 comentários a “Arvorezinha”

  1. amg diz:

    You lie. Não foi hoje que fizemos isto, foi na semana antes das férias do natal porque cheguei atrasado à aula.

  2. mago_do_asfalto diz:

    codigo de nivel excita um gajo ao nível suficiente pra gerar aguadilha de cú nas horas

  3. [...] do grande sucesso que foi o post da Arvorezinha em x86 assembly, fiquei sempre com ela fisgada para fazer isso em outros tipos de processador diferentes. Hoje [...]

  4. [...] do portugal-a-rippar, parece que um tal de Dumpster, em menos de 35 minutos conseguiu ripar a minha arvorezinha de x86 e trocar os nomes das variaveis e labels. Nem o titulo se dignou a mudar, chamou-lhe arvorezinha [...]

Leave a Reply for Arvorezinha - MIPS Assembly | Mais um blog inútil.

widgeon
widgeon
widgeon
widgeon