- •Напишите программу, которая запрашивает у пользователя имя (максимум 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
- •Ввести с клавиатуры натуральное число. Проверить будут ли его цифры все различны. Вывести на экран сообщение. Преобразование строки в число производить в макрокоманде.
- •Ввести с клавиатуры два натуральных числа. Проверить есть ли у них одинаковые цифры. Если да, вывести их на экран. Преобразование строки в число произвести с помощью макрокоманды
- •Напишите программу, в которой вводится массив целых чисел. С помощью макроса отсортируйте массив любым известным алгоритмом.
- •Дана длина ребра куба. Найти площадь грани.
- •Дана длина ребра куба. Найти площадь полной поверхности этого куба.
- •Дана длина ребра куба. Найти объем этого куба.
Напишите программу, в которой вводятся целые числа c, d. Напишите макрокоманду определения max.
Write MACRO mes ;вывод сообщения на экран
LEA dx, mes
MOV ah, 09h
INT 21h
ENDM
;----------------------------------------------
WriteLine MACRO mes ; вывод сообщения на экран
Write mes
ENDM
;---------------------------------------------
getch MACRO
MOV ah, 8h
int 21h
ENDM
;---------------------------------------------
Exit MACRO
MOV ah, 4ch
INT 21h
ENDM
;---------------------------------------------
ReadLine MACRO
LEA dx, Temp
MOV ah, 0ah
INT 21h
ENDM
;---------------------------------------------
newline macro ; переход на новую строку
mov ah, 02h
mov dl,0ah
int 21h
mov ah,02h
mov dl,0dh
int 21h
endm
;----------------------------------------------
max macro f1,f2 ; максимальное число
local x,en
mov ax, f1
mov bx, f2
cmp ax,bx
ja x
mov dx, bx
jmp en
x: mov dx,ax
en:
endm
;----------------------------------------------
Convert MACRO num ;перевод строки в число
LOCAL m1
XOR ax, ax
XOR cx, cx
MOV cl, real
MOV di, 10
LEA bx, Text
m1:
MUL di
MOV dl, [bx]
SUB dl, 48
ADD al, dl
INC bx
LOOP m1
MOV num, ax
ENDM
;---------------------------------------------
WriteInt MACRO num
LOCAL m1
LOCAL m2
XOR cx, cx
MOV di, 10
MOV ax, num
m1:
MOV dx, 0
DIV di
INC cx
PUSH dx
CMP ax, 0
JG m1
MOV ah, 2h
m2:
POP dx
ADD dl, 48
INT 21h
LOOP m2
ENDM
;----------------------------------------------
codesg segment para 'code'
assume cs:codesg, ds:codesg, ss:codesg, es:codesg
org 100h
begin:
call start
cmsg db 'Vvedite c:', '$'
rc dw ?
fmsg db 'Vvedite d:', '$'
rd dw ?
str1 db 'Rezultat = ', '$'
maximum dw 0
Temp LABEL BYTE
len db 3
Real db ?
Text db 4 DUP(0)
start proc near
;----------------------------------------------
WriteLine cmsg
ReadLine
Convert rc
newline
WriteLine fmsg
ReadLine
Convert rd
newline
max rc,rd
mov maximum,dx
WriteLine str1
WriteInt maximum
getch
exit
;-----------------------------------------------
start endp
codesg ends
end begin
Напишите программу, в которой вводятся целые числа а, b, c, d. Найти max{min(a, b), min(c, d)}, для чего написать макрокоманды определения max и min.
Write MACRO mes ;вывод сообщения на экран
LEA dx, mes
MOV ah, 09h
INT 21h
ENDM
;----------------------------------------------
WriteLine MACRO mes ; вывод сообщения на экран
Write mes
ENDM
;---------------------------------------------
getch MACRO
MOV ah, 8h
int 21h
ENDM
;---------------------------------------------
Exit MACRO
MOV ah, 4ch
INT 21h
ENDM
;---------------------------------------------
ReadLine MACRO
LEA dx, Temp
MOV ah, 0ah
INT 21h
ENDM
;---------------------------------------------
newline macro ; переход на новую строку
mov ah, 02h
mov dl,0ah
int 21h
mov ah,02h
mov dl,0dh
int 21h
endm
;----------------------------------------------
min macro f1,f2 ; минимальное число
local x,en
mov ax, f1
mov bx, f2
cmp ax,bx
ja x
mov dx, ax
jmp en
x: mov dx,bx
en:
endm
;----------------------------------------------
max macro f1,f2 ; максимальное число
local x,en
mov ax, f1
mov bx, f2
cmp ax,bx
ja x
mov dx, bx
jmp en
x: mov dx,ax
en:
endm
;----------------------------------------------
Convert MACRO num ;перевод строки в число
LOCAL m1
XOR ax, ax
XOR cx, cx
MOV cl, real
MOV di, 10
LEA bx, Text
m1:
MUL di
MOV dl, [bx]
SUB dl, 48
ADD al, dl
INC bx
LOOP m1
MOV num, ax
ENDM
;---------------------------------------------
WriteInt MACRO num
LOCAL m1
LOCAL m2
XOR cx, cx
MOV di, 10
MOV ax, num
m1:
MOV dx, 0
DIV di
INC cx
PUSH dx
CMP ax, 0
JG m1
MOV ah, 2h
m2:
POP dx
ADD dl, 48
INT 21h
LOOP m2
ENDM
;----------------------------------------------
codesg segment para 'code'
assume cs:codesg, ds:codesg, ss:codesg, es:codesg
org 100h
begin:
call start
amsg db 'Vvedite a:', '$'
ra dw ?
bmsg db 'Vvedite b:', '$'
rb dw ?
cmsg db 'Vvedite c:', '$'
rc dw ?
fmsg db 'Vvedite d:', '$'
rd dw ?
str1 db 'Rezultat = ', '$'
minn1 dw 0
minn2 dw 0
maximum dw 0
maximumm dw ?
Temp LABEL BYTE
len db 3
Real db ?
Text db 4 DUP(0)
start proc near
;----------------------------------------------
WriteLine amsg
ReadLine
Convert ra
newline
WriteLine bmsg
ReadLine
Convert rb
newline
WriteLine cmsg
ReadLine
Convert rc
newline
WriteLine fmsg
ReadLine
Convert rd
newline
min ra,rb
mov minn1,dx
min rc,rd
mov minn2,dx
max minn1,minn2
mov maximum,dx
WriteLine str1
WriteInt maximum
getch
exit
;-----------------------------------------------
start endp
codesg ends
end begin
