欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

汇编语言 求数组中的最小偶数

程序员文章站 2024-02-01 21:25:35
...

思路:

1. 从数组a的第一个元素开始,找到第一个偶数

2. 若第一步无法找到偶数,即遍历数组元素次仍无法找到偶数元素时,退出程序

3. 否则,将第一个偶数赋值给ax寄存器,此后继续遍历数组a,直到找到下一个偶数或遍历a数组元素个数次。

4. 若下一个偶数比当前ax寄存器中的内容小,则替换ax寄存器的内容,继续查找

5. 否则,继续遍历数组a

 

技巧:

判断寄存器ax中的内容元素是否是偶数:

test ax, 001h

即:若ax寄存器的末位为1则标志位ZF = 1,否则ZF = 0

 

汇编代码如下:

dataseg segment
    a dw 7, 6, 8, 4, 1, 2 
    mess1 db 'Not find!', '13', '10', '$'
dataseg ends

program segment
main proc far
    assume cs: program, ds:dataseg
start:
    push ds
    sub ax, ax
    push ax
    mov ax, dataseg
    mov ds, ax

    mov cx, 6
    mov bx, 0

compare:
    mov ax, a[bx]
    add bx, 2
    test ax, 01h
    loopnz compare
    jnz exit
    jcxz exit

solve:
    mov dx, a[bx]
    add bx, 2
    test dx, 01h
    jnz next
    cmp ax, dx
    jle next
    mov ax, dx

next:
    loop solve

exit:
    mov ax, 4c00h
    int 21h
    ret

program ends
main endp
    end start