编写一个程序,将一个包含有 30 个字数据的数组 M 分成两个数组:奇数数组 ODD 和偶数数组 EVEN, 并把这两个数组中元素的个数以二进制形式显示出来(不能使用 DIV/IDIV 指令)。

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值