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

思路:

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

 

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值