Advertisement
Guest User

Untitled

a guest
Mar 26th, 2019
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.26 KB | None | 0 0
  1. EXIT = 1
  2. READ = 3
  3. WRITE = 4
  4. STDIN = 0
  5. STDOUT = 1
  6. SYSCALL32 = 0x80
  7.  
  8. .data
  9. star: .ascii "*"
  10. len = .-star
  11. nline: .ascii "\n"
  12. nlen = .-nline
  13. blank: .ascii " "
  14. blen = .-blank
  15.  
  16. bufor: .long 0
  17. b_size = 1
  18. counter: .long 0
  19.  
  20. .text
  21. .global _start
  22.  
  23. _start:
  24. # Wczytanie ze standardowego wejscia
  25. movl $b_size, %edx
  26. movl $bufor, %ecx
  27. movl $STDIN, %ebx
  28. movl $READ, %eax
  29. int $SYSCALL32
  30.  
  31. # Wczytana liczba będzie zapisana w pamięci jako kod ASCII, więc musimy odjąć 48(kod 0 w tablicy ASCII)
  32. sub $48, bufor
  33.  
  34.  
  35.  
  36. mov bufor, %esi # licznik pętli
  37. sub $2, %esi
  38. mov $1, %edi
  39.  
  40. mainLoop:
  41.  
  42. blankLoop:
  43. mov $blank, %edx
  44. mov $blen, %ecx
  45. mov $STDOUT, %ebx
  46. mov $WRITE, %eax
  47. int $SYSCALL32
  48. inc counter
  49. cmp %esi, counter
  50. jl blankLoop
  51.  
  52. mov $0, counter
  53. dec %esi
  54.  
  55. starLoop:
  56. mov $star, %edx
  57. mov $len, %ecx
  58. mov $STDOUT, %ebx
  59. mov $WRITE, %eax
  60. int $SYSCALL32
  61. inc counter
  62. cmp %edi, counter
  63. jl starLoop
  64.  
  65. mov $0, counter
  66. add $2, %edi
  67.  
  68. dec bufor
  69. cmp $0, bufor
  70.  
  71. mov $nlen, %edx
  72. mov $nline, %ecx
  73. mov $STDOUT, %ebx
  74. mov $WRITE, %eax
  75. int $SYSCALL32
  76. jg loop
  77.  
  78.  
  79.  
  80. # przejście do nowej linii po zakończeniu pętli
  81. mov $nlen, %edx
  82. mov $nline, %ecx
  83. mov $STDOUT, %ebx
  84. mov $WRITE, %eax
  85. int $SYSCALL32
  86.  
  87.  
  88. # Wyjscie z programu
  89. mov $EXIT, %eax
  90. int $SYSCALL32
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement