Контрольная работа по "Программированию"
Автор: 11111111111 • Февраль 2, 2022 • Контрольная работа • 2,111 Слов (9 Страниц) • 195 Просмотры
Вариант № 7
Задание 1
Разработать блок-схему и написать программу вычисления выражения:
[pic 1] где [pic 2]
Блок-схема алгоритма программы:
[pic 3]
Текст программы:
MASM
MODEL small
STACK 256
.data
k db 2
y dw ?
.code
.startup
; чтобы не вводить дополнительные переменные i и j, воспользуемся правилом,
; что от перестановки мест слагаемых (сомножителей) сумма (произведение)
; не изменяется
MOV CX, 3 ; счетчик внешнего цикла
MOV y, 1 ; начальное значение произведения
M2: MOV SI,CX ; спасаем значение счетчика внешнего цикла
MOV AH, 0 ; обнуляем старший байт произведения
MOV AL, CL ; начальное значение суммы (AL = i)
MOV BL, CL
ADD BL, BL ; BL = 2*i
MOV CX, 2 ; счетчик внутреннего цикла
M1: ADD AL, BL ; AL = AL + BL = AL + 2*i
ADD AL, CL ; AL = AL + CL = AL + j
LOOP M1 ; завершение внутреннего цикла
MUL y ; умножаем
MOV y, AX ; сохраняем результат
MOV CX, SI ; восстанавливаем значение счетчика внешнего цикла
LOOP M2 ; завершение внешнего цикла
XOR DX, DX ; DX = 0
MOV BH, DL ; BH = 0;
MOV BL, k
ADD BL, BL ; BL = 2*k;
DIV BX ; AX = DX:AX/BX
MOV y, AX ; сохраняем результат
CALL PROCOUTNUM ; выводим результат
.exit
include io.inc
end
Результат работы программы:
[pic 4]
Задание 2
Разработать блок-схему и написать программу решения задачи:
Задан вектор А(10). Заменить первый нуль на количество нулей в этом векторе.
Блок-схема алгоритма программы:
[pic 5]
Блок-схема алгоритма подпрограммы вывода массива:
[pic 6]
Текст программы:
MASM
MODEL small
STACK 256
.data
A db 7, 4, 0, 2, 6, 8, 10, 0, 9, 1
; сообщения
ms1 db "Original array:", 13, 10, "$"
ms2 db 13, 10, "Transformed array:", 13, 10, "$"
.code
.startup
CLD ; DF = 0
MOV AH, 09 ; вывод сообщения
LEA DX, ms1 ; ms1
INT 21h
LEA SI, A ; SI - адрес начала массива
CALL PrnMas ; вывод исходного массива
MOV DH, 0 ; DH = 0
MOV CX, 10 ; счетчик цикла
M1: LODSB ; AL = [SI], SI = SI+1
AND AL, AL ; установка флагов
JNZ M2 ; переход, если AL не равен 0
...