bits 32
section .text
global _start
_start:
	mov ecx, memory
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
label0_in:
	cmp byte [ecx], 0
	jz label0_out
	inc ecx
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	inc ecx
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	inc ecx
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	inc ecx
	inc byte [ecx]
	dec ecx
	dec ecx
	dec ecx
	dec ecx
	dec byte [ecx]
	jmp label0_in
label0_out:
	inc ecx
	inc byte [ecx]
	inc byte [ecx]
	call putchar
	inc ecx
	inc byte [ecx]
	call putchar
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	call putchar
	call putchar
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	call putchar
	inc ecx
	inc byte [ecx]
	inc byte [ecx]
	call putchar
	dec ecx
	dec ecx
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	call putchar
	inc ecx
	call putchar
	inc byte [ecx]
	inc byte [ecx]
	inc byte [ecx]
	call putchar
	dec byte [ecx]
	dec byte [ecx]
	dec byte [ecx]
	dec byte [ecx]
	dec byte [ecx]
	dec byte [ecx]
	call putchar
	dec byte [ecx]
	dec byte [ecx]
	dec byte [ecx]
	dec byte [ecx]
	dec byte [ecx]
	dec byte [ecx]
	dec byte [ecx]
	dec byte [ecx]
	call putchar
	inc ecx
	inc byte [ecx]
	call putchar
	inc ecx
	call putchar
	call exit
exit:
	mov eax, 1
	int 0x80
getchar:
	mov eax, 3
	mov ebx, 0
	mov edx, 0
	int 0x80
	ret
putchar:
	mov eax, 4
	mov ebx, 1
	mov edx, 1
	int 0x80
	ret
section .data
memory: times 4096 db 0
END
