📄 well1.asm
字号:
INT 21H ;输入一个字符
CMP AL,'c'
JNZ PD
LEA SI,FILE_1
CALL FAR PTR WRITEFILE ;qing top 10
JMP GETCHAR1
PD: CMP AL,'n'
JZ L1
CMP AL,'q'
JZ QUIT1
CMP AL,'s'
JNZ NEXT01
;bianghuan shang
CMP CX,0
JZ GETCHAR1
XCHG AX,[DI]
XCHG AX,[DI-6]
XCHG AX,[DI]
SUB DI,6
SUB CX,1
ADD DX,1
JMP SHUCHU1
NEXT01: CMP AL,'d'
JNZ NEXT11
;bianhuan zuo
CMP BX,0
JZ GETCHAR1
XCHG AX,[DI]
XCHG AX,[DI-2]
XCHG AX,[DI]
SUB DI,2
SUB BX,1
ADD DX,1
JMP SHUCHU1
;SHU: JMP SHUCHU
NEXT11: CMP AL,'a'
JNZ NEXT21
;bianhuan you
CMP BX,2
JZ GETCHAR1
XCHG AX,[DI]
XCHG AX,[DI+2]
XCHG AX,[DI]
ADD DI,2
ADD BX,1
ADD DX,1
JMP SHUCHU1
;Q01: JMP QUIT1
NEXT21: CMP AL,'w'
JNE GETCHAR1
;bianhuan xia
CMP CX,2
JZ GETCHAR1
XCHG AX,[DI]
XCHG AX,[DI+6]
XCHG AX,[DI]
ADD DI,6
ADD CX,1
ADD DX,1
JMP SHUCHU1
QUIT1:
POPJCQ
RET
ENDP
CODE1 ENDS
;**************************************************************************
; code 2,子程序game2
;****************************************************************************
CODE2 SEGMENT
ASSUME CS:CODE2,DS:DATA
GAME2 PROC FAR
PUSHJCQ
MOV SI,OFFSET FILE_2
CALL FAR PTR DISPHEROS
DISP_STRING_TEXT NEWG,2,60,11,0DH
DISP_STRING_TEXT LEFT,3,60,RIGHT-LEFT,0DH
DISP_STRING_TEXT RIGHT,4,60,UP-RIGHT,0DH
DISP_STRING_TEXT UP,5,60,DOWN-UP,0DH
DISP_STRING_TEXT DOWN,6,60,TOPTEN-DOWN,0DH
DISP_STRING_TEXT CLEAR,7,60,15,0DH
DISP_STRING_TEXT EXI,8,60,NEWG-EXI,0DH
DISP_STRING_TEXT TOPTEN,10,60,6,04H
DISP_STRING_TEXT NA_STEP,11,60,NUMBERS1-NA_STEP,04H
DISP_STRING_TEXT XING,0,3,74,05H
DISP_STRING_TEXT XING,24,3,74,05H
DISP_STRING_TEXT GAMETWO,2,3,10,30H
DISP_STRING_TEXT YOU,9,56,20,0DH
LEA DI,SHU
PLAY_ALLNUM DI,1,55
NEWGAME2: LEA DI,NUMBERS2 ; LEA DI,NUMBERS2
MOV CX,32
NEXT2: MOV BYTE PTR [DI],0
INC DI
LOOP NEXT2
DISP_STRING_TEXT LOAD,12,20,10,07H
SUIJI2 N8
SUIJI2 N1
SUIJI2 N2
SUIJI2 N7
SUIJI2 N3
SUIJI2 N4
SUIJI2 N5
SUIJI2 N6
SUIJI2 N91
SUIJI2 N10
SUIJI2 N14
SUIJI2 N12
SUIJI2 N15
SUIJI2 N13
SUIJI2 N11
LEA AX,N9
LEA DI,NUMBERS2
MOV [DI+30],AX ;设置出始的longge位置
MOV BX,3
MOV CX,3 ;设置空格的出始位置
MOV DX,0 ;记录移动的次数
ADD DI,30 ;设置di的出始位置
DISP_STRING_TEXT KO,12,20,10,07H
SHUCHU2: LEA SI,NUMBERS2 ;输出16个数字
PUSH DI
PUSH DX
PLAY_ALLNUM [SI],3,14
PLAY_ALLNUM [SI+2],3,22
PLAY_ALLNUM [SI+4],3,30
PLAY_ALLNUM [SI+6],3,38
PLAY_ALLNUM [SI+8],8,14
PLAY_ALLNUM [SI+10],8,22
PLAY_ALLNUM [SI+12],8,30
PLAY_ALLNUM [SI+14],8,38
PLAY_ALLNUM [SI+16],13,14
PLAY_ALLNUM [SI+18],13,22
PLAY_ALLNUM [SI+20],13,30
PLAY_ALLNUM [SI+22],13,38
PLAY_ALLNUM [SI+24],18,14
PLAY_ALLNUM [SI+26],18,22
PLAY_ALLNUM [SI+28],18,30
PLAY_ALLNUM [SI+30],18,38 ;输出完毕
POP DX
POP DI
PANDUAN2: CALL FAR PTR DISP_DX
DISP_STRING_TEXT STEP,1,45,8,0DH ;输出DX
MOV AL,0
CALL FAR PTR B_PANDUAN2
CMP AL,1
JNZ GETCHAR2
DISP_STRING_TEXT SEC,22,3,KONG-SEC,01H
DISP_STRING_TEXT PRESS,22,20,LOAD-PRESS,01H
PUSH SI
MOV SI,OFFSET FILE_2
CALL FAR PTR FILE0
POP SI
;DISP_STRING_TEXT KONG,22,3,45,00H
N: JMP NEWGAME2
GETCHAR2:
MOV AH,07H
INT 21H ;输入一个字符
CMP AL,'c'
JNZ ZHUAN
LEA SI,FILE_2
CALL FAR PTR WRITEFILE
JMP GETCHAR2
ZHUAN: CMP AL,'n'
JZ N
CMP AL,'q'
JZ Q02
CMP AL,'s'
JNZ NEXT02
;bianghuan shang
CMP CX,0
JZ GETCHAR2
XCHG AX,[DI]
XCHG AX,[DI-8]
XCHG AX,[DI]
SUB DI,8
SUB CX,1
ADD DX,1
JMP SHUCHU2
NEXT02: CMP AL,'d'
JNZ NEXT12
;bianhuan zuo
CMP BX,0
JZ GETCHAR2
XCHG AX,[DI]
XCHG AX,[DI-2]
XCHG AX,[DI]
SUB DI,2
SUB BX,1
ADD DX,1
JMP SHUCHU2
;SHU: JMP SHUCHU
NEXT12: CMP AL,'a'
JNZ NEXT22
;bianhuan you
CMP BX,3
JZ GETCHAR2
XCHG AX,[DI]
XCHG AX,[DI+2]
XCHG AX,[DI]
ADD DI,2
ADD BX,1
ADD DX,1
JMP SHUCHU2
Q02: JMP QUIT2
NEXT22: CMP AL,'w'
JNE GETCHAR2
;bianhuan xia
CMP CX,3
JZ GETCHAR2
XCHG AX,[DI]
XCHG AX,[DI+8]
XCHG AX,[DI]
ADD DI,8
ADD CX,1
ADD DX,1
JMP SHUCHU2
QUIT2:
POPJCQ
RET
ENDP
CODE2 ENDS
;*************************************************************************
;file
;*************************************************************************
CODE4 SEGMENT
ASSUME CS:CODE4,DS:DATA
FILE0 PROC FAR
PUSHJCQ
; CALL GETRATE
MOV AH,1
AND CH,0EFH
INT 10H ;显示光标
MOV BH,0
MOV BL,07H
INT 10H ;
PLACECURSOR 22,45
MOV DX,OFFSET FNAME
MOV AH,0AH
INT 21H
;CLEARSCREENH 22,3,22,54
DISP_STRING_TEXT KONG,22,3,54,07H
CALL FAR PTR GETNAME
CALL FAR PTR COHEROS
CALL FAR PTR DISPHEROS
MOV CX,10
LEA SI,HNAME
HNA: MOV BYTE PTR [SI],' '
INC SI
LOOP HNA
POPJCQ
RET
FILE0 ENDP
CODE4 ENDS
;********************************************************************8
;qing top 10
;***********************************************************************
CODE5 SEGMENT
ASSUME CS:CODE5,DS:DATA
WRITEFILE PROC FAR
PUSHJCQ
MOV DX,SI
MOV AL,02H
MOV AH,3DH
INT 21H
PUSH AX
POP BX
PUSH BX
MOV CX,160
LEA DX,FILE_DA
MOV AH,40H
INT 21H ;xie file
POP BX
MOV AH,3EH
INT 21H ;guanbi file
CALL FAR PTR DISPHEROS
POPJCQ
RET
WRITEFILE ENDP
CODE5 ENDS
;******************************************************************************
;zichengxu qingping panduan yanshi disp string code
;******************************************************************************
CODE3 SEGMENT
ASSUME CS:CODE3,DS:DATA
GETNAME PROC FAR
PUSH SI
PUSH DI
PUSH CX
PUSH DX
PUSH AX
MOV SI,OFFSET FNAME+2
MOV DI,OFFSET HNAME
MOV CX,0
MOV CL,FNAME+1
NEXTNA:
;MOVSB
;CLD
XCHG AL,[SI]
XCHG AL,[DI]
XCHG AL,[SI]
INC SI
INC DI
LOOP NEXTNA
;MOV DX,OFFSET HNAME
;MOV AH,09H
;INT 21H
POP AX
POP DX
POP CX
POP DI
POP SI
RET
GETNAME ENDP
;-----------------------------------------------------------
;name :correctheros
;-----------------------------------------------------------
COHEROS PROC FAR
PUSHJCQ
;CMP AX,1
;JNZ H2
;MOV DX,OFFSET FILE_1 ;打开文件,读写方式
;JMP H3
;H2: MOV DX,OFFSET FILE_2
MOV DX,SI
H3: MOV AL,02H
MOV AH,3DH
INT 21H
MOV SI,AX ;读文件到缓冲区rbuffer
MOV BX,AX
MOV CX,160
MOV DX,OFFSET RBUFFER
MOV AH,3FH
INT 21H
PUSH SI
PUSH BX
MOV BH,STEP+5
MOV AH,STEP+6
MOV AL,STEP+7
MOV CX,10
LEA SI,RBUFFER+13
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -