Advertisement
Guest User

Untitled

a guest
Dec 12th, 2019
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. s_s segment stack
  2.   db 20 dup(0)
  3. s_s ends   
  4.                                
  5. d_s segment
  6.   s1 db '(([{}]))'
  7.   bracketlength db 8
  8.   stackcount db 1
  9.   result db 0
  10. d_s ends
  11.  
  12. c_s segment
  13.   assume ss:s_s, ds:d_s, cs:c_s
  14.   begin:
  15.   mov ax,d_s
  16.   mov ds,ax
  17.   xor ax,ax
  18.  
  19.   lea si, s1
  20.  
  21.  
  22.   m1:
  23.   inc cx
  24.   lodsb;
  25.  
  26.  
  27.   cmp al, '('
  28.   je psh
  29.  
  30.   cmp al, '['
  31.   je psh
  32.  
  33.   cmp al, '{'
  34.   je psh
  35.  
  36.  
  37.   cmp al, ')'
  38.   je brrrackett
  39.  
  40.   cmp al, ']'
  41.   je brrrackett
  42.  
  43.   cmp al, '}'
  44.   je brrrackett
  45.  
  46.   jmp m1
  47.  
  48.  
  49.   brrrackett:
  50.   mov bh, stackcount
  51.   dec bh
  52.   mov stackcount, bh
  53.   cmp bh, 0
  54.   je tooManyClosing
  55.   mov bh, 0
  56.   pop bx
  57.   cmp al, ')'
  58.   je par
  59.   dec al
  60.   par:
  61.   dec al
  62.   cmp bl, al
  63.   je NOMISMATCHH
  64.  
  65.   cmp bl, '('
  66.   je par2
  67.   inc bl
  68.   par2:
  69.   inc bl
  70.   mov dl, bl
  71.   jmp MISMATCHHH
  72.  
  73.   NOMISMATCHH:
  74.   cmp cl, bracketlength
  75.   je OUTTTT
  76.   jmp m1
  77.  
  78.  
  79.   psh:
  80.   mov bl, al
  81.   mov bh, stackcount
  82.   inc bh
  83.   mov stackcount, bh
  84.   mov bh, 0
  85.   push bx
  86.   cmp cl, bracketlength
  87.   je OUTTTT
  88.   jmp m1
  89.  
  90.  
  91.   tooManyClosing:
  92.   mov result, 3
  93.   jmp OUTTTT
  94.  
  95.   notEnoughClosing:
  96.   mov result, 2
  97.   jmp OUTTTT
  98.  
  99.   MISMATCHHH:
  100.   mov result, 1
  101.  
  102.   OUTTTT:
  103.   mov ah, 4ch
  104.   int 21h
  105. c_s ends
  106. end begin
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement