Найти

Методические указания по Организации ЭВМ и систем

Лабораторная работа 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
Рейтинг SIMPLETOP.NET
Rambler's Top100 Powered byCeleron©
Бесплатный хостинг от EOMY.NET