Найти и вывести минимальный из четных элементов в массиве, кратный числу 4 - Assembler

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

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

Всем доброго времени суток))) Очень нуждаюсь в помощи, в решение слудующей задачи: Найти и вывести минимальный из четных элементов в массиве, кратный числу 4. Помогите плзз)

Решение задачи: «Найти и вывести минимальный из четных элементов в массиве, кратный числу 4»

textual
Листинг программы
masm
model small
.stack 100h
.data 
mass1  db 13,15,126,23,248,23,97,91,37,47,41,0
msg DB 'min kratnoe 4. = '
nomer db 0,0,0,0
min db 0
.code
start:
       mov ax,@data
       mov ds,ax 
       lea si,mass1
        xor bx,bx
        mov (min),bl       
 cicl:  xor ax,ax
        mov al,[si+bx]
        inc bx
        cmp al,0
        je  konec
        shr al,1                  ;делим на 2
        jc  cicl                  ;проверяем остаток
        shr al,1
        jc  cicl        
        mov ah,(min)
        cmp ah,0                ;первое ли обращение сюда
        je  sd11
        cmp ah,[si+bx]-1
        jbe cicl
sd11:   mov al,[si+bx]-1
        mov (min),al
        jmp cicl
konec:  xor     cx,cx        ;Вывод на экран
        mov     bx,1
        mov     al,(min)
        cmp     al,10
        jb     hhh        
        cmp    al,100
        jb     cicsd
        inc    bx
        cmp    al,200
        jae    gkgk
        sub    al,100
        mov    (nomer),1+48
        jmp    cicsd
gkgk:   sub    al,200
        mov    (nomer),2+48
cicsd:  push   ax          
cic1:   add    cl,6
        sub    al,10
        cmp    al,10
        jae    cic1                
        add    al,48
        mov    nomer[bx],al
        pop    ax
        add    al,cl
        shr    al,4
 hhh:   add    al,48
        mov    nomer[bx]-1,al                      
        MOV     SI, 0
next_char:
        MOV     AL, msg[SI]
        CMP     AL, 0           
        JE      stop
        MOV     AH, 0Eh
        INT     10h
        INC     SI
        JMP     next_char        
stop:   
        mov ah,1           ;пауза
        int  16h
        jz   stop 
        mov ax,4c00h
        int 21h     
END    start

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

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