STA SEGMENT STACK
DW 40H DUP(?)
TOP LABEL WORD
STA ENDS
DATA SEGMENT
CRLF DB 0DH,0AH,24H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
MAIN PROC FAR
MOV AX,STA
MOV SS,AX
LEA SP,TOP
MOV AX,DATA
MOV DS,AX
MOV CX,16
XOR BX,BX
L10:MOV AH,1
INT 21H
CMP AL,0DH
JE L9
CMP AL,30H
JB L10
CMP AL,31H ;输入
JA L10
AND AX,1
SHL BX,1
ADD BX,AX
LOOP L10
L9:
MOV AH,9
LEA DX,CRLF
INT 21H ;回车换行
MOV DL,0
MOV CX,10H
L1:SHL BX,1
ADC DL,0
LOOP L1
;DL完成计数
MOV CH,DL
MOV DL,30H
MOV CL,2
ROL CH,CL
PUSH CX
AND CH,3 ;00000011
ADD DL,CH
CMP DL,30H
JE L4
MOV AH,2
INT 21H ;解决最高两位输出问题
L4:
MOV SI,2
L2:POP CX
MOV DL,30H
MOV CL,3
ROL CH,CL
PUSH CX
AND CH,7
ADD DL,CH
CMP SI,1
JE L6
CMP DL,30H
JE L5
L6:MOV AH,2
INT 21H
L5:DEC SI
JNE L2
MOV AH,4CH
INT 21H
MAIN ENDP
CODE ENDS
END MAIN