汇编语言 求数组中的最小偶数
程序员文章站
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