
- •Напишите программу, которая запрашивает у пользователя имя (максимум 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
- •Ввести с клавиатуры натуральное число. Проверить будут ли его цифры все различны. Вывести на экран сообщение. Преобразование строки в число производить в макрокоманде.
- •Ввести с клавиатуры два натуральных числа. Проверить есть ли у них одинаковые цифры. Если да, вывести их на экран. Преобразование строки в число произвести с помощью макрокоманды
- •Напишите программу, в которой вводится массив целых чисел. С помощью макроса отсортируйте массив любым известным алгоритмом.
- •Дана длина ребра куба. Найти площадь грани.
- •Дана длина ребра куба. Найти площадь полной поверхности этого куба.
- •Дана длина ребра куба. Найти объем этого куба.
Int 21h ; Вызов 21 прерывания dos
lea dx, string ; Загрузка адреса списка параметров
mov ah, 0ah ; Запрос функции ввода
Int 21h ; Вызов 21 прерывания dos
mov dh, 12 ; Установка позиции курсора
mov dl, 40
mov bh, 00
mov ah, 02h ; Вызов функции установки курсора
int 10h
mov bl,real ; Поместить указатель на конец строки
mov bh,00
mov all[bx],'$'
lea dx, string+2
mov ah, 09h
Int 21h ; Вызов 21 прерывания dos
mov ah,4ch ; Выход в DOS в 21 прерывании
int 21h
start endp
codesg ends
end begin
Ввести с клавиатуры натуральное число. Найти сумму его первой и последней цифры и вывести на экран. Выполните трассировку программы.
codes SEGMENT para 'code'
assume cs:codes,ds:codes,es:codes,ss:codes
org 100h
main:
jmp begin
str1 db 10,?,10 dup (?)
mes db "Введите число : ","$"
newline db 13,10,'$'
begin:
mov ah,09h ;выводим приглашение
lea dx,mes
int 21h
mov ah,0ah ;вводим строку
lea dx,str1
int 21h
mov ah,09h ;переход на новую строку
lea dx,newline
int 21h
mov cl,str1+2 ;вычисляем сумму 1 и второго символа
sub cl,30h
xor bx,bx
mov bl,str1+1
dec bx
add cl,str1+2[bx]
sub cl,30h
cmp cl,10 ;если сумма больше 10 выводим сначала '1'
jb prod ;затем сумму-10 (сумма всегда маньше 20)
mov dl,'1'
mov ah,02h
int 21h
sub cl,10
prod:
mov dl,cl
add dl,30h
mov ah,02h
int 21h
mov ah,4ch
int 21h
codes ends
end main
Напишите программу, запрашивающую у оператора строку из pусских букв, а затем выводящую ее на экран, предварительно изменив строчные буквы на заглавные, а заглавные - на стpочные. Выполните трассировку программы.
codesg segment para 'code'
assume cs:codesg, ds:codesg, ss:codesg, es:codesg
org 100h
begin:
jmp start
message db 'Vvedite stroku: ','$'
string label byte
symb db 80
real db ? ;
str1 db 80 dup ('$');
start: mov dh, 0
mov dl, 0
mov bh, 00
mov ah, 02h
int 10h
mov ah, 09h
lea dx, message
int 21h
lea dx, string
mov ah, 0ah
int 21h
mov dh, 1
mov dl, 0
mov bh, 00
mov ah, 02h
int 10h
xor cx,cx
xor dx,dx
mov bx,0
mov cl,real
l1:mov dl,str1[bx]
test dl,00100000b
jz m1
jnz m2
k1:mov ah,02h
int 21h
inc bx
loop l1
mov dh, 2
mov dl, 0
mov bh, 00
mov ah, 02h
int 10h
mov ah, 09h
lea dx,str1
int 21h
mov ah,04ch
int 21h
m1:or dl,00100000b
jmp k1
m2:and dl,11011111b
jmp k1
codesg ends
end begin
Напишите программу, запрашивающую у оператора строку, а затем выводящую ее на экран, предварительно изменив заглавные английские буквы на строчные. Выполните трассировку программы.
.MODEL tiny
.DATA
Text db 'Input string:$'
Input LABEL BYTE
Max db 60
Real db ?
Buffer db 61 DUP('$'),'$'
.CODE
ORG 100h
Main PROC
LEA dx, Text
MOV ah, 9h
INT 21h
LEA dx, Input
MOV ah, 0ah
INT 21h
CALL Convert
MOV ah, 02h;переход на новую строку
MOV dl, 0ah
INT 21h
MOV ah, 02h
MOV dl, 0dh
INT 21h
LEA dx, Buffer;выводим готовую строку на экран
MOV ah, 9h
INT 21h
MOV ah, 8h
INT 21h
MOV ah, 4ch
INT 21h
Main ENDP
Convert PROC
MOV cl, Real
MOV ch, 0
MOV bx, 0;индекс в массиве
Start:
MOV ah, DS:[Buffer+bx];выбор символа из массива
CMP ah, 65;если меньше 65 - пропускаем
JB Finish
CMP ah, 90;если больше 90 - пропускаем
JA Finish
OR ah, 00100000b;выставляем 5 бит
MOV DS:[Buffer+bx], ah
Finish:
INC bx
LOOP Start
RET
Convert ENDP
END Main