⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sort.asm

📁 数字排序程序,汇编写的,希望对大家有帮助.
💻 ASM
字号:
;数组排序排序, 可以任意限制范围内的任意个数的数字
;COUNT 来记录输入的数字的个数
;TO_BIN   CONVERT NUMBER TO ARRAY
;SORT,  PRINT_ARRAY

DATA SEGMENT
	MSG_INPUT DB 0AH,0DH,'INTPUT A NUMBER,IF YOU WANT TO END YOUR PROCESS,PLEASE ENTER "Y".ATTENTION THE MAXSIZE IS 20','$'
	MSG_GO DB 0AH,0DH,'YOUR INPUT: ',0AH,0DH,'$'
	MSG_CHANGE DB 0AH,0DH,'$'	
	ARRAY DW 20 DUP(?)
	COUNT DB 0
	NUMBER DB 6,0,6 DUP(?)
	TABLE DW MSG_INPUT,MSG_GO,MSG_CHANGE
DATA ENDS
;----------------------------------------------------------
CODE SEGMENT
	MAIN PROC FAR
				ASSUME CS:CODE,DS:DATA
			BEGIN:  PUSH DS
				XOR AX,AX
				PUSH AX
				MOV AX,DATA
				MOV DS,AX
;-----------------------------------------------------------
				LEA DI,TABLE
				MOV DX,[DI]
				MOV AH,09H
				INT 21H 
				MOV DX,[DI+2]
				MOV AH,09H
				INT 21H
				XOR AL,AL
				LEA DI,ARRAY
				
				
			     INPUT:LEA SI,NUMBER
				MOV DX,SI
				MOV AH,0AH
				INT 21H
				CALL CLR
				MOV BL,[SI+2]
				CMP BL,59H
				JZ  MMMM
				CALL TO_BIN
				MOV AL,COUNT
				INC AL
				MOV COUNT,AL
				INC DI
				INC DI
				JMP INPUT
	                  MMMM: CALL CLR
				CALL SORT
				CALL PRINT_ARRAY
				RET
		MAIN ENDP
;----------------------------------------------
		TO_BIN PROC NEAR
				XOR CX,CX
				XOR DX,DX
				XOR BX,BX
				LEA SI,NUMBER
				MOV CL,[SI+1]
				INC SI
				INC SI
			M:PUSH CX
				DEC CX
				XOR AX,AX
			        MOV AL,[SI]
				AND AL,0FH
				CMP CX,0
				JZ NN
	           AAAA:	PUSH AX
				SHL AX,1
				SHL AX,1
				SHL AX,1
				MOV BX,AX
				POP AX
				SHL AX,1
				ADD AX,BX
				LOOP AAAA
	 NN:	ADD DX,AX
				POP CX
				INC SI
				LOOP M
				MOV [DI],DX
				RET
		TO_BIN ENDP
;----------------------------------------------
		SORT PROC NEAR
				XOR CX,CX
				MOV CL,COUNT
		            PPP:LEA SI,ARRAY
				
				PUSH CX
				DEC CX
				CMP CX,0
				JZ XXX
			      T:MOV BX,[SI]
				CMP BX,[SI+2]
				JBE RETURN
				PUSH BX
				MOV BX,[SI+2]
				MOV [SI],BX
				POP BX
				MOV [SI+2],BX
                         RETURN:INC SI
				INC SI
				LOOP T
			XXX:	POP CX
				LOOP PPP
				RET
			SORT ENDP
;----------------------------------------
		PRINT_ARRAY PROC NEAR
				XOR CX,CX
				XOR AX,AX
				LEA SI,ARRAY
				MOV CL,COUNT
		            III:MOV AX,[SI]
				MOV BX,10000D
				CALL DIV_DEC
				MOV BX,1000D
				CALL DIV_DEC
				MOV BX,100D
				CALL DIV_DEC
				MOV BX,10D
				CALL DIV_DEC
				MOV BX,1D
				CALL DIV_DEC
				INC SI
				INC SI
				MOV DL,2CH
				MOV AH,02H
				INT 21H
				LOOP III
				RET
			PRINT_ARRAY ENDP
;-------------------------------------------
		DIV_DEC PROC NEAR
				XOR DX,DX
				DIV BX
				ADD AL,30H
				PUSH DX
				MOV DX,AX
				MOV AH,02H
				INT 21H
				POP DX
				MOV AX,DX
				RET
			DIV_DEC ENDP
;--------------------------------------------
		CLR PROC NEAR
				MOV DL,0AH
				MOV AH,02H
				INT 21H
				MOV DL,0DH
				MOV AH,02H
				INT 21H
				RET
			CLR ENDP
;------------------------------------------
		CODE ENDS
		END BEGIN
				
				
				
				

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -