|
Методические указания по Организации ЭВМ и систем
Лабораторная работа 6.
Пример решения с использованием автономного ассемблера:
;Герасимов Максим гр 22-6 12.10.2000
;лаб. раб. №6
masm
model small
stack 256
n equ 8 ;кол-во элементов массива
.data
mes1 db 0ah,0dh,'массив - $',0ah,0dh
mas dw n dup (?)
mas_sum dw ?
X dw ?
.code
;//заполнение массива// ---------------------------------------------
flood_array proc near
mov ax,n ; в ax - кол-во эл-тов
xor si,si
flood:
cmp ax,0
je end_flood
mov mas[si],ax
dec ax
add si,2 ;перейти к следующему
loop flood
end_flood: ret
flood_array endp;----------------------------------------------------
;//вывод на экран исходного массива//------------------------------------
show_array proc near
mov ah,09h
lea dx,mes1
int 21h ;вывод сообщения mes1
mov cx,n
mov si,0
show_primary: ;вывод значения элементов исходного массива на экран
mov dx,mas[si]
add dl,30h
mov ah,02h
int 21h
add si,2
mov dx,' '
int 21h
loop show_primary
ret
show_array endp ;------------------------------------------------------
;//вычисление суммы эл-тов массива//------------------------------------
sum_array proc near
mov mas_sum,0 ; сумма = 0
mov cx,n
mov si,0
summ:
mov ax,mas[si]
add mas_sum,ax
add si,2
loop summ
ret
sum_array endp ;------------------------------------------------------
;//вычисляем по формуле//----------------------------------------------
calculate proc near
mov x,0 ;x = 0
mov cx,n ;cx = n
dec cx ;cx = n-1
mov si,0
calc:
mov bx,mas[si]
mov ax,mas[si+2]
mul ax
add bx,ax
add x,bx
add si,2
loop calc
ret
calculate endp ;------------------------------------------------------
;======================================================================
Start:
mov ax, @data
mov ds, ax
mov es, ax
;----------------------------------------------------------------------
call flood_array ; заполнили массив
call show_array ; показали массив
call sum_array ; вычислили сумму эл-тов массива
call calculate ; вычисляем X по формуле...
;----------------------------------------------------------------------
mov ah, 04ch
int 21h
end Start
|