- •Напишите программу, которая запрашивает у пользователя имя (максимум 10 символов) и затем трижды признаётся пользователю в любви.
- •Int 21h ; Вызов 21 прерывания dos
- •Int 21h ; Вызов 21 прерывания dos
- •Int 21h ; Вызов 21 прерывания dos
- •Напишите программу, запрашивающую у оператора строку, а затем выводящую ее на экран. Выполните трассировку программы.
- •Int 21h ; Вызов 21 прерывания dos
- •Int 21h ; Вызов 21 прерывания dos
- •Напишите программу, запрашивающую у оператора строку. Количество вводимых букв ограничьте программно. Выполните трассировку программы.
- •Int 21h ; Вызов 21 прерывания dos
- •Напишите программу, вводящую строку запроса и ожидающую ответ. В зависимости от ответа “y” или “n” вывести на экран ту или иную строку. Выполните трассировку программы.
- •Int 21h ; Вызов 21 прерывания dos
- •Int 21h ; Вызов 21 прерывания dos
- •Int 21h ; Вызов 21 прерывания dos
- •Ввести с клавиатуры натуральное число. Найти сумму его первой и последней цифры и вывести на экран. Выполните трассировку программы.
- •Напишите программу, запрашивающую у оператора строку, а затем выводящую ее на экран, предварительно изменив заглавные английские буквы на строчные. Выполните трассировку программы.
- •Напишите программу, запрашивающую у оператора строку, а затем выводящую ее на экран в pамке. Выполните трассировку программы.
- •Напишите программу, запрашивающую у оператора строку str1. Необходимо скопировать в строку str2 последний символ из str1 три раза. Выполните трассировку программы.
- •Напишите программу, запрашивающую у оператора строку, а затем выводящую каждое слово в отдельной строке. Выполните трассировку программы.
- •Напишите программу, запрашивающую у оператора строку, а затем выводящую символы введенной строки на экран в обратном порядке. Выполните трассировку программы.
- •Ввести с клавиатуры натуральное число. Поменять порядок следования цифр в числе и вывести на экран.
- •Int 21h ; Вызов 21 прерывания dos
- •Int 21h ; Вызов 21 прерывания dos
- •Int 21h ; Вызов 21 прерывания dos
- •Int 21h ; Вызов 21 прерывания dos
- •Напишите программу, которая вводит с клавиатуры слово и выводит слово лесенкой, уменьшая длину на один символ.
- •Оформите ввод пароля в рамке. Рамка расширяется при вводе символов. Для рисования рамки используйте коды символов:
- •Дополните программу: ввод пароля пока не будет введено правильное слово. При каждом неверном вводе выводите сообщение об этом.
- •Дополните программу. При верном вводе пароля он появляется на экране через временную задержку разного цвета.
- •Дополните программу. Введите строку текста и выведите его по буквам в режиме телетайпа разными по цвету буквами.
- •Дополните программу: вводите пароль 3 раза, каждый раз после ввода отображайте введенное слово и сообщайте верно или неверно введен пароль. Затем выход в dos.
- •Дополните программу: измените цвет выводимых на экран символов и при неверном вводе пароля в правом верхнем углу выводите сообщение «Ха-ха, Вы ошиблись!!!»
- •Дополните программу: измените цвет выводимых на экран символов и при неверном вводе пароля в правом нижнем правом углу выводите сообщение «Ха-ха, Вы ошиблись!!!»
- •Дополните программу: измените цвет выводимых на экран символов и при неверном вводе пароля в центре экрана выводится сообщение «Ха-ха, Вы ошиблись!!!»
- •Введите две строки. В случае если они одинаковые. Выводится сообщение о том что строки совпали, в противном случае выводится сообщение, о том что строки не совпадают.
- •Напишите программу, которая получает строку и слово. С помощью макроса определить входит ли данное слово в строку.
- •Напишите программу, в которой вводятся целые числа а, b. Напишите макрокоманду определения min.
- •Напишите программу, в которой вводятся целые числа c, d. Напишите макрокоманду определения max.
- •Напишите программу, в которой вводятся целые числа а, b, c, d. Найти max{min(a, b), min(c, d)}, для чего написать макрокоманды определения max и min.
- •Вывести на экран своё имя, фамилию и группу, используя макрокоманду.
- •Написать программу, которая спрашивала бы сокращенное имя, а печатала бы полное. В случае незнакомого имени – печатать "я с Вами не знакома".
- •Int 21h ; Вызов 21 прерывания dos
- •Int 21h ; Вызов 21 прерывания dos
- •Ввести с клавиатуры натуральное число. Проверить будут ли его цифры все различны. Вывести на экран сообщение. Преобразование строки в число производить в макрокоманде.
- •Ввести с клавиатуры два натуральных числа. Проверить есть ли у них одинаковые цифры. Если да, вывести их на экран. Преобразование строки в число произвести с помощью макрокоманды
- •Напишите программу, в которой вводится массив целых чисел. С помощью макроса отсортируйте массив любым известным алгоритмом.
- •Дана длина ребра куба. Найти площадь грани.
- •Дана длина ребра куба. Найти площадь полной поверхности этого куба.
- •Дана длина ребра куба. Найти объем этого куба.
Дополните программу: ввод пароля пока не будет введено правильное слово. При каждом неверном вводе выводите сообщение об этом.
csg segment para
assume cs:csg, ds:csg, es:csg, ss:csg
org 100h
start:
jmp main
main proc near
call clrscr
mov ah, 0bh
mov bh, 01h ; Применять палитру 1.
mov bl, 01h ; Установить белый цвет для сообщений
int 10h
lea bp, [msg]
mov cx, 09h ; В выводимой строке 9 букв.
mov dx, 0000h ; Вывод в 0-ю строку, 0-й столбец.
mov bl, 07h ; Белый цвет.
call puts
again:
lea si, inpas ; Загрузить адрес строки для сохранения символов.
input:
mov ah, 02h
mov dh, 01h ; Установить курсор в 1-ю строку.
mov dl, col ; Установить курсор в нужный столбец.
mov bh, 00h ; Установить курсор на 0-й видеостранице.
int 10h
mov ah, 00h ; Ожидание появления символа в буфере клавиатуры.
int 16h
cmp al, 0dh
je check_pass
mov [si], al ; Сохранение текущего символа.
inc si
mov ah, 09h
mov al, '*' ; Выводимый символ.
mov bh, 00h ; Номер видеостраницы.
mov bl, 04h
mov cx, 01h ; Количество повторений.
int 10h
inc cnt
inc col
cmp cnt, 06h
je check_pass
jmp input
check_pass:
lea si, inpas
lea di, pass
xor cx, cx
xor bx, bx
dec cnt
l1:
mov ah, [si+bx]
mov al, [di+bx]
cmp ah, al
jne pass_error
cmp bl, 05h
je exit_ok
inc bl
jmp l1
pass_error:
call err_msg
mov col, 00h
mov cnt, 00h
jmp again
exit_ok:
call ok
exit:
mov ah, 04ch
int 21h
ret
main endp
; Процедура err_msg
err_msg proc near
call clrscr
lea bp, [errmsg]
xor cx, cx
mov cl, 18h
mov dx, 0000h
mov bl, 04h ; Красный цвет.
call puts
ret
err_msg endp
; Процедура OK
ok proc near
call clrscr
lea bp, [okmsg]
xor cx, cx
mov dx, 0000h
mov cl, 02h
mov bl, 02h ; Зеленый цвет.
call puts
mov ah, 00h
int 16h
ret
ok endp
; Процедура puts
puts proc near
mov ah, 13h
mov al, 01h ; Курсор в конец строки.
mov bh, 00h ; Вывод на 0-ю видеостраницу.
int 10h
ret
puts endp
; Процедура clrscr
clrscr proc near
mov ah, 06h
mov al, 00h ; Число прокручиваемых строк.
mov cl, 00h ; Номер столбца верхнего левого угла.
mov ch, 00h ; Номер строки верхнего левого угла.
mov dl, 4fh ; Номер столбца правого нижнего угла.
mov dh, 18h ; Номер строки правого нижнего угла.
mov bh, 07h
int 10h
ret
clrscr endp
msg db "Password: "
okmsg db "OK"
errmsg db "Error, Please try again:"
pass db '111111'
row db 0
col db 0
cnt db 0
inpas db 6 dup("?")
csg ends
end start
Дополните программу. При верном вводе пароля он появляется на экране через временную задержку разного цвета.
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, 5 ;вводится только 5 символов
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, 12
mov dh, 6
mov dl, 6
lea bp, mess1
mov cl, 10
mov ch, 0
mov al, 1
int 10h
ret
wr2:
call ok
main endp
;вывод на экран сообщения о правильном вводе пароля
ok proc near
call clear_scrin
k:
lea bp,[mess] ;адрес строки
mov cl, 5
call write_hello
jmp k
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, 12
mov dh, 6 ;координаты по строке
mov dl, 6 ;координаты по столбцу
int 10h
ret
write_string endp
write_hello proc near
mov ah, 13h
mov al,1
mov bh, 00 ;номер видео страницы
call cveta
mov dh, 6 ;координаты по строке
mov dl, 6 ;координаты по столбцу
int 10h
ret
write_hello endp
cveta proc near
inc bl
cmp bl, 0eh
jb m1
mov bl, 02h
m1: ret
cveta endp
message db 'Vvedite parol: '
mess db 'hello'
mess1 db 'Vi owiblis!'
str1 label byte
row db 00
col db 00
cout db 6 dup (' ')
parol db 'hello'
count db ?
coun db 0
codesg ends
end begin
