📄 1.asm
字号:
STACKSG SEGMENT STACK 'STK'
DB 32 DUP('S')
STACKSG ENDS
DATA SEGMENT
A DB 50,33,69,74,97,8,43,22,0,199
B DB 55,84,67,75,0,22,244,97,3,74
D DB 10 DUP(?)
CN EQU 10
DATA ENDS
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE,DS:DATA,SS:STACKSG
PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
;数组A排序
MOV DI,CN-1 ;初始化外循环次数
LOP1: MOV CX,DI
MOV BX,0
LOP2: MOV AL,A[BX]
CMP AL,A[BX+1]
JB CONT1
XCHG AL,A[BX+1]
MOV A[BX],AL
CONT1: ADD BX,1
LOOP LOP2
DEC DI
JNZ LOP1
;数组B排序
MOV DI,CN-1
LOP3: MOV CX,DI
MOV BX,0
LOP4: MOV AL,B[BX]
CMP AL,B[BX+1]
JB CONT2
XCHG AL,B[BX+1]
MOV B[BX],AL
CONT2: ADD BX,1
LOOP LOP4
DEC DI
JNZ LOP3
;比较AB相同项存入C中
MOV DX,CN
MOV BX,0
MOV SI,0
MOV DI,0
MOV CX,DX
LOP5: MOV AL,B[BX]
MOV AH,A[SI]
CMP AL,AH
JE CONT3
ADD SI,1
LOOP LOP5
JMP CONT4
CONT3:MOV D[DI],AH
ADD DI,1
ADD BX,1
MOV SI,0
MOV CX,CN ;重新设置内循环次数
DEC DX
JNZ LOP5
PUSH DI
JMP NEXT
CONT4:ADD BX,1
MOV SI,0
MOV CX,CN ;重新设置内循环次数
DEC DX
JNZ LOP5
PUSH DI
JMP NEXT
;显示A
NEXT:
MOV DI,CN
MOV BX,0
LOP6: MOV DH,A[BX]
CMP DH,100
JNB LOP7
CMP DH,10
JNB LOP8
MOV DL,A[BX]
ADD DL,30H
MOV AH,2
INT 21H
MOV AH,2
MOV DL,' '
INT 21H
ADD BX,1
DEC DI
JNZ LOP6
JZ NEXTB
;显示不小于100的数
LOP7: MOV AL,A[BX]
XOR AH,AH ;AX
MOV DL,100
DIV DL
PUSH AX
;百位
MOV DL,AL
ADD DL,30H
MOV AH,2
INT 21H
;SHIWEI
POP AX
MOV AL,AH
XOR AH,AH ;重新构建AX
MOV DL,10
DIV DL
PUSH AX
MOV DL,AL
ADD DL,30H
MOV AH,2
INT 21H
;个位
POP AX
MOV DL,AH
ADD DL,30H
MOV AH,2
INT 21H
MOV AH,2
MOV DL,' '
INT 21H
ADD BX,1
DEC DI
JNZ LOP6
JZ NEXTB
;显示不小于10的数
LOP8: MOV AL,A[BX]
XOR AH,AH
MOV DL,10
DIV DL
PUSH AX
MOV DL,AL
ADD DL,30H
MOV AH,2
INT 21H
POP AX
MOV DL,AH
ADD DL,30H
MOV AH,2
INT 21H
MOV AH,2
MOV DL,' '
INT 21H
ADD BX,1
DEC DI
JNZ LOP6
JZ NEXTB
;显示B
NEXTB:
;换行
MOV AH,02H
MOV BH,0
MOV DH,1
MOV DL,0
INT 10H
MOV DI,CN
MOV BX,0
LOP9: MOV DH,B[BX]
CMP DH,100
JNB LOP10
CMP DH,10
JNB LOP11
MOV DL,B[BX]
ADD DL,30H
MOV AH,2
INT 21H
MOV AH,2
MOV DL,' '
INT 21H
ADD BX,1
DEC DI
JNZ LOP9
JZ NEXTC
;显示不小于100的数
LOP10: MOV AL,B[BX]
XOR AH,AH
MOV DL,100
DIV DL
PUSH AX
;百位
MOV DL,AL
ADD DL,30H
MOV AH,2
INT 21H
;SHIWEI
POP AX
MOV AL,AH
XOR AH,AH
MOV DL,10
DIV DL
PUSH AX
MOV DL,AL
ADD DL,30H
MOV AH,2
INT 21H
;个位
POP AX
MOV DL,AH
ADD DL,30H
MOV AH,2
INT 21H
MOV AH,2
MOV DL,' '
INT 21H
ADD BX,1
DEC DI
JNZ LOP9
JZ NEXTC
;两位数
LOP11: MOV AL,B[BX]
XOR AH,AH
MOV DL,10
DIV DL
PUSH AX
MOV DL,AL
ADD DL,30H
MOV AH,2
INT 21H
POP AX
MOV DL,AH
ADD DL,30H
MOV AH,2
INT 21H
MOV AH,2
MOV DL,' '
INT 21H
ADD BX,1
DEC DI
JNZ LOP9
JZ NEXTC
;显示数组D
NEXTC:
;换行
MOV AH,02H
MOV BH,0
MOV DH,2
MOV DL,0
INT 10H
POP DI
MOV BX,0
LOP12: MOV DH,D[BX]
CMP DH,100
JNB LOP13
CMP DH,10
JNB LOP14
MOV DL,D[BX]
ADD DL,30H
MOV AH,2
INT 21H
MOV AH,2
MOV DL,' '
INT 21H
ADD BX,1
DEC DI
JNZ LOP12
MOV AH,4CH
INT 21H
;显示不小于100的数
LOP13: MOV AL,D[BX]
XOR AH,AH
MOV DL,100
DIV DL
PUSH AX
;百位
MOV DL,AL
ADD DL,30H
MOV AH,2
INT 21H
;SHIWEI
POP AX
MOV AL,AH
XOR AH,AH
MOV DL,10
DIV DL
PUSH AX
MOV DL,AL
ADD DL,30H
MOV AH,2
INT 21H
;个位
POP AX
MOV DL,AH
ADD DL,30H
MOV AH,2
INT 21H
MOV AH,2
MOV DL,' '
INT 21H
ADD BX,1
DEC DI
JNZ LOP12
MOV AH,4CH
INT 21H
;显示两位数
LOP14: MOV AL,D[BX]
XOR AH,AH
MOV DL,10
DIV DL
PUSH AX
MOV DL,AL
ADD DL,30H
MOV AH,2
INT 21H
POP AX
MOV DL,AH
ADD DL,30H
MOV AH,2
INT 21H
MOV AH,2
MOV DL,' '
INT 21H
ADD BX,1
DEC DI
JNZ LOP12
MOV AH,4CH
INT 21H
MAIN ENDP
CODE ENDS
END MAIN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -