Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- EXIT = 1
- READ = 3
- WRITE = 4
- STDIN = 0
- STDOUT = 1
- SYSCALL32 = 0x80
- .data
- star: .ascii "*"
- len = .-star
- nline: .ascii "\n"
- nlen = .-nline
- blank: .ascii " "
- blen = .-blank
- bufor: .long 0
- b_size = 1
- counter: .long 0
- .text
- .global _start
- _start:
- # Wczytanie ze standardowego wejscia
- movl $b_size, %edx
- movl $bufor, %ecx
- movl $STDIN, %ebx
- movl $READ, %eax
- int $SYSCALL32
- # Wczytana liczba będzie zapisana w pamięci jako kod ASCII, więc musimy odjąć 48(kod 0 w tablicy ASCII)
- sub $48, bufor
- mov bufor, %esi # licznik pętli
- sub $2, %esi
- mov $1, %edi
- mainLoop:
- blankLoop:
- mov $blank, %edx
- mov $blen, %ecx
- mov $STDOUT, %ebx
- mov $WRITE, %eax
- int $SYSCALL32
- inc counter
- cmp %esi, counter
- jl blankLoop
- mov $0, counter
- dec %esi
- starLoop:
- mov $star, %edx
- mov $len, %ecx
- mov $STDOUT, %ebx
- mov $WRITE, %eax
- int $SYSCALL32
- inc counter
- cmp %edi, counter
- jl starLoop
- mov $0, counter
- add $2, %edi
- dec bufor
- cmp $0, bufor
- mov $nlen, %edx
- mov $nline, %ecx
- mov $STDOUT, %ebx
- mov $WRITE, %eax
- int $SYSCALL32
- jg loop
- # przejście do nowej linii po zakończeniu pętli
- mov $nlen, %edx
- mov $nline, %ecx
- mov $STDOUT, %ebx
- mov $WRITE, %eax
- int $SYSCALL32
- # Wyjscie z programu
- mov $EXIT, %eax
- int $SYSCALL32
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement