Advertisement
green1ant

7-3mb

Mar 30th, 2019
1,771
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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.         mov     di, -1
  114.  
  115. loop_it:
  116.         movsx   ax, [res + si]
  117.  
  118.         xor     di, di
  119.         loop_ins:
  120.                 inc     di
  121.                 movsx   dx, [res + di]
  122.  
  123.                 cmp     ax, dx
  124.                 je      BreakThis
  125.  
  126.                 cmp     di, si
  127.                 je      PrintShit
  128.                 jmp     EndOf
  129.  
  130.                 PrintShit:
  131.                 push    bx
  132.                 mov     bx, ax
  133.                 call    PrintDigit
  134.                 pop     bx
  135.  
  136.                 EndOf:
  137.                 cmp     di, si
  138.                 jne     loop_ins
  139.  
  140.  
  141.         BreakThis:
  142.         inc     si
  143.         cmp     si, bx
  144.         jne     loop_it
  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, ax
  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 '-----------$'
  200. arr1            db 1, 2, 1, 4
  201. arr2            db 5, 1, 7, 7 ; 2, 4, 5, 7
  202. nextLine        db ', $'
  203. line            db 13, 10, '$'
  204.  
  205. res             db 8 dup (?)
  206. ans             db 8 dup (?)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement