Advertisement
green1ant

7-4sbs

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