Сравнение введенного пароля с заданным - Assembler
Формулировка задачи:
Задать в программе пароль, в котором отсутствуют цифры. Из введенного пароля перед
сравнением с эталонным удалить цифры (если таковые присутствуют). Выдать сообщение "Ok",
если исходный пароль совпадает с введенным паролем, из которого предварительно удалены
цифры.
Решение задачи: «Сравнение введенного пароля с заданным»
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
Объяснение кода листинга программы
- Создаются локальные переменные и инициализируется размер стека и модель программы.
- Объявляются переменные в сегменте данных:
CrLf
как символы возврата каретки и новой строки,Password
как строкаPassword
,PassLen
как размер строкиPassword
,msgInputPass
как строкаEnter password:
,msgOk
как строкаOk
,kbBuffer
как массив буфера клавиатуры,Len
как переменная длины строки,String
как массив символов. - Начинается сегмент кода.
- В процедуре
main
происходит инициализация сегмента данных. - Вводится пароль с помощью прерывания 21h с параметрами 09h и 0Ah, выводится символ новой строки.
- Удаляются цифры из введенной строки путем сравнения каждого символа с ASCII-кодами цифр и копирования только символов, не являющихся цифрами, в новую строку.
- Сравнивается обработанная строка с паролем, если они совпадают, выводится сообщение
Ok
. - Процедура main завершается с помощью прерывания 21h с параметрами 4C00h.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д