Найти элемент массива, имеющий максимальное абсолютное значение - Assembler

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

Найти элемент массива, имеющий максимальное абсолютное значение, и записать в RgCX(формат элементов массива - байт).

Код к задаче: «Найти элемент массива, имеющий максимальное абсолютное значение - Assembler»

textual
LOCALS
 
.model small
 
.stack 100h
 
.data
        A       db      -4, 10, -100, 50, 80, 111, -112, 120, -128
        Len     dw      $-A
        Max     db      ?
.code
 
main    proc
        mov     ax,     @data
        mov     ds,     ax
 
        mov     cx,     Len
        lea     si,     A
        mov     bh,     0       ;текущее абсолютное значение максимума
        mov     bl,     0       ;значение элемента с максимальным модулем
@@For:
        ;загрузить значение элемента
        mov     al,     [si]    ;значение элемента
        mov     ah,     al      ;модуль значения элемента
        ;взятие модуля (абсолютного значения)
        or      ah,     ah
        jns     @@Positive
        neg     ah
@@Positive:
        ;выбор максимума
        cmp     ah,     bh
        jbe     @@Next
        mov     bx,     ax      ;запоминание нового максимума
@@Next:
        ;переход к следующему элементу
        add     si,     1
        loop    @@For
 
        ;расширение байта до слова
        mov     al,     bl
        cbw
        ;сохранение результата в регистре CX
        mov     cx,     ax
 
        mov     ax,     4C00h
        int     21h
main    endp
 
end     main

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


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