Advertisement
Guest User

Untitled

a guest
Apr 10th, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. STDIN       = 0         # standardowe wejscie
  2. STDOUT      = 1         # standardowe wyjscie
  3.  
  4. SYSCALL = 0x80          # int 0x80 - wywolanie systemu op
  5.  
  6. SYSEXIT     = 1         # zakonczenie procesu
  7. SYSWRITE    = 4         # numer funkcji write
  8. SYSREAD     = 3
  9.  
  10.  
  11. EXIT_SUCCESS = 0  # kod powrotu
  12.  
  13. LENGHT = 5      # Dlugosc linii
  14. # segment danych -------------------------------------  
  15. .data  
  16. napis:  .string "*"
  17. space_len = . - napis
  18.  
  19. spacja:  .string " "
  20. len = . - spacja
  21.  
  22. koniec_linii: .string "\n"
  23. end_len = . - koniec_linii
  24.  
  25. msg_echo: .ascii " "
  26. msg_echo_len = . - msg_echo
  27.  
  28. # Liczniki petli
  29. wysokosc:   .long 0
  30. licznik_i:  .long 0
  31. licznik_j:  .long 0
  32. licznik_k:  .long 0
  33.  
  34. # segment tekstu (kodu) ------------------------------
  35. .text                    
  36. .global _start  
  37. _start:
  38.  
  39.  
  40.  
  41. #Funkcja czytajaca z klawiatury
  42. movl $SYSREAD, %eax           # funkcja do wywołania - SYSREAD
  43. movl $STDIN, %ebx             # 1 arg. - syst. deskryptor stdin
  44. movl $msg_echo, %ecx          # 2 arg. - adres początkowy napisu
  45. movl $msg_echo_len, %edx     # 3 arg. - długość łańcucha
  46. int $0x80
  47.  
  48.  
  49. movl msg_echo, %esi
  50. sbbl $48, %esi
  51. decl %esi
  52. movl %esi, wysokosc
  53.  
  54.  
  55. main_loop:  # Poczatek glownej petli
  56. incl licznik_i
  57.  
  58. movl $0, licznik_j
  59. print_space_loop: #Wypisywanie pustych pol
  60. incl licznik_j
  61.  
  62. # Wywolanie funkcji pisz " " na stdout        
  63. movl $SYSWRITE, %eax  # kod funkcji SYSWRITE        
  64. movl $STDOUT, %ebx   # 1 arg. - syst. deskryptor stdout        
  65. movl $spacja, %ecx    # 2 arg. - adres początkowy napisu        
  66. movl $space_len, %edx       # 3 arg. - długość łańcucha        
  67. int $SYSCALL          # wywołanie przerwania programowego                                
  68.             # wywolanie systemu op
  69.  
  70. #-------------------------#
  71. movl wysokosc, %esi
  72. subl licznik_i, %esi
  73. incl %esi
  74. cmpl %esi, licznik_j
  75. jle print_space_loop
  76.  
  77. movl $0, licznik_k
  78. print_symbol_loop: #Wypisywanie symboli
  79. incl licznik_k
  80.  
  81. # Wywolanie funkcji pisz "*" na stdout        
  82. movl $SYSWRITE, %eax  # kod funkcji SYSWRITE        
  83. movl $STDOUT, %ebx   # 1 arg. - syst. deskryptor stdout        
  84. movl $napis, %ecx    # 2 arg. - adres początkowy napisu        
  85. movl $len, %edx       # 3 arg. - długość łańcucha        
  86. int $SYSCALL          # wywołanie przerwania programowego                                
  87.             # wywolanie systemu op
  88.  
  89. #-------------------------#
  90. movl licznik_i, %esi
  91. decl %esi
  92. imull $2, %esi
  93. cmpl %esi, licznik_k
  94. jle print_symbol_loop
  95.  
  96. # Wywolanie funkcji pisz "\n" na stdout        
  97. movl $SYSWRITE, %eax  # kod funkcji SYSWRITE        
  98. movl $STDOUT, %ebx   # 1 arg. - syst. deskryptor stdout        
  99. movl $koniec_linii, %ecx    # 2 arg. - adres początkowy napisu        
  100. movl $end_len, %edx       # 3 arg. - długość łańcucha        
  101. int $SYSCALL          # wywołanie przerwania programowego                                
  102.             # wywolanie systemu op
  103.  
  104.  
  105. #-------------------------#
  106. movl wysokosc, %esi
  107. cmpl %esi, licznik_i
  108. jle main_loop
  109.  
  110.  
  111. # Wywolanie funkcji exit (zakoncz proces)          
  112. movl $SYSEXIT, %eax   # kod funkcji SYSEXIT        
  113. movl $EXIT_SUCCESS, %ebx # 1 arg. -- kod powrotu z programu        
  114. int $SYSCALL           # wywołanie przerwania programowego
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement