Advertisement
green1ant

7-3almost

Mar 30th, 2019
227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.36 KB | None | 0 0
  1. org 100h
  2.  
  3. Start:
  4.  
  5.  
  6. ;---------------------------------
  7. xor ax, ax
  8. mov si, 0
  9. mov di, 0
  10. xor bx, bx
  11. loop_first:
  12. movsx ax, [arr1 + si]
  13.  
  14. xor di, di
  15. loop_second:
  16. movsx dx, [arr2 + di]
  17.  
  18. cmp ax, dx
  19. je BreakLoop
  20.  
  21. inc di
  22.  
  23. cmp di, 4
  24. je AddToRes
  25. jmp EndLoop
  26.  
  27. AddToRes:
  28. push si
  29. mov si, bx
  30. mov [res + si], al
  31. pop si
  32. inc bx
  33. call PrintDigit
  34.  
  35. EndLoop:
  36. cmp di, 4
  37. jne loop_second
  38.  
  39. BreakLoop:
  40. inc si
  41. cmp si, 4
  42. jne loop_first
  43.  
  44.  
  45. ;---------------------------------
  46.  
  47.  
  48. xor ax, ax
  49. mov si, 0
  50. mov di, 0
  51. loop_first2:
  52. movsx ax, [arr2 + si]
  53.  
  54. xor di, di
  55. loop_second2:
  56. movsx dx, [arr1 + di]
  57.  
  58. cmp ax, dx
  59. je BreakLoop2
  60.  
  61. inc di
  62.  
  63. cmp di, 4
  64. je AddToRes2
  65. jmp EndLoop2
  66.  
  67. AddToRes2:
  68. push si
  69. mov si, bx
  70. mov [res + si], al
  71. pop si
  72. inc bx
  73. call PrintDigit
  74.  
  75. EndLoop2:
  76. cmp di, 4
  77. jne loop_second2
  78.  
  79. BreakLoop2:
  80. inc si
  81. cmp si, 4
  82. jne loop_first2
  83.  
  84.  
  85.  
  86. ;---------------------------------
  87.  
  88. ;ensure that res stores correct data
  89. ;---------------------------------
  90.  
  91. mov ah, $09
  92. mov dx, line
  93. int 21h
  94.  
  95. xor si, si
  96. PrintResultArr:
  97. movsx ax, [res + si]
  98.  
  99. call PrintDigit
  100.  
  101. inc si
  102. cmp si, bx
  103. jne PrintResultArr
  104.  
  105. ;---------------------------------
  106.  
  107. mov ah, $09
  108. mov dx, crash
  109. int 21h
  110. ;delete duplicates
  111.  
  112. xor si, si
  113. ;print first
  114. push bx
  115. movsx bx, [res + si]
  116. call PrintDigit
  117. pop bx
  118.  
  119. mov cx, 1
  120. mov si, 1
  121. xor di, di
  122.  
  123. loop_first3:
  124. movsx ax, [res + si]
  125.  
  126. xor di, di
  127. loop_second3:
  128.  
  129. movsx dx, [res + di]
  130.  
  131. cmp ax, dx
  132. je BreakLoop3
  133.  
  134. inc di
  135.  
  136. cmp di, si
  137. je JustPrint
  138. jmp EndLoop3
  139.  
  140. JustPrint:
  141. inc cx
  142. push bx
  143. mov bx, ax
  144. call PrintDigit
  145. pop bx
  146.  
  147. EndLoop3:
  148. cmp di, si
  149. jne loop_second3
  150.  
  151. BreakLoop3:
  152. inc si
  153. cmp si, bx
  154. jne loop_first3
  155.  
  156. ;---------------------------------
  157.  
  158.  
  159. PrintRes:
  160.  
  161. push ax
  162. mov ah, $09
  163. mov dx, line
  164. int 21h
  165. pop ax
  166.  
  167. ;print ax
  168. mov bx, cx
  169. add bx, '0'
  170.  
  171. mov ah, $02
  172. mov dx, bx
  173. int 21h
  174.  
  175. mov ah, $09
  176. mov dx, pak
  177. int 21h
  178. mov ah, $08
  179. int 21h
  180.  
  181. ret
  182.  
  183.  
  184. PrintDigit:
  185. ;digit in bx
  186. push ax
  187. push bx
  188. push dx
  189.  
  190. mov bx, ax
  191. add bx, '0'
  192. mov ah, $02
  193. mov dx, bx
  194. int 21h
  195.  
  196. mov ah, $09
  197. mov dx, nextLine
  198. int 21h
  199.  
  200. pop dx
  201. pop bx
  202. pop ax
  203.  
  204. ret
  205.  
  206.  
  207.  
  208. pak db 13, 10, 'Press any key to exit...$'
  209. crash db 13, 10, '-----------$'
  210. arr1 db 2, 8, 2, 9
  211. arr2 db 5, 2, 6, 5 ; 2, 4, 5, 7
  212. nextLine db ', $'
  213. line db 13, 10, '$'
  214.  
  215. testit db 2, 4, 5, 7, 7
  216.  
  217. res db 8 dup (?)
  218. ans db 8 dup (?)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement