【汇编】把20个有符号数据按正负分类

arraym存入20个正负有符号数据

arrayn 只存负数

arrayp 只存正数

结果要显示arrayn和arrayp个数

DATA SEGMENT
M    DB +1,2,-3,-4,-5,-6,-7,-8,-9,0,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19;20个数据
P    DW 0;正数个数
N    DW 0;负数个数
msg_p   DB "P=$"
msg_n   DB 0dh,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    
	;显示P的结果
    MOV AH,9    ;计算机从键盘接收的是字符的ASCII码,也是通过字符的ASCII码
    LEA DX,msg_p   ;将字符'P='显示在屏幕上的   
    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商,已经在dl中,这里暂存ah
    MOV AH,2     
	INT 21H     
	MOV DL,BH     ;显示P余数,从暂存在bh中的ah放到dl
	ADD DL,30H   
	MOV AH,2    
	INT 21H  
	;显示N的结果
	MOV AH,9    
	LEA DX,msg_n 
	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	  

 

THE END
分享
二维码
< <上一篇
下一篇>>
文章目录
关闭
目 录