欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-10 08:40:48
...

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

DATA SEGMENT
    M DW 1,2,3,4,5,6,7,8,9,10,5 DUP(25),5 DUP(13),5 DUP(8),5 DUP(100)
    ODD DW 30 DUP(?)
    EVER DW 30 DUP(?)
DATA ENDS 	 

STACK SEGMENT STACK
      DW 10 DUP(?)
TOP LABEL WORD
STACK ENDS

CODE SEGMENT
   ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA 
MAIN PROC FAR
     MOV AX,STACK
	 MOV SS,AX
	 LEA SP,TOP
	 MOV AX,DATA
	 MOV DS,AX
	 MOV ES,AX 
	 MOV CX,30
	 MOV DX,0 
	 LEA SI,M
	 LEA BX,ODD
	 LEA DI,EVER 
	 CLD 
 L1:LODSW 
    TEST AX,1
	JZ L2 
    MOV [BX],AX
	ADD BX,2
	INC DX     ;奇数
	JMP L3 
 L2:STOSW
 L3:LOOP L1  
	MOV BX,30
    SUB BX,DX  ;偶数 
	MOV SI,DX  ;奇数
	MOV CX,16
 L4:ROL SI,1
    TEST SI,1
	JZ L5 
	MOV DL,31H
	MOV AH,2
	INT 21H
	JMP L6 
 L5:MOV DL,30H
	MOV AH,2
	INT 21H
 L6:LOOP L4 
    MOV DL,0DH
	MOV AH,2
	INT 21H
	MOV DL,0AH
	MOV AH,2
	INT 21H
    MOV SI,BX
	MOV CX,16
 L7:ROL SI,1
    TEST SI,1
	JZ L8 
	MOV DL,31H
	MOV AH,2
	INT 21H
	JMP L9 
 L8:MOV DL,30H
	MOV AH,2
	INT 21H
 L9:LOOP L7 
    MOV AH,4CH
	INT 21
MAIN ENDP
CODE ENDS
     END MAIN