Найти минимальный нечетный элемент - Assembler

Узнай цену своей работы

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

Найти минимальный нечетный элемент. Нужно сделать с помощь test.

Решение задачи: «Найти минимальный нечетный элемент»

textual
Листинг программы
;FASM-code..
;-----------------
org  100h
jmp  start
 
nch     db   0
a       db   2,4,8,10,255,7,68,11,100,37
len     =    $ - a             ; длина массива
 
start:  mov   si,a             ; его адрес
        mov   cx,len           ; счётчик для LOOP
        xor   bx,bx            ; флаг нечётных
cycle:  lodsb                  ; читаем массив..
        test  al,1             ;
        jz    next             ; пропустить, если чётное
        inc   bx               ; иначе: взводим флаг,
        push  ax               ;   ..и запоминаем нечётное в стеке
next:   loop  cycle            ; промотать СХ-раз..
 
        or    bx,bx            ; выйти, если ВХ=0 (нет нечётных)
        jz    bye              ;
 
        dec   bx               ; иначе: ВХ -1,
        xchg  cx,bx            ;   ..и сделать его счётчиком для LOOP
        pop   ax               ; АL = нечётный элемент со-стека
begin:  pop   bx               ; снимаем остальные элементы в ВL,
        cmp   bl,al            ;   ..и ищем минимальное!
        ja    miss             ;
        xchg  al,bl            ;
miss:   loop  begin            ;
 
        mov   [nch],al         ; *запомнить его в переменной.
        mov   ah,8             ; ждём клавишу,
        int   21h              ;     ..и на выход!
bye:    int   20h              ; если нет нечётных..

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5
Похожие ответы