📄 keshe.asm
字号:
;HUIBIAN PROGRAM
;*****************************************************
WIN MACRO OPR1,OPR2,OPR3,OPR4,OPR5,OPR6 ;建立窗口 宏定义
MOV AH,06H
MOV AL,OPR1
MOV BH,OPR2
MOV CH,OPR3
MOV CL,OPR4
MOV DH,OPR5
MOV DL,OPR6
INT 10H
ENDM
DATAREA SEGMENT
THIRTY DB 50H
;message table
MSG0 DB 'SELECT EXIT HELP $ '
MSG1 DB 'compositor Xchg '
MSG5 DB 'Big to Smsll '
MSG6 DB 'Small to big '
MSG7 DB 'please input 5 counts '
MSGD DB 'please input B_word '
MSGB DB 'please input S_word '
ERRMSG DB 'error information '
MANU0 DB 'Input 0 Active SELECT '
MANU1 DB 'Input 1 Active EXIT '
MANU2 DB 'Input 2 Active HELP '
MANU3 DB 'Input 3 Active Compositor '
MANU4 DB 'Input 4 Active Xchg '
MANU5 DB 'Input 5 Active Big to small '
MANU6 DB 'Input 6 Active Small to Big '
MANU7 DB 'daxie to xiaoxie xchg '
MANU8 DB 'xiaoxie to daxie xchg '
MANU9 DB 'Input 7 Active B_word--S_word '
MANU10 DB 'Input 8 Active S_word-- B_word '
HELP_0 DB '***********************************************$'
HELP_1 DB 'welcome use the small programe! $' ;帮助内容
HELP_2 DB 'please the first active help! $'
HELP_3 DB '0 Active SELECT,1 Active EXIT,2 Active HELP $ '
HELP_4 DB 'good lucky!! $'
HELP_5 DB '***********************************************$'
HELP_6 DB 'The Maker:GAO YA $ '
HELP_7 DB '***********************************************$'
MSG9 DB 'Do you really exit $'
A DW 5 DUP(?)
DATAREA ENDS
;*****************************************************
PROGNAM SEGMENT ;define code segment
;------------------------------------------------------
MAIN PROC FAR ;main part of program
ASSUME CS :PROGNAM, DS:DATAREA
START: ; starting execution address
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DATAREA
MOV DS,AX ;set DS register to current data segment
;********************************************************
BEGIN0 PROC NEAR ;主菜单
PUSH AX
PUSH BX
PUSH CX
PUSH DX
MOV AH,9
LEA DX,MSG0
INT 21H
MOV DL,0DH
CALL DISPCHAR
MOV DL,0AH
CALL DISPCHAR
MOV DL,0DH
CALL DISPCHAR
MOV DL,0AH
CALL DISPCHAR
MOV BX,OFFSET MANU0
CALL DISPLAY1
MOV DL,0DH
CALL DISPCHAR
MOV DL,0AH
CALL DISPCHAR
MOV BX,OFFSET MANU1
CALL DISPLAY1
MOV DL,0DH
CALL DISPCHAR
MOV DL,0AH
CALL DISPCHAR
MOV BX,OFFSET MANU2
CALL DISPLAY1
MOV DL,0DH
CALL DISPCHAR
MOV DL,0AH
CALL DISPCHAR
POP DX
POP CX
POP BX
POP AX
HELP PROC NEAR ;HELP程序
MOV AH,7
INT 21H
CALL CLEARSCREEN
CMP AL,'2'
JE BEGIN22
CMP AL,'0'
JE BEGIN1
CMP AL,'1'
JE D
D: CALL EXIT2
HELP ENDP
BEGIN1:
SUB AL,'0'
JE B
B: CALL SELECT
BEGIN22: MOV AH,9 ;如输入为2,则输出HELP里面的内容
LEA DX,HELP_0
INT 21H
MOV DL,0DH
CALL DISPCHAR
MOV DL,0AH
CALL DISPCHAR
MOV DL,0DH
CALL DISPCHAR
MOV DL,0AH
CALL DISPCHAR
;--------------------------
MOV AH,9
LEA DX,HELP_1
INT 21H
MOV DL,0DH
CALL DISPCHAR
MOV DL,0AH
CALL DISPCHAR
MOV DL,0DH
CALL DISPCHAR
MOV DL,0AH
CALL DISPCHAR
;---------------------------
MOV AH,9
LEA DX,HELP_2
INT 21H
MOV DL,0DH
CALL DISPCHAR
MOV DL,0AH
CALL DISPCHAR
MOV DL,0DH
CALL DISPCHAR
MOV DL,0AH
CALL DISPCHAR
;--------------------------
MOV AH,9
LEA DX,HELP_3
INT 21H
MOV DL,0DH
CALL DISPCHAR
MOV DL,0AH
CALL DISPCHAR
MOV DL,0DH
CALL DISPCHAR
MOV DL,0AH
CALL DISPCHAR
;-----------------------
MOV AH,9
LEA DX,HELP_4
INT 21H
MOV DL,0DH
CALL DISPCHAR
MOV DL,0AH
CALL DISPCHAR
MOV DL,0DH
CALL DISPCHAR
MOV DL,0AH
CALL DISPCHAR
;-------------------------
MOV AH,9
LEA DX,HELP_5
INT 21H
MOV DL,0DH
CALL DISPCHAR
MOV DL,0AH
CALL DISPCHAR
MOV DL,0DH
CALL DISPCHAR
MOV DL,0AH
CALL DISPCHAR
;--------------------
MOV AH,9
LEA DX,HELP_6
INT 21H
MOV DL,0DH
CALL DISPCHAR
MOV DL,0AH
CALL DISPCHAR
MOV DL,0DH
CALL DISPCHAR
MOV DL,0AH
CALL DISPCHAR
;---------------------------
MOV AH,9
LEA DX,HELP_7
INT 21H
MOV DL,0DH
CALL DISPCHAR
MOV DL,0AH
CALL DISPCHAR
MOV DL,0DH
CALL DISPCHAR
MOV DL,0AH
CALL DISPCHAR
CALL BEGIN0
BEGIN0 ENDP
SELECT PROC NEAR ;输入为零,则执行SELECT
MOV BX,OFFSET MSG1
CALL DISPLAY1
MOV DL,0DH
CALL DISPCHAR
MOV DL,0AH
CALL DISPCHAR
MOV BX,OFFSET MANU3
CALL DISPLAY1
MOV DL,0DH
CALL DISPCHAR
MOV DL,0AH
CALL DISPCHAR
MOV BX,OFFSET MANU4
CALL DISPLAY1
MOV DL,0DH
CALL DISPCHAR
MOV DL,0AH
CALL DISPCHAR
SELECT ENDP
BEGIN2: ;执行从到到小或从小到大排序
MOV AH,7
INT 21H
CALL CLEARSCREEN
CMP AL,'3'
JE BEGIN4
CMP AL,'4'
JE BEGIN11
BEGIN4:
MOV BX,OFFSET MANU5
CALL DISPLAY1
MOV DL,0DH
CALL DISPCHAR
MOV DL,0AH
CALL DISPCHAR
MOV BX,OFFSET MANU6
CALL DISPLAY1
MOV DL,0DH
CALL DISPCHAR
MOV DL,0AH
CALL DISPCHAR
B_S: MOV AH,7 ;如输入为5或6,执行大小写转换
INT 21H
CALL CLEARSCREEN
CMP AL,'5'
JE BEGIN3
CMP AL,'6'
JE S_B
BEGIN3:
MOV BX,OFFSET MSG7
CALL DISPLAY1
MOV DL,0DH
CALL DISPCHAR
MOV DL,0AH
CALL DISPCHAR
JMP BEGIN9
S_B:
CALL CLEARSCREEN
JE BEGIN5
BEGIN5:
MOV BX,OFFSET MSG7
CALL DISPLAY1
MOV DL,0DH
CALL DISPCHAR
MOV DL,0AH
CALL DISPCHAR
JMP BEGIN10
JMP BEGIN14
BEGIN11:
CALL CLEARSCREEN
JE BEGIN6
BEGIN6:
MOV BX,OFFSET MANU9
CALL DISPLAY1
MOV DL,0DH
CALL DISPCHAR
MOV DL,0AH
CALL DISPCHAR
MOV BX,OFFSET MANU10
CALL DISPLAY1
MOV DL,0DH
CALL DISPCHAR
MOV DL,0AH
CALL DISPCHAR
BEGIN7: MOV AH,7
INT 21H
CALL CLEARSCREEN
CMP AL,'1'
JE E
JNE F
E:
CALL EXIT2
F: CMP AL,'7'
JE BEGIN8
CMP AL,1
JE G
JNE H
G: CALL EXIT2 ;调用退出程序
H:
CMP AL,'8'
JE BEGIN20
BEGIN8:
MOV BX,OFFSET MSGD
CALL DISPLAY1
CALL B_SXCHG
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -