编写程序,求20元素无符号字数组ARRAY中最小的奇数,存入ODD单元,如果不存在奇数,将ODD单元清零。
正确答案:
DATASEGEMNT
ARRAY
DW 56,12,88,126,5,16,32,99,72,18
DW 116,34,92,32,156,42,816,16,15,218
ODD DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV BX,0
MOV ODD,65535;将65535假设为最小的奇数
LEA SI,ARRAY
MOV CX,20
AGAIN:
MOV AX,[SI]
TEST AX,1;测试是否为奇数
JZ SKIP;不是奇数跳过
INC BX;记录奇数个数
CMP AX,ODD;奇数与预设的最小奇数比较
JGE SKIP;大于预设奇数,跳过
MOV ODD,AX;小于预设奇数,保留
SKIP:ADD SI,2
LOOP AGAIN
CMP BX,0;判有无出现过奇数
JNZ DONE
MOV ODD,0;未出现过,把ODD单元清零
DONE://MOV AX,4C00H
INT 21H
CODEENDS
END START
ARRAY
DW 56,12,88,126,5,16,32,99,72,18
DW 116,34,92,32,156,42,816,16,15,218
ODD DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV BX,0
MOV ODD,65535;将65535假设为最小的奇数
LEA SI,ARRAY
MOV CX,20
AGAIN:
MOV AX,[SI]
TEST AX,1;测试是否为奇数
JZ SKIP;不是奇数跳过
INC BX;记录奇数个数
CMP AX,ODD;奇数与预设的最小奇数比较
JGE SKIP;大于预设奇数,跳过
MOV ODD,AX;小于预设奇数,保留
SKIP:ADD SI,2
LOOP AGAIN
CMP BX,0;判有无出现过奇数
JNZ DONE
MOV ODD,0;未出现过,把ODD单元清零
DONE://MOV AX,4C00H
INT 21H
CODEENDS
END START
答案解析:有
微信扫一扫手机做题