Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
задачи(решённые)2.3.4 лабы.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
103.22 Кб
Скачать
  1. Дополните программу: измените цвет выводимых на экран символов и при неверном вводе пароля в правом нижнем правом углу выводите сообщение «Ха-ха, Вы ошиблись!!!»

codesg segment para 'code'

assume cs:codesg, ds:codesg, ss:codesg, es:codesg

org 100h

begin: jmp main

;******************************************************************

main proc near

call clear_scrin

; вывод сообщения на экран

mov row,09

mov col,10

lea bp, [message] ; адрес строки

mov cx, 15 ;длина строки

call write_string

;Cмещение курсора на конец выведеного сообщения

add col, 18

lea si, cout

wr:

; Установка позиции курсора

mov ah, 02h

mov bh, 00

mov dl, col

int 10h

;ожидание ввода с клавиатуры без эхоотображения

mov ah, 00h

int 16h

CMP al, 0dh ; конец ввода «Enter»

je wr1

; Введенный символ из al записывается в строку cout

mov [si], al

inc si

; выводится на экран в текущую позицию курсора символ '*'

mov ah, 09

mov al, '*'

mov bh, 00

mov cx, 1

int 10h

inc col

inc coun

CMP coun, 8 ;вводится только 8 символов

jne wr ;повторяем ввод символа

lea si, parol

lea bp, [cout]

wr1:

mov ah, [si]

mov al, [bp]

cmp ah, al

jne q ;выход из программы

cmp cl, coun

je wr2

inc si

inc bp

inc cl

jmp wr1

;выход из программы

MOV ah, 8h

int 21h

q:

call clear_scrin

mov ah, 13h ;установка курсора

mov bh, 0

mov bl, 11001010b

mov dh, 23 ; координаты y

mov dl, 65 ; координата x

lea bp, mess1

mov cl, 14

mov ch, 0

mov al, 1

int 10h

ret

wr2: call ok

main endp

;********************************************************************

;вывод на экран сообщения о правильном вводе пароля

ok proc near

call clear_scrin

lea bp,[mess] ;адрес строки

mov cl, 14

call write_string

ret

ok endp

;********************************************************************

clear_scrin proc near

; Очистка экрана

mov ax, 0600h ; ah=06-прокрутка экрана

; al=00-весь экран

mov bh, 07

mov cx, 0000

mov dx, 184fh

int 10h

ret

clear_scrin endp

;********************************************************************

write_string proc near

mov ah, 13h ; функция вывода на экран

mov al, 1

mov bh, 00 ; номер видео страницы

mov bl, 00001110b

mov dh, 6 ;координаты по строке

mov dl, 6 ;координаты по столбцу

int 10h

ret

write_string endp

message db 'Input password:'

mess db 'You are right!'

mess1 db 'You are wrong!'

row db 00

col db 00

cout db 9 dup (' ')

parol db 'tiraspol'

coun db 0

codesg ends

end begin