Найти минимальный нечетный элемент - 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 ; если нет нечётных..
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д