Advertisement
green1ant

7-4working

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