📄 snak.txt
字号:
MOV DL,[SI+1]
CALL DISPCELL
MOV DI,SI
ADD SI,3
MOV AX,NUM
DEC AX
MOV BX,3
MUL BX
MOV CX,AX
CLD
FORM201:
LODSB
STOSB
LOOP FORM201
DEC DI
MOV BYTE PTR [DI],2
DEC SI
MOV BYTE PTR [SI],2
DEC SI
DEC SI
INC BYTE PTR [SI]
MOV DH,[SI]
MOV DL,[SI+1]
MOV BL,01010101B
CALL DISPCELL
MOV BL,1
CALL CLEAR0
RET
FORM20 ENDP
FORM21 PROC NEAR
MOV SI,OFFSET PADMSG1
MOV CH,[SI]
MOV CL,[SI+1]
MOV AX,NUM
DEC AX
MOV BX,3
MUL BX
ADD SI,AX
MOV BH,[SI]
MOV BL,[SI+1]
ADD BH,1
CMP BH,CH
JNZ FORM211
CMP BL,CL
JNZ FORM211
CALL FORM20
JMP F21EXIT1
FORM211:
MOV CON,1
F21EXIT1:
RET
FORM21 ENDP
FORM23 PROC NEAR
MOV BL,0
CALL CLEAR0
MOV SI,OFFSET PADMSG1
MOV AX,NUM
MOV BX,3
MUL BX
ADD SI,AX
MOV AL,[SI-3]
INC AL
MOV [SI],AL
MOV AL,[SI-2]
MOV [SI+1],AL
MOV BYTE PTR [SI-1],2
MOV BYTE PTR [SI+2],2
INC NUM
MOV DH,[SI]
MOV DL,[SI+1]
MOV BL,01010101B
CALL DISPCELL
MOV BL,1
CALL CLEAR0
INC SCORE[4]
MOV CX,05H
MOV SI,04H
FORM231: CMP SCORE[SI],'9'
JNG FORM232
INC SCORE[SI-1]
SUB SCORE[SI],0AH
FORM232: DEC SI
LOOP FORM231
CALL DISPSCORE
CALL RANDOM
RET
FORM23 ENDP
CHECK4 PROC NEAR
MOV AL,CH
SUB AL,4
MOV BL,22
MUL BL
MOV SI,0
ADD SI,AX
SHR CL,1
SUB CL,2
MOV CH,0
ADD SI,CX
CMP FORM[SI],0
JNZ CHECK41
CALL FORM40
JMP C4EXIT1
CHECK41:
CMP FORM[SI],1
JNZ CHECK42
CALL FORM41
JMP C4EXIT1
CHECK42:
CMP FORM[SI],3
JNZ CHECK43
CALL FORM43
JMP C4EXIT1
CHECK43:
MOV CON,1
C4EXIT1:
RET
CHECK4 ENDP
FORM40 PROC NEAR
MOV BL,0
CALL CLEAR0
MOV SI,OFFSET PADMSG1
MOV DH,[SI]
MOV DL,[SI+1]
CALL DISPCELL
MOV DI,SI
ADD SI,3
MOV AX,NUM
DEC AX
MOV BX,3
MUL BX
MOV CX,AX
CLD
FORM401:
LODSB
STOSB
LOOP FORM401
DEC DI
MOV BYTE PTR [DI],4
DEC SI
MOV BYTE PTR [SI],4
DEC SI
DEC SI
DEC BYTE PTR [SI]
MOV DH,[SI]
MOV DL,[SI+1]
MOV BL,01010101B
CALL DISPCELL
MOV BL,1
CALL CLEAR0
RET
FORM40 ENDP
FORM41 PROC NEAR
MOV SI,OFFSET PADMSG1
MOV CH,[SI]
MOV CL,[SI+1]
MOV AX,NUM
DEC AX
MOV BX,3
MUL BX
ADD SI,AX
MOV BH,[SI]
MOV BL,[SI+1]
SUB BH,1
CMP BH,CH
JNZ FORM411
CMP BL,CL
JNZ FORM411
CALL FORM40
JMP F41EXIT1
FORM411:
MOV CON,1
F41EXIT1:
RET
FORM41 ENDP
FORM43 PROC NEAR
MOV BL,0
CALL CLEAR0
MOV SI,OFFSET PADMSG1
MOV AX,NUM
MOV BX,3
MUL BX
ADD SI,AX
MOV AL,[SI-3]
DEC AL
MOV [SI],AL
MOV AL,[SI-2]
MOV [SI+1],AL
MOV BYTE PTR [SI-1],4
MOV BYTE PTR [SI+2],4
INC NUM
MOV DH,[SI]
MOV DL,[SI+1]
MOV BL,01010101B
CALL DISPCELL
MOV BL,1
CALL CLEAR0
INC SCORE[4]
MOV CX,05H
MOV SI,04H
FORM431: CMP SCORE[SI],'9'
JNG FORM432
INC SCORE[SI-1]
SUB SCORE[SI],0AH
FORM432: DEC SI
LOOP FORM431
CALL DISPSCORE
CALL RANDOM
RET
FORM43 ENDP
CLEAR0 PROC NEAR
MOV SI,OFFSET PADMSG1
MOV CX,NUM
CLEAR01:
PUSH BX
MOV DI,OFFSET FORM
MOV AL,[SI]
SUB AL,3
MOV BL,22
MUL BL
ADD DI,AX
MOV AL,[SI+1]
SHR AL,1
SUB AL,2
MOV AH,0
ADD DI,AX
POP BX
MOV [DI],BL
ADD SI,3
LOOP CLEAR01
RET
CLEAR0 ENDP
BLANK PROC NEAR
MOV SI,0
MOV AX,NUM
DEC AX
MOV BX,3
MUL BX
ADD SI,AX
MOV CH,PADMSG1[SI]
MOV CL,PADMSG1[SI+1]
CMP PADMSG1[SI+2],1
JNZ BLANK1
CALL CHECK1
JMP BEXIT1
BLANK1:
CMP PADMSG1[SI+2],2
JNZ BLANK2
CALL CHECK2
JMP BEXIT1
BLANK2:
CMP PADMSG1[SI+2],3
JNZ BLANK3
CALL CHECK3
JMP BEXIT1
BLANK3:
CALL CHECK4
BEXIT1:
RET
BLANK ENDP
DELAY PROC NEAR
PUSH CX
MOV CX,00FFH
LOOP20: LOOP LOOP20
POP CX
RET
DELAY ENDP
DISPSCORE PROC NEAR
MOV AX,DATA
MOV ES,AX
MOV BP,OFFSET SCORE
MOV CX,05H
MOV DX,0643H
MOV BH,0H
MOV AL,0H
MOV BL,00110100B
MOV AH,13H
INT 10H
RET
DISPSCORE ENDP
DISPPAD PROC NEAR ;BX BH=PAGE BL=COLOR
MOV SI,OFFSET PADMSG1
MOV CX,NUM
MOV BH,0
DISPPAD1:
MOV DH,[SI]
MOV DL,[SI+1]
CALL DISPCELL
ADD SI,3
LOOP DISPPAD1
RET
DISPPAD ENDP
DISPCELL PROC NEAR;DH=ROW DL=COL BH=PAGE BL=COLOR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH DI
PUSH SI
MOV BP,OFFSET PADMSG
MOV CX,02H
MOV AX,1300H
INT 10H
CMP BL,0H
JE SKIP20
;CALC ROW
MOV AH,0H
MOV AL,DH
MOV CL,16
MUL CL
MOV SI,AX
;CALC COL
MOV AH,0H
MOV AL,DL
MOV CL,8
MUL CL
MOV DI,AX
;DRAW
MOV AX,0C00H
MOV DX,SI
ADD DX,15
MOV CX,16
LOOP21: ADD CX,DI
DEC CX
INT 10H
INC CX
SUB CX,DI
LOOP LOOP21
MOV DX,SI
MOV CX,15
ADD DI,15
LOOP22: PUSH CX
MOV CX,DI
INT 10H
INC DX
POP CX
LOOP LOOP22
SUB DI,2
DEC DX
MOV CX,13
LOOP23: PUSH CX
DEC DX
MOV CX,DI
INT 10H
SUB CX,12
MOV AL,07H
INT 10H
MOV AL,00H
POP CX
LOOP LOOP23
MOV AX,0C07H
MOV DX,SI
ADD DX,1
MOV CX,12
SUB DI,12
LOOP24: ADD CX,DI
INT 10H
SUB CX,DI
LOOP LOOP24
SKIP20: POP SI
POP DI
POP DX
POP CX
POP BX
POP AX
RET
DISPCELL ENDP
CLS PROC NEAR
MOV CX,0
MOV DH,24
MOV DL,79
MOV BH,0
MOV AX,600H
INT 10H
RET
CLS ENDP
RANDOM PROC NEAR
RANDOM1:
IN AX,40H
INC AH
INC AL
AND AH,15
MOV DH,AH
AND AL,15
MOV DL,AL
IN AX,40H
INC AH
INC AL
AND AH,3
ADD DH,AH
AND AL,3
ADD DL,AL
IN AX,40H
INC AH
INC AL
AND AH,1
ADD DH,AH
AND AL,1
ADD DL,AL
MOV SI,0
MOV AL,DH
INC AL
MOV BL,22
MUL BL
ADD SI,AX
MOV AL,DL
INC AL
MOV AH,0
ADD SI,AX
CMP FORM[SI],0
JNZ RANDOM1
MOV FORM[SI],3
ADD DH,4
SHL DL,1
ADD DL,6
MOV BL,01011001B
MOV BH,0
CALL DISPCELL
RET
RANDOM ENDP
INITGAME PROC NEAR
CALL CLS
;DRAW TEXTFRAME
MOV AX,DATA
MOV ES,AX
MOV CX,10
MOV BP,OFFSET SCOREMSG1
MOV DX,053CH
LOOP72: PUSH CX
MOV CX,13
MOV AL,0H
MOV BH,0H
MOV BL,01011010B
MOV AH,13H
INT 10H
ADD BP,13
INC DH
POP CX
LOOP LOOP72
;DRAW BOARDFRAME
MOV BP,OFFSET PADMSG
MOV CX,0044
MOV DX,0304H
MOV BH,0H
MOV AL,0H
MOV BL,00110100B
MOV AH,13H
INT 10H
MOV DX,1804H
INT 10H
MOV CX,20
MOV DX,0304H
LOOP4: MOV SI,CX
MOV CX,02
INC DH
INT 10H
MOV CX,SI
LOOP LOOP4
MOV CX,20
MOV DX,032EH
INITGAME1: MOV SI,CX
MOV CX,02
INC DH
INT 10H
MOV CX,SI
LOOP INITGAME1
;FORMAT SCORE
MOV DI,OFFSET SCORE
MOV AL,'0'
MOV CX,05H
REP STOSB
MOV CON,0
MOV NUM,4
MOV DI,OFFSET PADMSG1
MOV CX,1200
MOV AX,0
CLD
REP STOSB
MOV SI,OFFSET FORM
MOV CX,484
IN1:
MOV AL,[SI]
CMP AL,1
JNZ IN2
MOV BYTE PTR [SI],0
JMP IN3
IN2:
CMP AL,3
JNZ IN3
MOV BYTE PTR [SI],0
IN3:
INC SI
LOOP IN1
MOV SI,OFFSET FORM
ADD SI,46
MOV BYTE PTR [SI],1
INC SI
MOV BYTE PTR [SI],1
INC SI
MOV BYTE PTR[SI],1
INC SI
MOV BYTE PTR [SI],1
MOV SI,OFFSET PADMSG1
MOV AL,5
MOV [SI],AL
INC SI
MOV AL,8
MOV [SI],AL
INC SI
MOV AL,1
MOV [SI],AL
INC SI
MOV AL,5
MOV [SI],AL
INC SI
MOV AL,10
MOV [SI],AL
INC SI
MOV AL,1
MOV [SI],AL
INC SI
MOV AL,5
MOV [SI],AL
INC SI
MOV AL,12
MOV [SI],AL
INC SI
MOV AL,1
MOV [SI],AL
INC SI
MOV AL,5
MOV [SI],AL
INC SI
MOV AL,14
MOV [SI],AL
INC SI
MOV AL,1
MOV [SI],AL
MOV BL,01010101B
CALL DISPPAD
RET
INITGAME ENDP
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -