Advertisement
qtinio

ehhh

May 10th, 2019
260
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.56 KB | None | 0 0
  1. dane SEGMENT ;segment danych
  2. tekst11 db 0dh, 0ah,"[1,1]: ", "$"
  3. tekst12 db 0dh, 0ah,"[1,2]: ", "$"
  4. tekst21 db 0dh, 0ah,"[2,1]: ", "$"
  5. tekst22 db 0dh, 0ah,"[2,2]: ", "$"
  6. tenter db 0dh, 0ah, "$"
  7. nowa db 0dh, 0ah,"odwrocona macierz: ", "$"
  8. minus db "-", "$"
  9. spacja db " ", "$"
  10. a11 db 0
  11. a12 db 0
  12. a21 db 0
  13. a22 db 0
  14. a11n db 0
  15. a12n db 0
  16. a21n db 0
  17. a22n db 0
  18. ad db 0
  19. bc db 0
  20. mianownik db 0
  21.  
  22.  
  23.  
  24. dane ENDS
  25.  
  26.  
  27. rozkazy SEGMENT 'CODE' use16 ;segment rozkazu
  28. ASSUME cs:rozkazy, ds:dane
  29.  
  30. startuj: mov ax, SEG dane
  31. mov ds, ax
  32.  
  33. czytaj: mov dx, offset tekst11 ;tekst 11
  34. call wczyt_a
  35. add [a11], al ;wpisanei do zmiennej
  36.  
  37. mov dx, offset tekst12 ;tekst 12
  38. call wczyt_a
  39. add [a12], al ;wpisanei do zmiennej
  40.  
  41. mov dx, offset tekst21 ;tekst 21
  42. call wczyt_a
  43. add [a21], al ;wpisanei do zmiennej
  44.  
  45. mov dx, offset tekst22 ;tekst 22
  46. call wczyt_a
  47. add [a22], al ;wpisanei do zmiennej
  48.  
  49. licz_m: mov al, [a11] ;mnozenie a11 a21
  50. mov bl, [a22]
  51. mul bl
  52. add [ad], al
  53. call nowalinia
  54. call wyswietl
  55.  
  56. mov al, [a12] ;mnozenie a21 a12
  57. mov bl, [a21]
  58. mul bl
  59. add [bc], al
  60. call nowalinia
  61. call wyswietl
  62.  
  63. mov al, [ad]
  64. sub al, [bc]
  65. add [mianownik], al
  66. cmp al, 0
  67. jz koniec
  68. call nowalinia
  69. call wyswietl
  70.  
  71. abcd: call nowalinia
  72. and ax,0h
  73. and bx,0h
  74. mov al, [a11]
  75. mov bl, [mianownik]
  76. div bl
  77. add [a22n], al
  78. and ax,0h
  79. and bx,0h
  80. mov al, [a22]
  81. mov bl, [mianownik]
  82. div bl
  83. add [a11n], al
  84. and ax,0h
  85. and bx,0h
  86. mov al, [a12]
  87. mov bl, [mianownik]
  88. div bl
  89. add [a21n], al
  90. and ax,0h
  91. and bx,0h
  92. mov al, [a21]
  93. mov bl, [mianownik]
  94. div bl
  95. add [a12n], al
  96.  
  97. wynik: mov ah, 09h ;nowa linia
  98. mov dx, offset nowa
  99. int 21h
  100. mov dx, offset tekst11 ;tekst 11
  101. mov ah, 09h
  102. int 21h
  103. mov al, [a11n]
  104. call wyswietl
  105. mov dx, offset tekst11 ;tekst 11
  106. mov ah, 09h
  107. int 21h
  108. mov dx, offset minus ;tekst 11
  109. mov ah, 09h
  110. int 21h
  111. mov al, [a12n]
  112. call wyswietl
  113. mov dx, offset tekst21 ;tekst 11
  114. mov ah, 09h
  115. int 21h
  116. mov dx, offset minus ;tekst 11
  117. mov ah, 09h
  118. int 21h
  119. mov al, [a21n]
  120. call wyswietl
  121. mov dx, offset tekst22 ;tekst 11
  122. mov ah, 09h
  123. int 21h
  124. mov al, [a22n]
  125. call wyswietl
  126. jmp koniec
  127.  
  128.  
  129. koniec: mov ah, 4CH
  130. int 21H
  131.  
  132. nowalinia: mov ah, 09h ;nowa linia
  133. mov dx, offset tenter
  134. int 21h
  135. ret
  136.  
  137. wczyt_a: mov ah, 09h
  138. int 21h
  139. mov ah, 01h ;czytanie znaku
  140. int 21h
  141. cmp al, "k" ;koniec gdy nacięto "k"
  142. jz koniec
  143. sub al, 48 ;znak do inta
  144. ret
  145.  
  146. wyswietl: mov ah, 0
  147. mov cx, 0 ;licznik cyfr
  148. mov bx, 10 ;dzielnik
  149. p1: mov dx, 0 ;zerowanie starszej części dzielnej
  150. div bx ;dzielenie przez 10 – iloraz w AX, reszta w DX
  151. add dx, 30H ;zamiana reszty na kod ASCII
  152. push dx ;zapisanie cyfry na stosie
  153. inc cx ;inkrementacja licznika cyfr
  154. cmp ax, 0 ;porównanie uzyskanego ilorazu
  155. jnz p1 ;skok gdy iloraz jest różny od zera
  156. p2: pop dx ;pobranie kodu ASCII kolejnej cyfry
  157. mov ah, 2
  158. int 21H ;wyświetlenie cyfry na ekranie
  159. loop p2 ; sterowanie pętlą wyświetlania
  160. ret
  161.  
  162. wys: call nowalinia
  163. mov ah, 02h ;wyswietlenie wybiku mnozenia
  164. add al, 48
  165. mov dl, al
  166. int 21h
  167. ret
  168. rozkazy ENDS
  169.  
  170. stosik SEGMENT stack
  171. dw 128 dup(?)
  172. stosik ENDS
  173.  
  174. END startuj
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement