用80x86汇编语言编程--在10个无符号数中,找最小的偶数

时间:2022-01-26 01:28:09

;在首地址为dat单元的10个无符号数中,找最小的偶数,将其放入AX中。
;=============================
DATASG SEGMENT

  DAT  DW  65534,129,20122,12300,2450,7766,12454,21123,7212,4220
  ;在这里预先存放10个无符号数,显然都应该是16位数

DATASG ENDS
;-----------------------------
CODESG SEGMENT
    ASSUME  CS:CODESG, DS:DATASG
START:
    MOV  AX, DATASG
    MOV  DS, AX
;-----------------------------
    MOV  BX, OFFSET DAT  ;需要先从数字中,找一个偶数,然后才能判别大小.
    MOV  CX, 10          ;设置循环次数
FIND:
    TEST WORD PTR [BX], 1
    JNZ  NEXT
    MOV  AX, [BX]        ;找到了,存入AX.
    JMP  FINDED
NEXT:
    INC  BX
    LOOP FIND            ;循环找10次.
    MOV  AX, 0FFFFH      ;找了10次,都没找到有偶数,就写上FFFF
    JMP  EXIT            ;结束.
;-----------------------------
FINDED:
    MOV  BX, OFFSET DAT  ;然后从数字中,找最小的偶数.
    MOV  CX, 10
FIND2:
    TEST WORD PTR [BX], 1
    JNZ  NEXT2
    CMP  AX, [BX]
    JB   NEXT2
    MOV  AX, [BX]
NEXT2:
    INC  BX
    LOOP FIND2
;-----------------------------
EXIT:                    ;找完了.

;此时,AX中如果是FFFF,就是没有偶数,否则就是最小偶数.

    MOV  AX, 4C00H
    INT  21H

CODESG ENDS

END START
;=============================
原题网址:http://zhidao.baidu.com/question/345506768.html
;=============================