⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 work2.asm

📁 X86汇编写的一个贪吃蛇
💻 ASM
字号:
DATA SEGMENT
LEN DB 0CH
POINTSX DB 46,45,44,43,42,41,40,39,38,37,36,35,34,33,86 DUP(0)
POINTSY DB 14 DUP(12),86 DUP(0)
DIR DB 00H
UDIR DB 01H
FOODX DB 40H
FOODY DB 06H
MESSAGE1 DB "---GAME OVER---","$"
MESSAGE2 DB "CONGRATULATIONS","$"
DATA ENDS

CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
	AND AX,0000H
	AND BX,0000H
	AND CX,0000H
	AND DX,0000H
	MOV AX,DATA
	MOV DS,AX
	
	MOV AL,03H
	MOV AH,00H
	INT 10H
	MOV AH,01H
	MOV CX,1000H
	INT 10H
	
L2:	JMP SCREEM
RE: MOV CX,0FFFH
L3:	MOV DI,CX
	MOV CX,02FFH
L5: MOV AH,01H    ;;WAITING FOR INPUT
	INT 16H
	JZ L7
	
L6:	MOV AH,00H    ;;GET THE INPUT
	INT 16H
	CMP AH,72
	JNZ R1
	MOV DL,02H
	MOV DH,03H
	JMP R4
R1:	CMP	AH,80
	JNZ R2
	MOV DL,03H
	MOV DH,02H
	JMP R4
R2:	CMP AH,75
	JNZ R3
	MOV DL,01H
	MOV DH,00H
	JMP R4
R3:	CMP AH,77
	JNZ L7
	MOV DL,00H
	MOV DH,01H

R4: CMP DL,[UDIR]  ;;IS THE OPPOSITE?
	JZ L7
	MOV [DIR],DL
	MOV [UDIR],DH
	JMP L8
	
L7:	LOOP L5
	MOV CX,DI
	LOOP L3
	
L8:	AND CX,0000H  ;;CHANG THE BODY
	MOV CL,[LEN]
	ADD CX,2
L4: DEC CX
	MOV SI,CX
	MOV AL,[SI+POINTSY]
	INC SI
	MOV [SI+POINTSY],AL
	DEC SI
	MOV AL,[SI+POINTSX]
	INC SI
	MOV [SI+POINTSX],AL
	INC CX
	LOOP L4
	
	MOV AL,[DIR]  ;;CHANGE THE HEAD
	MOV AH,AL
    MOV BL,[POINTSX]
	MOV BH,[POINTSY]
	AND AL,02H
	JZ D3
	AND AH,01H
	JNZ D2
D1: DEC BH
	JMP D6
D2: INC BH
	JMP D6
		
D3: AND AH,01H
	JZ D5
D4: DEC BL
	JMP D6
D5:	INC BL
	
D6:	CMP BL,0  ;;ACROSS THE LIMIT
	JL Y1
	CMP BL,79
	JA Y2
	CMP BH,0
	JL Y3
	CMP BH,24
	JA Y4
	JMP Y5	
Y1: MOV BL,79
	JMP Y5	
Y2:	MOV BL,0
	JMP Y5
Y3: MOV BH,24
	JMP Y5
Y4:	MOV BH,0
	JMP Y5
	
Y5:	AND CX,0000H  ;;CHECK HEAD-BODY
	MOV CL,[LEN]
	INC CX
D7: MOV SI,CX
	CMP BL,[SI+POINTSX]
	JNZ D9
D8:	CMP BH,[SI+POINTSY]
	JZ M1
D9:	LOOP D7
	
    CMP BL,[FOODX]  ;;CHECK FOR FOOD
    JNZ D10
    CMP BH,[FOODY]
    JNZ D10         ;;NOTHING
    MOV CL,[LEN]    ;;FIND FOOD
    INC CL
    CMP CL,30
    JZ M2           ;;CHECK FOR VICTORY
    MOV [LEN],CL    ;;CHANG THE FOOD
    AND AX,0000H
    MOV AL,[FOODX]
    ADD AL,BL
    MOV DL,80
    DIV DL
    MOV [FOODX],AH   
    AND AX,0000H
    MOV AL,[FOODY]
    ADD AL,BH
    MOV DL,25
    DIV DL
    MOV [FOODY],AH
          
D10:MOV [POINTSX],BL ;;THE HEAD
	MOV [POINTSY],BH
	JMP L2
		
SCREEM:              ;;PRINT ON SCREEM
	MOV AL,0
	MOV BH,16H
	MOV CH,0
	MOV CL,0
	MOV DH,24
	MOV DL,79
	MOV AH,6
	INT 10H
	
	MOV DH,[FOODY]   ;;PRINT THE FOOD
	MOV DL,[FOODX]
	MOV BH,00H
	MOV AH,02H
	INT 10H
	MOV AL,'o'
	MOV BL,16H
	MOV CX,0001H
	MOV AH,09H
	INT 10H
	
	MOV DH,[POINTSY]  ;;PRINT THE HEAD
	MOV DL,[POINTSX]
	MOV BH,00H
	MOV AH,02H
	INT 10H
	MOV AL,'#'
	MOV BL,16H
	MOV CX,0001H
	MOV AH,09H
	INT 10H
	
    AND CX,0000H       ;;PRINT THE TAIL
	MOV CL,[LEN]
	MOV SI,CX
	INC SI
	MOV DH,[SI+POINTSY]
	MOV DL,[SI+POINTSX]
	MOV BH,00H
	MOV AH,02H
	INT 10H
	MOV AL,'-'
	MOV BL,16H
	MOV CX,0001H
	MOV AH,09H
	INT 10H
	
	MOV CX,0000H        ;;PRINT THE BODY
	MOV CL,[LEN]
L1: MOV SI,CX
	MOV DH,[SI+POINTSY]
	MOV DL,[SI+POINTSX]
	MOV BH,00H
	MOV AH,02H
	INT 10H
	MOV DI,CX
	MOV AL,'='
	MOV BL,16H
	MOV CX,0001H
	MOV AH,09H
	INT 10H
	
	MOV CX,DI	
	LOOP L1
	JMP RE
	
M1:	MOV AL,0                ;;GAME OVER
	MOV BH,16H
	MOV CH,0
	MOV CL,0
	MOV DH,24
	MOV DL,79
	MOV AH,6
	INT 10H
	MOV DH,12
	MOV DL,33
	MOV BH,00H
	MOV AH,02H
	INT 10H
	MOV DX,OFFSET MESSAGE1
	MOV AH,9
	INT 21H
	JMP EN

M2:	MOV AL,0                 ;;VICTORY
	MOV BH,16H
	MOV CH,0
	MOV CL,0
	MOV DH,24
	MOV DL,79
	MOV AH,6
	INT 10H
	MOV DH,12
	MOV DL,33
	MOV BH,00H
	MOV AH,02H
	INT 10H
	MOV DX,OFFSET MESSAGE2
	MOV AH,9
	INT 21H	
;;CONTROL THE "PRESS ANY KEY TO CONTINUE"		
EN:	MOV DH,24
	MOV DL,79
	MOV BH,00H
	MOV AH,02H
	INT 10H
	
	MOV AH,4CH
	INT 21H
	
CODE ENDS
END START

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -