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

📄 10.asm

📁 汇编语言小程序
💻 ASM
字号:
.486
DISP	MACRO	Y,X,LONG,VAR,COLOR
		MOV		AX,1301H
		MOV		BX,COLOR
		MOV		CX,LONG
		MOV		DH,Y
		MOV		DL,X
		MOV		BP,OFFSET VAR
		INT		10H
		ENDM
OVER	MACRO	Y,X
		MOV	AH,02H
		MOV	BH,0
		MOV DH,Y
		MOV DL,X
		INT	10H
		MOV	AH,08H
		INT 10H
		ENDM
MUSIC	MACRO	COM
		MOV CM,COM
		MOV DX,12H
    	MOV AX,34DEH
    	DIV CM
    	OUT 42H,AL
    	MOV AL,AH
    	OUT 42H,AL
    	CALL DELAY
    	MOV AL,0
    	OUT 42H,AL
    	OUT 42H,AL
    	ENDM				
DATAS SEGMENT USE16
MESG1	DB	'Please show seeds:(press 0-2)$'
MESG2	DB	'GAME OVER$'
MESG3	DB	'ENTER ESC TO EXIT OR N TO RESTART'
		DB	0DH,0AH,' Your Score is:   '
SHOW	DW	2 DUP(?),'$'		
MESG4	DB	'READY:E,UP:W,LEFT:A,RIGHT:D,DOWN:S,RESET:N,EXIT:ESC'
TABFB 	DW -1,330,330,330,262,330,393,196,0
TABFE 	DW -1,495,700,700,700,661,589,525,0
TABTB 	DB 4,1,2,2,1,1,2,3
TABTE 	DB 4,1,1,1,1,4,1,2,0,0,0		
C1		DW	2DH
C2		DW	51H
C3		DW	0EH
C4		DW	11H
SEED	DB	' '
L1		DB	201,40 DUP(205),187
L2		DB	186,40 DUP(' '),186
L3		DB	200,40 DUP(205),188
LL		EQU	$-L3
XX		EQU	(80-LL)/2
YY		EQU	5
CD		DB	6
CM		DW	?
AD		DB	10,20,15,25,9,50,13,59
		DB	7,20,10,34,15,20,20,50
		DB	19,59,18,59,17,59,16,59
SL		DB	0
XXX     DB  ?
YYY     DB  ?  
BUFX    DB  ?
BUFY    DB  ?
COUNT	DW	0
SCORE	DW	0
DATAS ENDS

CODES SEGMENT USE16
    ASSUME CS:CODES,DS:DATAS,ES:DATAS
START:
    MOV AX,DATAS
    MOV DS,AX
    MOV ES,AX
    
    MOV	AX,3
    INT	10H
;80*25-------------------------------    
	MOV CD,6
   	DISP	YY,XX,LL,L1,C1
   	DISP	YY+16,XX,LL,L3,C1
BJ:
	DISP	CD,XX,LL,L2,C1
	INC		CD
	CMP 	CD,21
	JNE		BJ
	MOV AH,01H
	MOV CH,20H;CLEAR GUANGBIAO
	INT 10H
	DISP	24,14,51,MESG4,C3
;BEIJING------------------------------
OPEN:
    IN  AL,61H
    OR  AL,00000011B
    OUT 61H,AL
    MOV AL,-1
    OUT 42H,AL
    MOV AL,0
    OUT 42H,AL
;OPEN SPEAKER-------------------------    	
	MOV AH,02H
	MOV BH,0
	MOV DX,0101H
	INT 10H
	MOV	AH,09H
	MOV	DX,OFFSET MESG1
	INT 21H
;SHOW MESG1---------------------------	
	MOV SI,OFFSET TABFB 
	MOV DI,OFFSET TABTB
LASTB:
	CMP WORD PTR [SI],0
	JE	REBEG
    MOV DX,12H
    MOV AX,34DEH
    DIV WORD PTR [SI]
    OUT 42H,AL
    MOV AL,AH
    OUT 42H,AL
    CALL SDELAY    
    ADD SI,2
    INC	DI
    JMP LASTB
;BEGINNING MUSIC------------------------    
REBEG:
   	XOR AH,AH
   	INT 16H
   	CMP AL,1BH
   	JE	EXIT
   	CMP AL,'N'
   	JE	START
   	CMP AL,'0'
   	JB	REBEG
   	CMP AL,'2'
   	JA	REBEG
   	SUB	AL,30H
;CHUSHI--------------------------------
	MOV SL,0
	MOV	SI,OFFSET AD
	CMP	AL,0
CHUSHI:
	JE	RESEED
	ADD	SI,8
	DEC	AL
	JMP	CHUSHI
RESEED:
	DISP	[SI],[SI]+1,1,SEED,C2
	INC	SI
	INC	SI
	INC SL
	CMP	SL,4
	JNE RESEED
	SUB SI,8
	SUB SL,4
;SHOW SEEDS-----------------------------	
	XOR AH,AH
RES:
	INT	16H
	CMP AL,1BH
   	JE	EXIT
	CMP AL,'N'
	JE	START
	CMP AL,'E'
	JNE	RES   	   	
CLEAR:
	DISP	[SI],[SI]+1,1,SEED,C1
	INC	SI
	INC	SI
	INC SL
	CMP SL,4
	JNE CLEAR
	SUB SI,8
	SUB SL,4
;CLEAR SEEDS------------------------------		
	MOV SCORE,0
	MOV COUNT,0
	MOV BUFX,3BH
	MOV BUFY,14H
	DISP	14H,3BH,1,SEED,C3
;READY~GO!---------------------------------	
WALK:
	CMP	SCORE,200
	JE	STOP
	
	MOV AH,01H
	MOV CH,0
	MOV CL,7
	INT 10H
	
	MOV AL,BUFY
	MOV	YYY,AL
	MOV	AL,BUFX
	MOV XXX,AL
	
	CMP YYY,6
	JNE	GOON
	CMP XXX,20
	JNE GOON
	DISP 13,35,9,MESG2,C1
	JMP STOP
	
GOON:
	MOV	AH,02H
	MOV	BH,0
	MOV DH,YYY
	MOV DL,XXX
	INT	10H
;ZHI GUANGBIAO--------------------
	XOR	AH,AH
	INT	16H
	CMP AL,1BH
   	JE	EXIT
	CMP	AL,'N'
	JE	START
	CMP	AL,'W'
	JE	ISW
	CMP AL,'A'
	JE	ISA
	CMP AL,'S'
	JE	ISS
	CMP AL,'D'
	JE  ISD
	JMP	WALK
	
ISW:
	DEC YYY
	JMP CHECK
ISA:
	DEC XXX
	JMP CHECK
ISS:
	INC YYY
	JMP CHECK
ISD:
    INC XXX
    
CHECK:
	MOV AH,01H
	MOV CH,20H;CLEAR GUANGBIAO
	INT 10H
	CMP XXX,19
	JBE WALK
	CMP XXX,3CH
	JAE WALK
	CMP YYY,5
	JBE WALK
	CMP YYY,21
	JAE WALK
;OUT?---------------------------	
	OVER YYY,XXX
	CMP	AH,2DH
	JNE	WALK
	
    MOV AL,YYY
	MOV	BUFY,AL
	MOV	AH,XXX
	MOV BUFX,AH
	INC	COUNT
	
LP3:	
	CMP AX,WORD PTR [SI]
	JE  BINGO
	INC SI
	INC SI
	INC SL
	CMP SL,4
	JNE LP3
	SUB SI,8
	SUB SL,4
;CHECK SEEDS----------------------	
	DISP YYY,XXX,1,SEED,C3
	MUSIC	330
	JMP	WALK
BINGO:
	ADD	SCORE,50	
    DISP YYY,XXX,1,SEED,C4
    MUSIC	525    
    JMP WALK
STOP:
	MOV AH,02H
	MOV BH,0
	MOV DX,0101H
	INT 10H
	
	MOV	AX,SCORE
	XOR DX,DX
	DIV	COUNT
	MOV DI,OFFSET SHOW
	MOV SL,10	
	DIV SL
	ADD AX,3030H
	MOV	[DI],AL
	MOV [DI]+1,AH
	
	MOV AH,09H
	MOV DX,OFFSET MESG3
	INT 21H
;SHOW SCORE-------------------------	
	MOV SI,OFFSET TABFE 
	MOV DI,OFFSET TABTE
LASTE:
	CMP WORD PTR [SI],0
	JE	LP2
    MOV DX,12H
    MOV AX,34DEH
    DIV WORD PTR [SI]
    OUT 42H,AL
    MOV AL,AH
    OUT 42H,AL
    CALL SDELAY
    ADD SI,2
    INC	DI
    JMP LASTE
;ENDING MUSIC-------------------------    
LP2:	 
	XOR	AH,AH
	INT	16H
	CMP AL,1BH
	JE	WINOUT
	CMP AL,'N'
	JNE LP2
CLOSE:
    IN  AL,61H
    AND AL,11111100B
    OUT 61H,AL
    	
	JMP START	
EXIT:
	DISP 13,35,9,MESG2,C1
WINOUT:	
	IN  AL,61H
    AND AL,11111100B
    OUT 61H,AL
;CLOSE SPEAKER------------------------
	XOR AH,AH
	INT	16H
	    
    MOV AH,4CH
    INT 21H
    
DELAY PROC
      MOV EAX,0FFFFFFFH
YANCHI:
	  DEC EAX
      JNZ YANCHI
      RET
DELAY ENDP

SDELAY PROC
      MOV EAX,0AFFFFFFH
      MUL DWORD PTR [DI]
LPB:  DEC EAX
      JNZ LPB
      MOV AL,0
      OUT 42H,AL
      OUT 42H,AL
      MOV EAX,0AFFFFFFH
LPE:  DEC EAX
      JNZ LPE
      RET
SDELAY ENDP    
CODES ENDS
    END START













⌨️ 快捷键说明

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