贪吃蛇代码.docx
- 文档编号:24529139
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:42
- 大小:18.46KB
贪吃蛇代码.docx
《贪吃蛇代码.docx》由会员分享,可在线阅读,更多相关《贪吃蛇代码.docx(42页珍藏版)》请在冰豆网上搜索。
贪吃蛇代码
DATASEGMENT
SEGMENT1CDW0
OFF1CDW0
SCOREDB5DUP('0'),'$'
PADMSGDB44DUP(219)
TMPMSGDB25DUP(?
)
STARTMSG1DB0DH,0AH,'SELECTSPEED.',0DH,0AH,'$'
STARTMSG2DB20H,20H,'1.FAST',0DH,0AH,'$'
STARTMSG3DB20H,20H,'2.MIDDLE',0DH,0AH,'$'
STARTMSG4DB20H,20H,'3.SLOW',0DH,0AH,'$'
STARTMSG5DB20H,20H,'0.EXIT',0DH,0AH,'$'
ENDMSGDB0DH,0AH,'GOODBYE!
',0DH,0AH,'$'
SCOREMSG1DB201,11DUP(205),187
SCOREMSG2DB186,'SCORE:
',186
SCOREMSG3DB204,11DUP(205),185
SCOREMSG4DB186,'LEFT:
A',186
SCOREMSG5DB186,'RIGHT:
D',186
SCOREMSG6DB186,'UP:
W',186
SCOREMSG7DB186,'DOWN:
S',186
SCOREMSG8DB186,'-----------',186
SCOREMSG9DB186,'EXIT:
ESC',186
SCOREMSG10DB200,11DUP(205),188
SPEEDDB0
TIMDB0
CONDB?
NUMDW?
PADMSG1DB400DUP(?
?
?
)
FORMDB2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
DB2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
DB2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
DB2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
DB2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
DB2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
DB2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
DB2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
DB2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
DB2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
DB2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
DB2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
DB2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
DB2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
DB2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
DB2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
DB2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
DB2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
DB2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
DB2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
DB2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2
DB2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
DATAENDS
STACKSEGMENTSTACK
DB200DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVDS,AX
PUSHDS
;GETINT1CADRESS
MOVAL,1CH
MOVAH,35H
INT21H
MOVSEGMENT1C,ES
MOVOFF1C,BX
;SETINT1CADRESS
MOVDX,OFFSETINT1C
MOVAX,SEGINT1C
MOVDS,AX
MOVAL,1CH
MOVAH,25H
INT21H
POPDS
GAMEOVER:
MOVAH,00H
MOVAL,03H
INT10H
SELECTSPEED:
MOVAH,09H
MOVDX,OFFSETSTARTMSG1
INT21H
MOVDX,OFFSETSTARTMSG2
INT21H
MOVDX,OFFSETSTARTMSG3
INT21H
MOVDX,OFFSETSTARTMSG4
INT21H
MOVDX,OFFSETSTARTMSG5
INT21H
MOVAH,08H
INT21H
SUBAL,'0'
MOVCL,AL
ANDAL,3
CMPAL,CL
JNESELECTSPEED
INCAL
INCCL
MULCL
CMPAL,1H
JEEXIT1
MOVSPEED,AL
;SETGRAPHICS
MOVAH,00H
MOVAL,12H
INT10H
MOVAH,0BH
MOVBH,01
MOVBL,00H
INT10H
;STARTGAME
CALLINITGAME
CALLDISPSCORE
CALLRANDOM
CALLDELAY
MOVTIM,0H
LOOP1:
STI
CMPCON,0
JZLOOP11
MOVDL,07H
MOVAH,02H
INT21H
MOVAH,08H
INT21H
JMPGAMEOVER
LOOP11:
MOVAL,TIM
CMPAL,SPEED
JGTIME
JMPLOOP1
TIME:
MOVTIM,0H
MOVAH,1
INT16H
JNZFLAG3
CALLBLANK
JMPLOOP1
FLAG3:
MOVAH,0
INT16H
PUSHAX
MOVAH,1
INT16H
JZFLAG2
POPAX
JMPFLAG3
EXIT1:
JMPEXIT
FLAG2:
POPAX
CMPAL,1BH
JZEXIT
CMPAL,'a'
JZKA
CMPAL,'s'
JZKS
CMPAL,'d'
JZKD
CMPAL,'w'
JZKW
CALLBLANK
JMPLOOP1
KA:
CALLLEFT
JMPLOOP1
KS:
CALLDOWN
JMPLOOP1
KD:
CALLRIGHT
JMPLOOP1
KW:
CALLUP
JMPLOOP1
EXIT:
;SETGRAPHICS
MOVAX,0003H
INT10H
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETENDMSG
MOVAH,09H
INT21H
;SETINT1CADRESS
MOVDX,OFF1C
MOVAX,SEGMENT1C
MOVDS,AX
MOVAL,1CH
MOVAH,25H
INT21H
MOVAX,4C00H
INT21H
INT1CPROC
STI
PUSHAX
PUSHDX
MOVAX,DATA
MOVDS,AX
INCTIM
POPDX
POPAX
IRET
INT1CENDP
LEFTPROCNEAR
MOVSI,0
MOVAX,NUM
DECAX
MOVBX,3
MULBX
ADDSI,AX
MOVCH,PADMSG1[SI]
MOVCL,PADMSG1[SI+1]
CMPPADMSG1[SI+2],1
JNZLEFT1
CALLCHECK1
JMPLEXIT1
LEFT1:
CALLCHECK3
LEXIT1:
RET
LEFTENDP
RIGHTPROCNEAR
MOVSI,0
MOVAX,NUM
DECAX
MOVBX,3
MULBX
ADDSI,AX
MOVCH,PADMSG1[SI]
MOVCL,PADMSG1[SI+1]
CMPPADMSG1[SI+2],3
JNZRIGHT1
CALLCHECK3
JMPREXIT1
RIGHT1:
CALLCHECK1
REXIT1:
RET
RIGHTENDP
CHECK1PROCNEAR
MOVAL,CH
SUBAL,3
MOVBL,22
MULBL
MOVSI,0
ADDSI,AX
ADDCL,2
SHRCL,1
SUBCL,2
MOVCH,0
ADDSI,CX
CMPFORM[SI],0
JNZCHECK11
CALLFORM10
JMPC1EXIT1
CHECK11:
CMPFORM[SI],1
JNZCHECK12
CALLFORM11
JMPC1EXIT1
CHECK12:
CMPFORM[SI],3
JNZCHECK13
CALLFORM13
JMPC1EXIT1
CHECK13:
MOVCON,1
C1EXIT1:
RET
CHECK1ENDP
FORM10PROCNEAR
MOVBL,0
CALLCLEAR0
MOVSI,OFFSETPADMSG1
MOVDH,[SI]
MOVDL,[SI+1]
CALLDISPCELL
MOVDI,SI
ADDSI,3
MOVAX,NUM
DECAX
MOVBX,3
MULBX
MOVCX,AX
CLD
FORM101:
LODSB
STOSB
LOOPFORM101
DECDI
MOVBYTEPTR[DI],1
DECSI
MOVBYTEPTR[SI],1
DECSI
ADDBYTEPTR[SI],2
MOVDH,[SI-1]
MOVDL,[SI]
MOVBL,01010101B
CALLDISPCELL
MOVBL,1
CALLCLEAR0
RET
FORM10ENDP
FORM11PROCNEAR
MOVSI,OFFSETPADMSG1
MOVCH,[SI]
MOVCL,[SI+1]
MOVAX,NUM
DECAX
MOVBX,3
MULBX
ADDSI,AX
MOVBH,[SI]
MOVBL,[SI+1]
ADDBL,2
CMPBH,CH
JNZFORM111
CMPBL,CL
JNZFORM111
CALLFORM10
JMPF11EXIT1
FORM111:
MOVCON,1
F11EXIT1:
RET
FORM11ENDP
FORM13PROCNEAR
MOVBL,0
CALLCLEAR0
MOVSI,OFFSETPADMSG1
MOVAX,NUM
MOVBX,3
MULBX
ADDSI,AX
MOVAL,[SI-3]
MOV[SI],AL
MOVAL,[SI-2]
ADDAL,2
MOV[SI+1],AL
MOVBYTEPTR[SI-1],1
MOVBYTEPTR[SI+2],1
INCNUM
MOVDH,[SI]
MOVDL,[SI+1]
MOVBL,01010101B
CALLDISPCELL
MOVBL,1
CALLCLEAR0
INCSCORE[4]
MOVCX,05H
MOVSI,04H
FORM131:
CMPSCORE[SI],'9'
JNGFORM132
INCSCORE[SI-1]
SUBSCORE[SI],0AH
FORM132:
DECSI
LOOPFORM131
CALLDISPSCORE
CALLRANDOM
RET
FORM13ENDP
CHECK3PROCNEAR
MOVAL,CH
SUBAL,3
MOVBL,22
MULBL
MOVSI,0
ADDSI,AX
SUBCL,2
SHRCL,1
SUBCL,2
MOVCH,0
ADDSI,CX
CMPFORM[SI],0
JNZCHECK31
CALLFORM30
JMPC3EXIT1
CHECK31:
CMPFORM[SI],1
JNZCHECK32
CALLFORM31
JMPC3EXIT1
CHECK32:
CMPFORM[SI],3
JNZCHECK33
CALLFORM33
JMPC3EXIT1
CHECK33:
MOVCON,1
C3EXIT1:
RET
CHECK3ENDP
FORM30PROCNEAR
MOVBL,0
CALLCLEAR0
MOVSI,OFFSETPADMSG1
MOVDH,[SI]
MOVDL,[SI+1]
CALLDISPCELL
MOVDI,SI
ADDSI,3
MOVAX,NUM
DECAX
MOVBX,3
MULBX
MOVCX,AX
CLD
FORM301:
LODSB
STOSB
LOOPFORM301
DECDI
MOVBYTEPTR[DI],3
DECSI
MOVBYTEPTR[SI],3
DECSI
SUBBYTEPTR[SI],2
MOVBL,01010101B
MOVDH,[SI-1]
MOVDL,[SI]
MOVBL,01010101B
CALLDISPCELL
MOVBL,1
CALLCLEAR0
RET
FORM30ENDP
FORM31PROCNEAR
MOVSI,OFFSETPADMSG1
MOVCH,[SI]
MOVCL,[SI+1]
MOVAX,NUM
DECAX
MOVBX,3
MULBX
ADDSI,AX
MOVBH,[SI]
MOVBL,[SI+1]
SUBBL,2
CMPBH,CH
JNZFORM311
CMPBL,CL
JNZFORM311
CALLFORM30
JMPF31EXIT1
FORM311:
MOVCON,1
F31EXIT1:
RET
FORM31ENDP
FORM33PROCNEAR
MOVBL,0
CALLCLEAR0
MOVSI,OFFSETPADMSG1
MOVAX,NUM
MOVBX,3
MULBX
ADDSI,AX
MOVAL,[SI-3]
MOV[SI],AL
MOVAL,[SI-2]
SUBAL,2
MOV[SI+1],AL
MOVBYTEPTR[SI-1],3
MOVBYTEPTR[SI+2],3
INCNUM
MOVDH,[SI]
MOVDL,[SI+1]
MOVBL,01010101B
CALLDISPCELL
MOVBL,1
CALLCLEAR0
INCSCORE[4]
MOVCX,05H
MOVSI,04H
FORM331:
CMPSCORE[SI],'9'
JNGFORM332
INCSCORE[SI-1]
SUBSCORE[SI],0AH
FORM332:
DECSI
LOOPFORM331
CALLDISPSCORE
CALLRANDOM
RET
FORM33ENDP
DOWNPROCNEAR
MOVSI,0
MOVAX,NUM
DECAX
MOVBX,3
MULBX
ADDSI,AX
MOVCH,PADMSG1[SI]
MOVCL,PADMSG1[SI+1]
CMPPADMSG1[SI+2],4
JNZDOWN1
CALLCHECK4
JMPDEXIT1
DOWN1:
CALLCHECK2
DEXIT1:
RET
DOWNENDP
UPPROCNEAR
MOVSI,0
MOVAX,NUM
DECAX
MOVBX,3
MULBX
ADDSI,AX
MOVCH,PADMSG1[SI]
MOVCL,PADMSG1[SI+1]
CMPPADMSG1[SI+2],2
JNZUP1
CALLCHECK2
JMPUEXIT1
UP1:
CALLCHECK4
UEXIT1:
RET
UPENDP
CHECK2PROCNEAR
MOVAL,CH
SUBAL,2
MOVBL,22
MULBL
MOVSI,0
ADDSI,AX
SHRCL,1
SUBCL,2
MOVCH,0
ADDSI,CX
CMPFORM[SI],0
JNZCHECK21
CALLFORM20
JMPC2EXIT1
CHECK21:
CMPFORM[SI],1
JNZCHECK22
CALLFORM21
JMPC2EXIT1
CHECK22:
CMPFORM[SI],3
JNZCHECK23
CALLFORM23
JMPC2EXIT1
CHECK23:
MOVCON,1
C2EXIT1:
RET
CHECK2ENDP
FORM20PROCNEAR
MOVBL,0
CALLCLEAR0
MOVSI,OFFSETPADMSG1
MOVDH,[SI]
MOVDL,[SI+1]
CALLDISPCELL
MOVDI,SI
ADDSI,3
MOVAX,NUM
DECAX
MOVBX,3
MULBX
MOVCX,AX
CLD
FORM201:
LODSB
STOSB
LOOPFORM201
DECDI
MOVBYTEPTR[DI],2
DECSI
MOVBYTEPTR[SI],2
DECSI
DECSI
INCBYTEPTR[SI]
MOVDH,[SI]
MOVDL,[SI+1]
MOVBL,01010101B
CALLDISPCELL
MOVBL,1
CALLCLEAR0
RET
FORM20ENDP
FORM21PROCNEAR
MOVSI,OFFSETPADMSG1
MOVCH,[SI]
MOVCL,[SI+1]
MOVAX,NUM
DECAX
MOVBX,3
MULBX
ADDSI,AX
MOVBH,[SI]
MOVBL,[SI+1]
ADDBH,1
CMPBH,CH
JNZFORM211
CMPBL,CL
JNZFORM211
CALLFORM20
JMPF21EXIT1
FORM211:
MOVCON,1
F21EXIT1:
RET
FORM21ENDP
FORM23PROCNEAR
MOVBL,0
CALLCLEAR0
MOVSI,OFFSETPADMSG1
MOVAX,NUM
MOVBX,3
MULBX
ADDSI,AX
MOVAL,[SI-3]
INCAL
MOV[SI],AL
MOVAL,[SI-2]
MOV[SI+1],AL
MOVBYTEPTR[SI-1],2
MOVBYTEPTR[SI+2],2
INCNUM
MOVDH,[SI]
MOVDL,[SI+1]
MOVBL,01010101B
CALLDISPCELL
MOVBL,1
CALLCLEAR0
INCSCORE[4]
MOVCX,05H
MOVSI,04H
FORM231:
CMPSCORE[SI],'9'
JNGFORM232
INCSCORE[SI-1]
SUBSCORE[SI],0AH
FORM232:
DECSI
LOOPFORM231
CALLDISPSCORE
CALLRANDOM
RET
FORM23ENDP
CHECK4PROCNEAR
MOVAL,CH
SUBAL,4
MOVBL,22
MULBL
MOVSI,0
ADDSI,AX
SHRCL,1
SUBCL,2
MOVCH,0
ADDSI,CX
CMPFORM[SI],0
JNZCHECK41
CALLFORM40
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 贪吃 代码