Проверить в заданном тексте баланс открывающихся и закрывающихся круглых скобок - Assembler

Узнай цену своей работы

Формулировка задачи:

Помогите пожалуйста с написанием задачи на языке Assembler Проверить, имеется ли в заданном тексте баланс открывающих и закрывающих круглых скобок, т.е. верно ли, что можно установить взаимно однозначное соответствие открывающих и закрывающих скобок со следующими свойствами a) открывающая скобка всегда предшествует соответствующей закрывающей. b) первый и последний символы текста-пара соответствующих друг другу скобок.

Решение задачи: «Проверить в заданном тексте баланс открывающихся и закрывающихся круглых скобок»

textual
Листинг программы
model   tiny
strLen  equ 200
.code
org 100h
begin:  mov ah,9
    lea dx,dbOut
    int 21h
    mov ah,0ah
    lea dx,dbIn
    int 21h
    mov ah,9
    lea dx,dbRes1
    int 21h
    xor cx,cx
    lea si,dbStr
    mov cl,dbLen
    push    cx
    push    si
    mov bp,sp
@@00:   lodsb
    cmp al,'('
    jnz @@01
    push    ax
@@01:   cmp al,')'
    jnz @@02
    pop bx
    cmp bl,'('
    jnz @@04
@@02:   loop    @@00
    lea dx,dbTrue
    cmp bp,sp
    jz  @@04
@@03:   lea dx,dbFalse
@@04:   mov ah,9
    int 21h
    mov sp,bp
    mov ah,9
    lea dx,dbRes2
    int 21h
    pop si
    pop di
    dec di
    add di,si
    lea dx,dbTrue
    cmp byte ptr[si],'('
    jnz @@05
    cmp byte ptr[di],')'
    jz  @@06
@@05:   lea dx,dbFalse
@@06:   mov ah,9
    int 21h
    xor ax,ax
    int 16h
    ret
dbOut   db  10,13,'Enter string:$'
dbRes1  db  10,13,'Result 1:$'
dbRes2  db  10,13,'Result 2:$'
dbTrue  db  10,13,'True$'
dbFalse db  10,13,'False$'
dbIn    db  strLen
dbLen   db  ?
dbStr   db  strLen dup(?)
    end begin

Оцени полезность:

9   голосов , оценка 4 из 5
Похожие ответы