编写程序:将一个包含有20个有符号数据的数组arrayM分成两个数组,正数数组arrayP 和负数数组arrayN,并分别把两个数组中的数据个数显示出来
程序员文章站
2022-03-01 15:44:44
...
编写程序:将一个包含有20个有符号数据的数组arrayM分成两个数组,正数数组arrayP 和负数数组arrayN,并分别把两个数组中的数据个数显示出来
DATA SEGMENT
M DB -1,-2,-3,-4,-5,-6,-7,-8,-9,0,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19
P DW 0
N DW 0
P1 DB "P=$"
N1 DB 0AH,"N=$"
DATA ENDS
STACK SEGMENT PARA STACK
DW 128 DUP(?)
TOP LABEL WORD
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:STACK,DS:DATA
MAIN PROC FAR
START: MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
LEA SP,TOP
LEA SI,M
MOV CX,20
L0: MOV AL,[SI]
CMP AL,0
JL L1
JG L2
L1: INC N
JMP L3
L2: INC P
JMP L3
L3: INC SI
LOOP L0
MOV AH,9 ;计算机从键盘接收的是字符的ASCII码,也是通过字符的ASCII码
LEA DX,P1 ;将字符显示在屏幕上的
INT 21H
MOV AX,P ;两位数无法直接显示,通过除10一位一位显示
MOV BL,10
DIV BL
MOV DL,AL ;AL放商,AH放余数,显示时要加上30H才能将实际数显示出来,
ADD DL,30H ;因为计算机是通过ASCII码显示字符的
MOV BH,AH ;显示P商
MOV AH,2
INT 21H
MOV DL,BH ;显示P余数
ADD DL,30H
MOV AH,2
INT 21H
MOV AH,9
LEA DX,N1
INT 21H
MOV AX,N
MOV BL,10
DIV BL
MOV DL,AL ;显示N商
ADD DL,30H
MOV BH,AH
MOV AH,2
INT 21H
MOV DL,BH ;显示N余数
ADD DL,30H
MOV AH,2
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
MAIN ENDP
END START