Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- s_s segment stack
- db 20 dup(0)
- s_s ends
- d_s segment
- s1 db '(([{}]))'
- bracketlength db 8
- stackcount db 1
- result db 0
- d_s ends
- c_s segment
- assume ss:s_s, ds:d_s, cs:c_s
- begin:
- mov ax,d_s
- mov ds,ax
- xor ax,ax
- lea si, s1
- m1:
- inc cx
- lodsb;
- cmp al, '('
- je psh
- cmp al, '['
- je psh
- cmp al, '{'
- je psh
- cmp al, ')'
- je brrrackett
- cmp al, ']'
- je brrrackett
- cmp al, '}'
- je brrrackett
- jmp m1
- brrrackett:
- mov bh, stackcount
- dec bh
- mov stackcount, bh
- cmp bh, 0
- je tooManyClosing
- mov bh, 0
- pop bx
- cmp al, ')'
- je par
- dec al
- par:
- dec al
- cmp bl, al
- je NOMISMATCHH
- cmp bl, '('
- je par2
- inc bl
- par2:
- inc bl
- mov dl, bl
- jmp MISMATCHHH
- NOMISMATCHH:
- cmp cl, bracketlength
- je OUTTTT
- jmp m1
- psh:
- mov bl, al
- mov bh, stackcount
- inc bh
- mov stackcount, bh
- mov bh, 0
- push bx
- cmp cl, bracketlength
- je OUTTTT
- jmp m1
- tooManyClosing:
- mov result, 3
- jmp OUTTTT
- notEnoughClosing:
- mov result, 2
- jmp OUTTTT
- MISMATCHHH:
- mov result, 1
- OUTTTT:
- mov ah, 4ch
- int 21h
- c_s ends
- end begin
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement