📄 4-11.txt
字号:
TITLE 4-11
DATA SEGMENT
DAT2 DB 0FFH
COUNT DB 10
DAT1 DB 200 DUP(?)
MESG0 DB 'PLEASE SELECT$'
MESG1 DB '1.CHANGE LETTER TO BIG LETTER$'
MESG2 DB '2.FIND THE MAX ASCII$'
MESG3 DB '3.SORT BY THE ASCII$'
MESG4 DB '4.SHOW THE TIME$'
MESG5 DB '5.EXIT$'
MESG6 DB 'PLEASE INPUT LETTER$'
MESG7 DB 'PLEASE set the time in the form of hh:mm:ss$'
MESG8 DB 'Invalid time ,please set the time again!$'
MAX DB ?
FLAG DB -1
W10 DB 10
DATA ENDS
STACK1 SEGMENT PARA STACK
DW 300 DUP(0)
STACK1 ENDS
COSEG SEGMENT
ASSUME CS:COSEG,DS:DATA, SS:STACK1
START:MOV AX,DATA
MOV DS,AX
L1:LEA DX,MESG0
MOV AH,09H
INT 21H
MOV AH,02
MOV DL,0DH
INT 21H
MOV DL,0AH
INT 21H
LEA DX,MESG1
MOV AH,09H
INT 21H
MOV AH,02
MOV DL,0DH
INT 21H
MOV DL,0AH
INT 21H
LEA DX,MESG2
MOV AH,09H
INT 21H
MOV AH,02
MOV DL,0DH
INT 21H
MOV DL,0AH
INT 21H
LEA DX,MESG3
MOV AH,09H
INT 21H
MOV AH,02
MOV DL,0DH
INT 21H
MOV DL,0AH
INT 21H
LEA DX,MESG4
MOV AH,09H
INT 21H
MOV AH,02
MOV DL,0DH
INT 21H
MOV DL,0AH
INT 21H
LEA DX,MESG5
MOV AH,09H
INT 21H
MOV AH,02
MOV DL,0DH
INT 21H
MOV DL,0AH
INT 21H
MOV AH,0 ;AFTER SELECT
INT 16H
CMP AL,1BH
JZ EXIT
CMP AL,31H
JZ A1
CMP AL,32H
JZ A2
CMP AL,33H
JZ A3
CMP AL,34H
JZ A4
CMP AL,35H
JZ EXIT
JMP L1
A1: CALL NUM1
MOV AH,02
MOV DL,0DH
INT 21H
MOV DL,0AH
INT 21H
JMP L1
A2: CALL NUM2
MOV AH,02
MOV DL,0DH
INT 21H
MOV DL,0AH
INT 21H
JMP L1
A3: CALL NUM3
MOV AH,02
MOV DL,0DH
INT 21H
MOV DL,0AH
INT 21H
JMP L1
A4: CALL NUM4
MOV AH,02
MOV DL,0DH
INT 21H
MOV DL,0AH
INT 21H
JMP L1
EXIT: MOV AH,4CH
INT 21H
NUM1 PROC NEAR
B1: LEA DX,MESG6
MOV AH,09H
INT 21H
MOV AH,02
MOV DL,0DH
INT 21H
MOV DL,0AH
INT 21H
MOV AH,0
INT 16H
CMP AL,1BH
JZ EXIT1
LEA DX,DAT2
MOV AH,0AH
INT 21H
MOV DL,0DH
MOV AH,02H
INT 21H
MOV DL,0AH
INT 21H
MOV CL,COUNT
MOV CH,0
LEA SI,DAT1
B2:MOV AL,[SI]
CMP AL,61H
JB B3
SUB AL,20H
MOV [SI],AL
B3:INC SI
LOOP B2
MOV CL,COUNT
MOV CH,0
MOV SI,CX
MOV DAT1[SI],24H
LEA DX, DAT1
MOV AH,09H
INT 21H
MOV AH,02
MOV DL,0DH
INT 21H
MOV DL,0AH
INT 21H
JMP B1
EXIT1:RET
NUM1 ENDP
NUM2 PROC NEAR
C1: LEA DX,MESG6
MOV AH,09H
INT 21H
MOV AH,02
MOV DL,0DH
INT 21H
MOV DL,0AH
INT 21H
MOV AH,0
INT 16H
CMP AL,1BH
JZ EXIT2
LEA SI,DAT2
MOV DX,SI
MOV AH,0AH
INT 21H
ADD SI,2
MOV CL,COUNT
MOV CH,0
MOV AL,[SI]
C3: INC SI
MOV BL,[SI]
CMP AL,BL
JA C4
MOV AL,BL
C4:LOOP C3
MOV MAX,AL
MOV AH,02
MOV DL,0DH
INT 21H
MOV DL,0AH
INT 21H
MOV DL,MAX
INT 21H
MOV AH,02
MOV DL,0DH
INT 21H
MOV DL,0AH
INT 21H
JMP C1
EXIT2:RET
NUM2 ENDP
NUM3 PROC NEAR
D1: LEA DX,MESG6
MOV AH,09H
INT 21H
MOV AH,02
MOV DL,0DH
INT 21H
MOV DL,0AH
INT 21H
MOV AH,0
INT 16H
CMP AL,1BH
JZ EXIT3
LEA DX,DAT2
MOV AH,0AH
INT 21H
MOV DL,0DH
MOV AH,02H
INT 21H
MOV DL,0AH
INT 21H
MOV CL,COUNT
MOV CH,0
MOV BX,CX
D3: CMP FLAG,0
JE D5
DEC BX
MOV CX,BX
MOV SI,0
MOV FLAG,0
D4: MOV AL,DAT1[SI]
CMP AL,DAT1[SI+1]
JLE NEXT
XCHG AL,DAT1[SI+1]
MOV DAT1[SI],AL
MOV FLAG,-1
NEXT:INC SI
LOOP D4
JMP D3
D5:MOV CL,COUNT
MOV CH,0
MOV SI,CX
MOV DAT1[SI],24H
LEA DX, DAT1
MOV AH,09H
INT 21H
MOV AH,02
MOV DL,0DH
INT 21H
MOV DL,0AH
INT 21H
JMP D1
EXIT3:RET
NUM3 ENDP
NUM4 PROC NEAR
G3: LEA SI,DAT1
MOV AH,2CH
INT 21H
MOV AL,CH ;HOUR
MOV AH,0
DIV W10
ADD AH,30H
ADD AL,30H
MOV [SI],AL
INC SI
MOV [SI],AH
INC SI
MOV AL,3AH
MOV [SI],AL
INC SI
MOV AL,CL ;MINUTE
MOV AH,0
DIV W10
ADD AH,30H
ADD AL,30H
MOV [SI],AL
INC SI
MOV [SI],AH
INC SI
MOV AL,3AH
MOV [SI],AL
INC SI
MOV AL,DH ;SECOND
MOV AH,0
DIV W10
ADD AH,30H
ADD AL,30H
MOV [SI],AL
INC SI
MOV [SI],AH
INC SI
MOV AL,24H
MOV [SI],AL
LEA DX,DAT1
MOV AH,09H
INT 21H
MOV AH,02H
MOV DL,0DH
INT 21H
MOV DL,0AH
INT 21H
LEA DX,MESG7 ;CALL FOR SET TIME
MOV AH,09H
INT 21H
MOV AH,02H
MOV DL,0DH
INT 21H
MOV DL,0AH
INT 21H
MOV BX,0FFFFH
K0: MOV CX,0FFFFH
MOV AH,1
INT 16H
JNZ G2
K1:LOOP K1
DEC BX
JNZ K0
JMP G3
G2: MOV AH,0
INT 16H
CMP AL,1BH
JZ EXIT4
LEA DX,DAT2
MOV AH,0AH
INT 21H
MOV AH,02H
MOV DL,0DH
INT 21H
MOV DL,0AH
INT 21H
LEA SI,DAT1
MOV AL,[SI] ;SET HOUR
MOV AH,0
SUB AL,30H
MUL W10
INC SI
MOV AH,[SI]
SUB AH,30H
ADD AH,AL
MOV CH,AH
ADD SI,2
MOV AL,[SI] ;SET MINUTE
MOV AH,0
SUB AL,30H
MUL W10
INC SI
MOV AH,[SI]
SUB AH,30H
ADD AH,AL
MOV CL,AH
ADD SI,2
MOV AL,[SI] ;SET SECOND
MOV AH,0
SUB AL,30H
MUL W10
INC SI
MOV AH,[SI]
SUB AH,30H
ADD AH,AL
MOV DH,AH
MOV AH,2DH ;SET SYSTEM TIME
INT 21H
CMP AL,0
JNE G1
JMP G3
G1:LEA DX,MESG8
MOV AH,09H
INT 21H
MOV AH,02H
MOV DL,0DH
INT 21H
MOV DL,0AH
INT 21H
JMP G2
EXIT4:RET
NUM4 ENDP
COSEG ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -