Массив: Получить сумму членов последовательности, принадлежащих [2;9] - Assembler

Формулировка задачи:

Снова я , помогите с программой ( говоря простым языком , кто не занят ,или кого не затруднит , напишите ее -_-) Даны целые числа a1, a2, ..., a10.. В этой последовательности все члены последовательности, больше 2, заменить 0. Получить сумму членов последовательности, принадлежащих [2;9]. В целочисленном массиве A(N) определить число, встречающееся максимальное количество раз. Если их несколько, то вывести одно из них. Спасибо.

Код к задаче: «Массив: Получить сумму членов последовательности, принадлежащих [2;9] - Assembler»

textual
LOCALS
 
.model small
 
.stack 100h
 
.data
        A       db      3, 2, 9, 0, 8, 4, 7, 1, 9, 5
        Sum     dw      ?
.code
 
main    proc
        mov     ax,     @data
        mov     ds,     ax
 
        ;все члены последовательности, больше 2, заменить 0
        lea     si,     A
        mov     cx,     10
@@1:
        cmp     byte ptr [si],  2
        jbe     @@Next1
        mov     byte ptr [si],  0
@@Next1:
        add     si,     1
        loop    @@1
 
        ;Получить сумму членов последовательности, принадлежащих [2;9].
        lea     si,     A
        mov     cx,     10
        mov     bx,     0       ;сумма
@@2:
        mov     al,     [si]
        cmp     al,     2
        jb      @@Next2
        cmp     al,     9
        ja      @@Next2
        add     bl,     al
        adc     bh,     0
@@Next2:
        add     si,     1
        loop    @@2
        mov     Sum,    bx
 
        ;определить число, встречающееся максимальное количество раз.
        ;Если их несколько, то вывести одно из них.
        lea     si,     A
        mov     cx,     10-1
        mov     dl,     0       ;искомое число
        mov     dh,     0       ;количество в массиве
@@3:
        mov     al,     [si]
        add     si,     1
        mov     bh,     1
        mov     di,     si
        add     di,     1
        push    cx
        @@ForJ:
                cmp     al,     [di]
                jne     @@NextJ
                inc     bh
        @@NextJ:
                add     di,     1
                loop    @@ForJ
        pop     cx
        cmp     bh,     dh
        jbe     @@Next3
        mov     dh,     bh
        mov     dl,     al
@@Next3:
        loop    @@3
 
        mov     al,     dl
        aam
        add     ax,     '00'
        mov     dl,     ah
        mov     dh,     al
        mov     ah,     02
        int     21h
        mov     dl,     dh
        int     21h
 
        mov     ax,     4C00h
        int     21h
main    endp
 
end     main

6   голосов, оценка 3.833 из 5


СОХРАНИТЬ ССЫЛКУ