Контрольная работа № 3
Цель работы: Закрепления знаний по архитектуре микропроцессора 8086 и основам языка Ассемблер, приобретение навыков по разработке программ.
Задание № 3-1: В среде TURBO-ASSEMBLER разработать и реализовать программу с линейной структурой. Исходные данные (переменные X и Y) выбрать самостоятельно таким образом, чтобы сами переменные и любое выражение образуемое ими были отличные от 0 и 1. Рассчет выполнить для двух различных пар значений Х и У. Как исходные значения так и результат работы программы разместить в памяти. Работу программы проиллюстрировать при помощи отладчика.
№3 |
Уравнение |
z=25*x/y+15*y–3 |
|||||||||||
x1= |
6 |
x2= |
5 |
y1= |
3 |
y2= |
7 |
z1= |
192 |
z2= |
227 |
||
Текст программы:
masm ;начало программы
MODEL SMALL ;название модели программы
.data ;раздел заполнения данных в программу
a1 db 25 ;число a
b1 db 15 ;число b
c1 dw 3 ;число c
x_1 db 6 ;число задаваемое пользователем
y_1 db 3 ;число заданное пользователем
x_2 db 5 ;число задаваемое пользователем
y_2 db 7 ;число задаваемое пользователем
z_1 dw ? ;результат выполнения уравнения при 1-м значении X и Y
z_2 dw ? ;результат выполнения уравнения при 2-м значении X и Y
.code ;раздел описания команд выполняемых программой
main: ;программа
mov ax,@data ;помещаем в регистр адрес по которому хранятся данные
mov ds,ax ;помещаем данные из одного регистр в другой
mov al,a1 ;помещаем в регистр число a
MOV bl,x_1 ;помещаем в регистр число x1
mul bl ;a*x1
mov bl,y_1 ;помещаем в регистр число y1
div bl ;a*x1/y1
mov cx,ax ;помещаем данные из одного регистр в другой
mov al,b1 ;помещаем данные из одного регистр в другой
mov bl,y_1 ;помещаем в регистр число y1
mul bl
sub ax,c1
add ax,cx
mov z_1,ax
mov ax,@data ;помещаем в регистр адрес по которому хранятся данные
mov ds,ax ;помещаем данные из одного регистр в другой
mov al,a1 ;помещаем в регистр число a
MOV bl,x_2 ;помещаем в регистр число x2
mul bl ;a*x2
mov bl,y_2 ;помещаем в регистр число y2
div bl ;a*x2/y2
mov cx,ax ;помещаем данные из одного регистр в другой
mov al,b1 ;помещаем данные из одного регистр в другой
mov bl,y_2 ;помещаем в регистр число y2
mul bl
sub ax,c1
add ax,cx
mov z_2,ax
end main
Задание № 3-2: В среде TURBO-ASSEMBLER разработать и реализовать программу с использованием циклов. Исходные значения и результат работы программы разместить в памяти. Работу программы проиллюстрировать при помощи отладчика. Каждый следующий член прогрессии определяется предыдущими по нижеследующим законам. Два первых элемента принять равными 0 и 1.
В1-В11 Вычислить сумму n первых четных членов прогрессии,
В3 z(n+2)=2*z(n+1)+z(n)
Текст программы:
masm
MODEL SMALL
.data
a dw 0 ;A = 0
b dw 1 ;B = 1
S dw 0 ;S = 0
n dw 3 ;n = 3 – выбираем сами
.code
MAIN: mov ax, @data
mov ds, ax ;загружаем в AX адрес сегмента данных
mov cx, 0 ;K = 0
M0: mov ax, 2 ;AX = 2 (AX – аналог переменной C)
mul b ;AX = AX*B = 2*B
add ax, a ;AX = AX+A = 2*B+A
test ax, 1 ;AX четное?
jne M1 ;если нет, перейти на M1
add S, ax ;S = S + AX
inc cx ;K = K + 1 (K = CX)
M1: mov bx, b ;
mov a, bx ;A = B
mov b, ax ;B = AX
cmp cx, n ;сравнить K с n
jne M0 ;если не равны, перейти на M0
mov ah, 4Ch ;функция 4C прерывания 21h останавливает
int 21h ;работу программы.
end MAIN
mov ax,x ;x в ax
mov bx,2 ; 2 в bx
xor dx,dx ; обнуление dx
div bx ; деление ax на bx результат в ax
cmp{test} dx,1{0} ; сравнение dx с 1
j{n}e m1 ; если равно то на m1
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.