Сравнение введенного пароля с заданным - Assembler

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

Задать в программе пароль, в котором отсутствуют цифры. Из введенного пароля перед сравнением с эталонным удалить цифры (если таковые присутствуют). Выдать сообщение "Ok", если исходный пароль совпадает с введенным паролем, из которого предварительно удалены цифры.

Код к задаче: «Сравнение введенного пароля с заданным - Assembler»

textual
LOCALS
 
.model small
 
.stack 100h
 
.data
        CrLf    db      0Dh, 0Ah, '$'
        Password        db      'Password'
        PassLen         dw      $-Password
 
        msgInputPass    db      'Enter password: ', '$'
        msgOk           db      'Ok', '$'
        kbBuffer        db      81
        Len             db      ?
        String          db      82 dup(?)
.code
 
main    proc
        mov     ax,     @data
        mov     ds,     ax
 
        ;ввод пароля
        mov     ah,     09h
        lea     dx,     msgInputPass
        int     21h
        mov     ah,     0Ah
        lea     dx,     kbBuffer
        int     21h
        mov     ah,     09h
        lea     dx,     CrLf
        int     21h
        ;удаление из введённой строки символов цифр
        lea     si,     String
        lea     di,     String
        mov     cx,     0
        mov     cl,     Len
        mov     Len,    0       ;пока длина строки без цифр нулевая
@@For:
        mov     al,     [si]
        inc     si
        cmp     al,     '0'
        jb      @@Copy
        cmp     al,     '9'
        jbe     @@Next
@@Copy:
        mov     [di],   al
        inc     di
        inc     [Len]
@@Next:
        loop    @@For
 
        ;сравнение обработанной строки с паролем
        mov     cx,     0
        mov     cl,     Len
        cmp     cx,     PassLen
        jne     @@Exit
        push    es
        mov     ax,     ds
        mov     es,     ax
        lea     si,     String
        lea     di,     Password
        repe    cmpsb
        pop     es
        jne     @@Exit
 
        ;вывод сообщения "Ok"
        mov     ah,     09h
        lea     dx,     msgOk
        int     21h
@@Exit:
        mov     ax,     4C00h
        int     21h
main    endp
 
end     main

6   голосов, оценка 4.500 из 5


СОХРАНИТЬ ССЫЛКУ