Untitled

 avatar
unknown
plain_text
9 months ago
2.0 kB
14
Indexable
include emu8086.inc
org 100h

DEFINE_PRINT_NUM
DEFINE_PRINT_NUM_UNS

JMP start

tablica db 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

START:
    mov si, OFFSET tablica      ; SI = adres poczatku tablicy
    mov cx, 10                  ; CX = liczba elementow
    CALL SumaTablicy            ; wyswietlenie wyniku sumy
    PRINT 'Suma elementow tablicy = '
    CALL PRINT_NUM_UNS
    PRINTN ''
    
    ; przygotowanie parametrow dla SredniaTablicy
    mov si, OFFSET tablica
    mov cx, 10
    CALL SredniaTablicy         ; wyswietlenie wyniku sredniej
    PRINT 'Srednia wartosci tablicy = '
    CALL PRINT_NUM_UNS
    
    RET

;-----------------------------------------
SumaTablicy PROC NEAR
    ; AX <- wynik
    ; SI - adres tablicy bajtow
    ; CX - rozmiar tablicy
    push si                     ; zachowanie rejestrow
    push cx
    push dx
    
    xor ax, ax                  ; wyzerowanie AX - tu bedzie suma
    
suma_loop:
    xor dx, dx                  ; wyzerowanie DX przed wczytaniem bajtu
    mov dl, [si]                ; pobranie bajtu z tablicy
    add ax, dx                  ; dodanie do sumy
    inc si                      ; przejscie do nastepnego elementu
    loop suma_loop              ; petla dopoki CX > 0
    
    pop dx                      ; przywrocenie rejestrow
    pop cx
    pop si
    RET
SumaTablicy ENDP

;-----------------------------------------
SredniaTablicy PROC NEAR
    ; AL <- wynik
    ; SI - adres tablicy
    ; CX - rozmiar tablicy
    push si                     ; zachowanie rejestrow
    push cx
    push bx
    
    mov bx, cx                  ; zapamietanie rozmiaru do dzielenia
    CALL SumaTablicy            ; AX = suma (wywolanie pierwszej procedury!)
    div bl                      ; podzielenie sumy (AX) przez rozmiar (BL)
                                ; wynik w AL, reszta w AH
    
    pop bx                      ; przywrocenie rejestrow
    pop cx
    pop si
    RET
SredniaTablicy ENDP

END START
Editor is loading...
Leave a Comment