📄 well1.asm
字号:
DB 0DBH,10H,0,1
DB 0DBH,10H,1,-5
DB 0DDH,1,0,1
DB 0DEH,1,0,1
DB 0DCH,1,0,1
DB 0DDH,1,0,1
DB 0DBH,10H,0,1
DB 0DBH,10H,1,-5
DB 0DDH,1,0,1
DB 0DBH,10H,0,1
DB 0DBH,10H,0,1
DB 0DDH,1,0,1
DB 0DBH,10H,0,1
DB 0DBH,10H,1,-5
DB 0DDH,1,0,1
DB 0DBH,10H,0,1
DB 0DBH,10H,0,1
DB 0DDH,1,0,1
DB 0DBH,10H,0,1
N15 DB 24
DB 0DBH,10H,0,0
DB 0DDH,1,0,1
DB 0DDH,1,0,1
DB 0DFH,1,0,1
DB 0DFH,1,0,1
DB 0DBH,10H,0,1
DB 0DBH,10H,1,-5
DB 0DDH,1,0,1
DB 0DDH,1,0,1
DB 0DBH,10H,0,1
DB 0DBH,10H,0,1
DB 0DBH,10H,0,1
DB 0DBH,10H,1,-5
DB 0DDH,1,0,1
DB 0DFH,1,0,1
DB 0DFH,1,0,1
DB 0DDH,1,0,1
DB 0DBH,10H,0,1
DB 0DBH,10H,1,-5
DB 0DDH,1,0,1
DB 0DCH,1,0,1
DB 0DCH,1,0,1
DB 0DDH,1,0,1
DB 0DBH,10H,0,1
SHU DB 23
DB 0B0H,05H,0,0
DB 0B0H,05H,1,0
DB 0B0H,05H,1,0
DB 0B0H,05H,1,0
DB 0B0H,05H,1,0
DB 0B0H,05H,1,0
DB 0B0H,05H,1,0
DB 0B0H,05H,1,0
DB 0B0H,05H,1,0
DB 0B0H,05H,1,0
DB 0B0H,05H,1,0
DB 0B0H,05H,1,0
DB 0B0H,05H,1,0
DB 0B0H,05H,1,0
DB 0B0H,05H,1,0
DB 0B0H,05H,1,0
DB 0B0H,05H,1,0
DB 0B0H,05H,1,0
DB 0B0H,05H,1,0
DB 0B0H,05H,1,0
DB 0B0H,05H,1,0
DB 0B0H,05H,1,0
DB 0B0H,05H,1,0
MADE DB 'MADE BY MOMO'
WELL DB 'W E L C O M E !'
STR0 DB '****************************************'
STR1 DB 'please put in you choice:'
GAM1 DB '1->game one'
GAM2 DB '2->game two'
QUI DB 'q->quit'
XING DB 74 DUP(16H)
EXI DB 'q->exit'
NEWG DB 'n->new game'
LEFT DB 'a->left'
RIGHT DB 'd->right'
UP DB 'w->up'
DOWN DB 's->down'
TOPTEN DB 'top 10:'
NA_STEP DB 'name step'
NUMBERS1 DW 18 DUP(0)
NUMBERS2 DW 30 DUP (0)
SEC DB 'You are successful.'
KONG DB ' '
PRESS DB 'please input you name:'
LOAD DB 'Loading...'
KO DB ' '
STEP DB 'step:999'
GAMEONE DB 01H,' Game One'
GAMETWO DB 0FH,' Game Two'
YOU DB 20 DUP(2EH)
;***********************
RBUFFER DB 160 DUP(' ') ;zong zijie shu
STRBUFFER DB 16 DUP (' ') ;mei ge de ge shu
HEROROW DB 13
;rate
FNAME DB 12,10,12 DUP(' ')
HNAME DB 10 DUP(' '),'$'
FILE_1 DB 'file1.txt',0
FILE_2 DB 'file2.txt',0
FILE_DA DB '01.oooooooooo999'
DB '02.oooooooooo999'
DB '03.oooooooooo999'
DB '04.oooooooooo999'
DB '05.oooooooooo999'
DB '06.oooooooooo999'
DB '07.oooooooooo999'
DB '08.oooooooooo999'
DB '09.oooooooooo999'
DB '10.oooooooooo999'
CLEAR DB 'c->clear top 10'
DATA ENDS
;********************************************************************************
; 宏定义
;*********************************************************************************
PLACECURSOR MACRO OP1,OP2 ;zhi guang biao weizhi
;PUSH AX
MOV AH,02H
MOV BH,00H
MOV DH,OP1
MOV DL,OP2
;POP AX
INT 10H
ENDM
CLEARSCREENH MACRO OP1,OP2,OP3,OP4 ;qingping zuo you
PUSHJCQ
MOV AH,06H
MOV AL,00H
MOV BH,00H
MOV CH,OP1
MOV CL,OP2
MOV DH,OP3
MOV DL,OP4
INT 10H
POPJCQ
ENDM
SUIJI MACRO ADR
LOCAL CONTINE
CONTINE:
CALL FAR PTR READ_8
ADD AH,AH
MOV AL,AH
MOV AH,0
;LEA DI,NUMBERS
MOV SI,AX
CMP NUMBERS1[SI],0
JNZ CONTINE
LEA DI,ADR
MOV NUMBERS1[SI],DI
ENDM
SUIJI2 MACRO ADR
LOCAL CONTINE
CONTINE:
CALL FAR PTR READ_15
ADD AH,AH
MOV AL,AH
MOV AH,0
;LEA DI,NUMBERS
MOV SI,AX
CMP NUMBERS2[SI],0
JNZ CONTINE
LEA DI,ADR
MOV NUMBERS2[SI],DI
ENDM
PLAY_ALLNUM MACRO ID,HANG,LEI ;输出一个数字
MOV DI, ID
MOV DH,HANG
MOV DL,LEI
CALL FAR PTR DISPLAY_NUMBER
ENDM
DISP_STRING_TEXT MACRO ADRESS,HANG,LEI,LEN,SHUXING ;在某行某列上输出一个字符串
PUSH BP
PUSH DX
PUSH CX
PUSH BX
PUSH AX
MOV BP,SEG ADRESS
MOV ES,BP
MOV BP,OFFSET ADRESS
MOV CX,LEN
MOV DH,HANG
MOV DL,LEI
MOV BL,SHUXING
MOV AL,1
MOV AH,13H
INT 10H
POP AX
POP BX
POP CX
POP DX
POP BP
ENDM
PUSHJCQ MACRO
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH DI
PUSH SI
ENDM
POPJCQ MACRO
POP SI
POP DI
POP DX
POP CX
POP BX
POP AX
ENDM
STACK1 SEGMENT PARA STACK
DB 1024 DUP(?)
STACK1 ENDS
;**************************************************************************************
;code代码段,主程序段
;***************************************************************************************
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AH,0
MOV AL,3
INT 10H
MOV AH,1
MOV CH,10H
INT 10H
FIRST: CALL FAR PTR CLEAR_SCREEN
DISP_STRING_TEXT MADE 0,65,12,01H
DISP_STRING_TEXT WELL,9,33 13,03H
DISP_STRING_TEXT STR0,11,20,STR1-STR0,03H
DISP_STRING_TEXT GAM1,13,35,GAM2-GAM1,03H
DISP_STRING_TEXT GAM2,15,35,QUI-GAM2,03H
DISP_STRING_TEXT QUI,17,35,XING-QUI,03H
; DISP_STRING_TEXT STR1,20,0,25,0EH ;显示首页信息
GETCHAR:
MOV AH,07H ;从键盘输入一个字符,不回显
INT 21H
CMP AL,'q'
JZ QUIT
CMP AL,'1'
JNZ NET ;若选择GAME则清屏,转GAME
CALL FAR PTR CLEAR_SCREEN
CALL FAR PTR GAME1
JMP FIRST
NET: CMP AL,'2'
JNZ GETCHAR
CALL FAR PTR CLEAR_SCREEN
CALL FAR PTR GAME2
JMP FIRST
QUIT: MOV AH,4CH
INT 21H
CODE ENDS
;**************************************************************************
; code 1,子程序game
;****************************************************************************
CODE1 SEGMENT
ASSUME CS:CODE1,DS:DATA
GAME1 PROC FAR
PUSHJCQ
MOV SI,OFFSET FILE_1
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,0DH
DISP_STRING_TEXT XING,24,3,74,0DH
DISP_STRING_TEXT GAMEONE,2,3,GAMETWO-GAMEONE,20H
DISP_STRING_TEXT YOU,9,56,20,0DH
LEA DI,SHU
PLAY_ALLNUM DI,1,55
NEWGAME1: LEA DI,NUMBERS1
MOV CX,18
NEXT1: MOV BYTE PTR [DI],0
INC DI
LOOP NEXT1
DISP_STRING_TEXT LOAD,10,20,10,07H
SUIJI N8
SUIJI N1
SUIJI N2
SUIJI N7
SUIJI N3
SUIJI N4
SUIJI N5
SUIJI N6
LEA AX,N9
LEA DI,NUMBERS1
MOV [DI+16],AX ;设置出始的数字位置
MOV BX,2
MOV CX,2 ;设置空格的出始位置
MOV DX,0 ;记录移动的次数
ADD DI,16 ;设置di的出始位置
DISP_STRING_TEXT KO,10,20,10,07H
SHUCHU1: LEA SI,NUMBERS1 ;输出9个数字
PUSH DI
PUSH DX
PLAY_ALLNUM [SI],5,15
PLAY_ALLNUM [SI+2],5,23
PLAY_ALLNUM [SI+4],5,31
PLAY_ALLNUM [SI+6],10,15
PLAY_ALLNUM [SI+8],10,23
PLAY_ALLNUM [SI+10],10,31
PLAY_ALLNUM [SI+12],15,15
PLAY_ALLNUM [SI+14],15,23
PLAY_ALLNUM [SI+16],15,31 ;输出完毕
POP DX
POP DI
PANDUAN1:
CALL FAR PTR DISP_DX ;输出DX
DISP_STRING_TEXT STEP,1,45,8,0CH
MOV AL,0
CALL FAR PTR B_PANDUAN1
CMP AL,1
JNZ GETCHAR1
DISP_STRING_TEXT SEC,22,3,KONG-SEC,01H ;chenggong tishi
JMP L01
L1: JMP NEWGAME1
L01: DISP_STRING_TEXT PRESS,22,22,LOAD-PRESS,01H ;chenggong mane
MOV SI,OFFSET FILE_1
CALL FAR PTR FILE0 ;cheng gone le
JMP NEWGAME1
GETCHAR1:
MOV AH,07H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -