DATAS SEGMENT
ARRAY DW 1234,2345,5678,7890,3455,1233,0ABCDH,0FFFFH
N1 DW ($-ARRAY)/2
NUMBER DW ($-ARRAY)/2 DUP(?)
N2 DW 0
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START: MOV AX,DATAS
MOV DS,AX
; 查找奇数
LEA SI,ARRAY
LEA DI,NUMBER
MOV CX,N1
@1:
MOV AX,[SI]
MOV BX,AX
SHR BX,1
JC @2
JMP @3
@2:
MOV [DI],AX
INC WORD PTR N2
ADD DI,2
@3:
ADD SI,2
LOOP @1
; 输出奇数
LEA SI,NUMBER
MOV CX,N2
@4:
LODSW
CALL DISPAX
LOOP @4
MOV AX,4C00H
INT 21H
;==============================================
DISPAX PROC NEAR
PUSH BX
PUSH CX
PUSH DX
PUSH SI
PUSH DS
PUSH AX
MOV AH,2
MOV DL,' '
INT 21H
POP AX
PUSH CS
POP DS
MOV BYTE PTR NZ,0
PUSH AX
LEA SI,DIVARR
MOV CX,5
@@1:
POP AX
MOV DX,0
MOV BX,[SI]
DIV BX
PUSH DX
CMP AL,0
JNE @@2
CMP BYTE PTR NZ,1
JE @@2
CMP CX,1
JE @@2
MOV DL,20H
JMP @@3
@@2:
ADD AL,30H
MOV DL,AL
MOV BYTE PTR NZ,1
@@3:
MOV AH,2
INT 21H
INC SI
INC SI
LOOP @@1
POP DX
POP DS
POP SI
POP DX
POP CX
POP BX
RET
DIVARR DW 10000,1000,100,10,1
NZ DB 0
DISPAX ENDP
;=============================================
CODES ENDS
END START