- •Напишите программу, которая запрашивает у пользователя имя (максимум 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
- •Ввести с клавиатуры натуральное число. Проверить будут ли его цифры все различны. Вывести на экран сообщение. Преобразование строки в число производить в макрокоманде.
- •Ввести с клавиатуры два натуральных числа. Проверить есть ли у них одинаковые цифры. Если да, вывести их на экран. Преобразование строки в число произвести с помощью макрокоманды
- •Напишите программу, в которой вводится массив целых чисел. С помощью макроса отсортируйте массив любым известным алгоритмом.
- •Дана длина ребра куба. Найти площадь грани.
- •Дана длина ребра куба. Найти площадь полной поверхности этого куба.
- •Дана длина ребра куба. Найти объем этого куба.
Дополните программу: измените цвет выводимых на экран символов и при неверном вводе пароля в центре экрана выводится сообщение «Ха-ха, Вы ошиблись!!!»
; Аналогично предыдущему (изменить координаты)
Дополните программу: ввод пароля пока не будет введено правильное слово. При каждом неверном вводе выводите сообщение об этом красным цветом в лувом верхнем углу, при верном вводе пароля он появляется на экране экране через временную задержку разного цвета в правом верхнем углу.
;Аналогично предыдущим
Введите две строки. В случае если они одинаковые. Выводится сообщение о том что строки совпали, в противном случае выводится сообщение, о том что строки не совпадают.
stacksg segment para stack 'Stack'
dw 32 dup(?)
stacksg ends
datasg segment para 'Data'
d1 label byte
max1 db 50
len1 db ?
ary1 db 51 dup('$')
d2 label byte
max2 db 50
len2 db ?
ary2 db 51 dup('$')
message db 'HI!$'
acc db 'sovpali$'
message2 db 'HI!$'
no_a db 'ne sovpali$'
mes1 db 'Vvedite stroku$'
datasg ends
codesg segment para 'Code'
begin:
assume cs:codesg, ds:datasg, ss:stacksg, es:datasg
push ds
sub ax,ax
push ax
mov ax,datasg
mov ds,ax
mov dh,0
call kursor
mov ah,09h
lea dx,mes1
int 21h
mov dh,1
call kursor
mov ah,0ah
lea dx,d1
int 21h
mov dh,2
call kursor
mov ah,09h
lea dx,mes1
int 21h
mov dh,3
call kursor
mov ah,0ah
lea dx,d2
int 21h
mov dh,4
call kursor
mov bx, offset len1
mov al, [bx]
mov bx, offset len2
mov ah, [bx]
cmp al,ah
jnz a3
push ds
pop es
cld
mov cl,al
mov si,offset ary1
mov di,offset ary2
repe cmpsb
jcxz a1; если cx равен нулю -- строки совпали сообщим об этом
mov ah,9
lea dx,no_a ; если cx не равен нулю -- строки не совпали сообщим об этом
int 21h
jmp a2; идем на выход из программы
a1: mov ah,9
lea dx,acc
int 21h
a2: mov ah,8
int 21h
mov ah,4ch ; в любом случае выходим из программы
int 21h
a3: mov ah,9
lea dx,no_a
int 21h
jmp a2
kursor proc near
push ax
push dx
mov dl,0
mov bh,0
mov ah,02h
int 10h
pop ax
pop dx
ret
kursor endp
codesg ends
end begin
Программа подсчета количества введенных символов и при нажатии сочетания клавиш Alt+C прекратить ввод. Вычисления производить в процедуре.
.model small
.data
CountCHR dw 0
AIndex dw 0
StrCount db 8 dup(?)
stdout equ 1
info db '‚Введите строку: ',10,13,'$'
info1 db 10,13,'Количество введённых символов: ','$'
.code
myp proc
mov ax, @data
mov ds, ax
mov AH, 09h
mov DX, offset info
int 21h
again:
mov AH, 08h
int 21h
cmp AL, 0
je AltCtrl
mov DL, AL
mov AH, 02h
int 21h
inc CountCHR
jmp again
AltCtrl:
mov AH, 08h
int 21h
cmp AL, 2Eh
je quit
jmp again
quit:
mov AX, CountCHR
cmp AX, 0
je endb
mov AH, 09h
mov DX, offset info1
int 21h
mov AX, CountCHR
call PutI2
mov AH, 40h
mov DX, offset STRCount
mov BX, stdout
mov CX, 08h
int 21h
endb:
mov ax, 4C00h
int 21h
myp endp
Puti2 proc near
mov bx, 10
xor dx, dx
div bx
or ax, ax
jz Done
push dx
call Puti2
pop dx
Done: mov al, dl
or al, '0'
call PutCH
ret
PutI2 endp
PutCH proc near
mov di, AIndex
mov STRCount[di], al
mov byte ptr STRCount+1[di], 0
inc AIndex
ret
PutIt endp
.stack
dw 32 dup(?)
end myp
******************************************************************************************************************************************************************************************************************************************************************************************************************************
Л/р №4
Используя макроопределения решить следующие задачи:
