Strzyk

Suma + zamiana liczb przez stos

May 22nd, 2018
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.01 KB | None | 0 0
  1. ;;;;;;;;;; Kompilacja programu ;;;;
  2. ; tasm program.asm ;;;;;;
  3. ;;;;;;;;;; Linkowanie ;;;;;;;;;;;
  4. ;tlink program.obj ;;;;;;;;;;;;
  5. ;;;;;;;;;; Wykonanie programu ;;;;;
  6. ;program.exe
  7.  
  8.  
  9.  
  10. ;stosik SEGMENT STACK
  11. ; DB 328 DUP(?)
  12. ;stosik ENDS
  13.  
  14. assume cs:kod, ds:dane ;linia moĹźe wystÄ?powaÄ? w róşnych miejscach
  15.  
  16. dane segment
  17. napis db 'Wprowadz liczbe_1: $',13,10
  18. napis2 db 'Wprowadz liczbe_2: $',13,10
  19. suma db 'suma:$';
  20. nl db 13,10, '$';
  21. gw db '*$';
  22. zmp dw ?
  23. zmp2 dw ?
  24. dane ends
  25.  
  26. kod segment
  27. start:
  28. mov ax, seg dane
  29. mov ds, ax
  30. mov ax, 3 ;czysci ekran
  31. int 10h ;czysci ekran
  32. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  33. mov dx, offset napis
  34. mov ah, 9h
  35. int 21h
  36. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  37.  
  38. ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  39. ; wczytywanie wartosci liczbowej z klawiatury
  40. ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  41. xor bx,bx
  42.  
  43. wczytaj:
  44.  
  45. ;cmp bx, 65535
  46. ;ja koniec_wczytania
  47.  
  48. mov ah, 7h ;czytanie z klawiatury znak w AL bez echa
  49. int 21h
  50.  
  51. xor dx, dx
  52.  
  53. mov dl, al
  54. cmp dl, 13 ;enter
  55. je koniec_wczytania
  56.  
  57. cmp dl, '0'
  58. jl wczytaj ;nie liczba
  59.  
  60. cmp dl, '9'
  61. jg wczytaj ;nie liczba
  62.  
  63. mov ah, 2h
  64. int 21h
  65.  
  66. sub dl, '0'
  67. push dx
  68. mov ax, bx
  69. mov cx, 10
  70. mul cx
  71. pop dx
  72.  
  73. add ax, dx
  74. mov bx, ax
  75. jmp wczytaj
  76.  
  77. koniec_wczytania:
  78.  
  79. mov zmp, bx
  80.  
  81.  
  82.  
  83. mov dx, offset nl
  84. mov ah, 9h
  85. int 21h
  86.  
  87. xor bx, bx ;;;;;;;tu brak wyzerowania bx
  88.  
  89. mov dx, offset napis2
  90. mov ah, 9h
  91. int 21h
  92. wczytaj2:
  93.  
  94. ;cmp bx, 65535
  95. ;ja koniec_wczytania
  96.  
  97. mov ah, 7h ;czytanie z klawiatury znak w AL bez echa
  98. int 21h
  99.  
  100. xor dx, dx
  101.  
  102. mov dl, al
  103. cmp dl, 13 ;enter
  104. je koniec_wczytania2
  105.  
  106. cmp dl, '0'
  107. jl wczytaj2 ;nie liczba
  108.  
  109. cmp dl, '9'
  110. jg wczytaj2 ;nie liczba
  111.  
  112. mov ah, 2h
  113. int 21h
  114.  
  115. sub dl, '0'
  116. push dx
  117. mov ax, bx
  118. mov cx, 10
  119. mul cx
  120. pop dx
  121.  
  122. add ax, dx
  123. mov bx, ax
  124. jmp wczytaj2
  125.  
  126. koniec_wczytania2:
  127. mov zmp2, bx
  128. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  129. mov dx, offset nl
  130. mov ah, 9h
  131. int 21h
  132. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  133. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sumowanie
  134.  
  135. mov ax,zmp2
  136. mov bx,zmp
  137. cmp ax,bx
  138. js zamiana
  139. cmp ax,bx
  140. jns koniec
  141.  
  142. zamiana:
  143. mov zmp,ax
  144. mov zmp2,bx
  145.  
  146. koniec:
  147.  
  148.  
  149. mov bx, zmp2
  150. sub bx, zmp
  151. mov cx, bx
  152. mov bx, zmp
  153.  
  154.  
  155.  
  156. zamien:
  157.  
  158.  
  159.  
  160.  
  161.  
  162. petlacx:
  163. inc zmp
  164. add bx, zmp
  165. loop petlacx
  166.  
  167. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  168. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  169. mov dx, offset suma
  170. mov ah, 9h
  171. int 21h
  172. ;add bx, zmp
  173. ;wyswietlanie zawartosci liczbowej z rejestru ax
  174.  
  175. mov ax, bx
  176. wyswietl:
  177.  
  178. mov cx, 0
  179. petla11:
  180. mov dx,0
  181. mov bx, 10
  182. div bx
  183. push dx
  184. inc cx
  185. cmp ax, 0
  186. jnz petla11
  187. mov dx, 0
  188. petla21:
  189. pop dx
  190. mov ah, 02h
  191. add dl, 48
  192. int 21h
  193. loop petla21
  194.  
  195. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  196. ;;; WyjĹ?cie do systemu DOS
  197. mov ah, 4ch
  198. int 21h
  199. kod ends
  200. end start
Add Comment
Please, Sign In to add comment