Преобразовать последовательность, удалив каждый символ '*' - Assembler

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

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

Дана последовательность символов Sl,...,Sn. Преобразовать последовательность, удалив каждый символ '*'. Строку символов ввести с клавиатуры, результат результат вывести на экран.

Решение задачи: «Преобразовать последовательность, удалив каждый символ '*'»

textual
Листинг программы
.model small
 
.stack 100h
 
.data
        CrLf    db      0Dh, 0Ah, '$'
        KeyBuf  db      80, ?, 81 dup(?)
        Prompt  db      'Enter a string:', 0Dh, 0Ah, '$'
        Result  db      'Result string:', 0Dh, 0Ah, '$'
.code
 
main    proc
        mov     ax,     @data
        mov     ds,     ax
 
        ;ввод строки
        mov     ah,     09h
        lea     dx,     [Prompt]
        int     21h
        mov     ah,     0Ah
        lea     dx,     [KeyBuf]
        int     21h
        mov     ah,     09h
        lea     dx,     [CrLf]
        int     21h
        ;обработка строки
        lea     si,     [KeyBuf+2]
        mov     di,     si
        mov     ax,     ds
        mov     es,     ax
        mov     cx,     0
        mov     cl,     [KeyBuf+1]
        jcxz    @@Skip
        @@For:
                lodsb
                cmp     al,     '*'
                je      @@Next
                stosb
        @@Next:
        loop    @@For
        @@Skip:
        ;запись в конец строки символа ограничителя
        mov     al,     '$'
        stosb
        ;вывод результата
        mov     ah,     09h
        lea     dx,     [KeyBuf+2]
        int     21h
        ;завершение программы
        mov     ax,     4C00h
        int     21h
main    endp
 
end     main

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

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