DATAS SEGMENT
M dw 30 dup(1)
oddArray dw 30 dup(?)
evenArray dw 30 dup(?)
countOdd dw 0
countEven dw 0
string1 db 'The count of ODD is :',24h
string2 db 'The count of EVEN is :',24h
string3 db 0ah,0dh,24h
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
lea si,oddArray
lea di,evenArray
lea bx,M
mov cx,30
A1:
mov ax,[bx]
test ax,01h
jz A2
inc CountOdd
mov dx,[bx]
mov [si],dx
add bx,2
add si,2
dec cx
jz exit
jmp A1
A2:
inc countEven
mov dx,[bx]
mov [di],dx
add bx,2
add di,2
dec cx
jz exit
jmp A1
exit:
lea dx,string1
mov ah,9
int 21h
mov ax,countOdd
call BintoDeci
lea dx,string3
mov ah,9
int 21h
lea dx,string2
mov ah,9
int 21h
mov ax,countEven
call BintoDeci
jmp last
BintoDeci proc near
mov si,10
mov cx,0
rotate:
xor dx,dx
div si
push dx
inc cx
cmp ax,0
jnz rotate
output:
pop dx
mov ah,2
add dl,30h
int 21h
loop output
ret
BintoDeci endp
last:
MOV AH,4CH
INT 21H
CODES ENDS
END START