Найти максимумы в одномерном массиве - Assembler

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

Дан одномерный массив, найти в нем все максимумы (наибольший элемент), затем обнулить его. Размерность произвольная (5+).

Код к задаче: «Найти максимумы в одномерном массиве - Assembler»

textual
LOCALS
 
.model small
 
.stack 100h
 
.data
        A       dw      123, 555, 77, 555, 6565, 841, 22, 6565, 6565, 12, 6565, 1
        Len     dw      ($-A)/2
.code
 
main    proc
        mov     ax,     @data
        mov     ds,     ax
 
        mov     cx,     Len
        lea     si,     [A]
        mov     ax,     [si]    ;текущее значение максимума
@@FindMax:
        mov     dx,     [si]
        cmp     ax,     dx
        sbb     bx,     bx
        and     dx,     bx
        not     bx
        and     ax,     bx
        or      ax,     dx
 
        add     si,     2
        loop    @@FindMax
 
        mov     cx,     Len
        lea     si,     [A]
@@ReplaceMax:
        cmp     ax,     [si]
        jne     @@Next
        mov     [si],   ax
@@Next:
        add     si,     2
        loop    @@ReplaceMax
 
        mov     ax,     4C00h
        int     21h
main    endp
 
end     main

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


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