【课程设计】8086汇编实现打字小游戏

大家好我是冈坂日川。最近临近期末,很多计算机系的学生肯定有课程设计,包括汇编啊,java啊,python啊这些,我今天给大家分享一个比较完善的汇编程序,是从 GitHub 上 转载并修改的代码,小细节,乱码问题我都解决了,你只需要复制黏贴,就可以执行了!同时,代码可以用于学习,但切记不可抄袭做作业!!!转载 GitHub ASMTypingGame- 项目简介 / 设计思路- 代码片- 执行结果视图一、项目简介ASMTypingGame简述这是一个用x86 MASM写的打字游戏,.
摘要由CSDN通过智能技术生成

大家好我是冈坂日川。最近临近期末,很多计算机系的学生肯定有课程设计,包括汇编啊,java啊,python啊这些,我今天给大家分享一个比较完善的汇编程序,是从 GitHub 上 转载并修改的代码,小细节,乱码问题我都解决了,你只需要复制黏贴,就可以执行了!同时,代码可以用于学习但切记不可抄袭做作业!!!
转载 GitHub ASMTypingGame

- 项目简介 / 设计思路
- 代码片
- 执行结果视图

一、项目简介

ASMTypingGame

简述

这是一个用x86 MASM写的打字游戏,是我计算机组成原理与汇编语言课程的课程设计。

实现功能

老师给的要求如下:

  1. 游戏开始后,从屏幕的顶部不断生成字符往下掉,值随机,位置随机。
  2. 按下对应按键后,屏幕上对应的字符高亮显示
  3. 按下按键后,蜂鸣器发声
  4. 统计分数

我在老师的要求上做了一定的扩展,把程序写成了类似DOS窗口游戏的东西:

  1. 首先有做了初始界面,游戏界面,设置界面和积分界面等界面,并提供跳转的接口。
  2. 按下按键后,蜂鸣器发出有声调的声音,组合起来就是一首曲子,在设置界面提供修>改的接口。
  3. 提供字符生成速度和下落速度的修改,提供字符的配色选择。

不足与改进

这个程序还有很多可以修改的地方,比如界面可以做的更精美,音调可以调得更准等。

一、代码

CODE1 SEGMENT
    ASSUME CS:CODE1,DS:DATA1,SS:STACKS,ES:EXS


MAIN	PROC	FAR
        MOV 	AX,DATA1
        MOV 	DS,AX
        MOV		AX,EXS
        MOV 	ES,AX 				
        ;S:BP
INITIAL:
        CALL 	INIT 				
        CMP 	flag,0 				      
        JE 		NEWGAME
        CMP 	flag,2 				     
        JE 		END_MAIN
        CALL 	SETTING 			        
        JMP 	INITIAL
NEWGAME:
        CALL 	INIT_GAME			
        CALL	GAME				   
        JMP 	INITIAL
END_MAIN:
        MOV 	AH,4CH
        INT 	21H
MAIN	ENDP
;**********************************************************

;*********************************************************
PUSH_REG	MACRO
        PUSH    AX
        PUSH    BX
        PUSH    CX
        PUSH    DX
        PUSH    SI
        PUSH 	DI
        PUSHF
ENDM
;**********************************************************

;**********************************************************
POP_REG 	MACRO
        POPF
        POP 	DI
        POP     SI
        POP     DX
        POP     CX
        POP     BX
        POP     AX
ENDM
;**********************************************************

;*******************************************************
WRITE 	MACRO	PAGE,ROW,COL,COLOR,CHAR
        PUSH_REG
        MOV		BH,PAGE 			        
        MOV		DH,ROW 				        
        MOV		DL,COL 				       
        MOV		AH,02H				
        INT 	10H
        MOV		AL,CHAR 			
        MOV		BL,COLOR 			
        MOV		CX,1 				
        MOV		AH,09H				   
        INT 	10H
        POP_REG
ENDM
;**********************************************************


;**********************************************************
MV_CUR 	MACRO	PAGE,ROW,COL
        PUSH_REG
        MOV		BH,PAGE 			    
        MOV		DH,ROW 				     
        MOV		DL,COL 				       
        MOV		AH,02H				
        INT 	10H
        POP_REG
ENDM
;**********************************************************


;**********************************************************
MODULUS	MACRO 	NUM1,NUM2
        PUSH_REG
        MOV 	AX,NUM1
        MOV 	BX,NUM2
        ADD 	AX,BX
        MOV 	DX,0
        DIV		BX
        MOV 	NUM1,DX 			
        POP_REG
ENDM
;**********************************************************

;*********************************************************
RING	MACRO	WAIT
        PUSH_REG
GET_FREQUENCE:
        LEA 	DI,music_key
        MOV 	AX,56
        MUL 	music
        ADD 	DI,AX
        ADD 	DI,music_ptr
        MOV 	AL,[DI]
        DEC 	AL
        SAL 	AL,1
        XOR 	AH,AH
        LEA		SI,music_freq
        ADD 	SI,AX
        MOV 	DI,[SI]
        INC 	music_ptr
        MODULUS music_ptr,56
SOUND:
        MOV 	AL,0B6H 			       
        OUT		43H,AL
        MOV 	DX,12H
        MOV 	AX,348CH			      
        DIV 	DI
        OUT 	42H,AL
        MOV 	AL,AH
        OUT 	42H,AL
        IN 		AL,61H
        MOV 	AH,AL
        OR 		AL,3
        OUT 	61H,AL
        MOV 	BX,WAIT
WAIT1:
        MOV 	CX,2800
DELAY:
        LOOP 	DELAY
        DEC 	BX
        JNZ 	WAIT1
        MOV 	AL,AH
        OUT 	61H,AL
RING_END:
        POP_REG
ENDM
;**********************************************************

;
;Print String
;**********************************************************
P_STR	MACRO 	PAGE,ROW,COL,STR,LEN,COLOR
        MOV 	BP,STR 				
        MOV 	AH,13H				      
        MOV		BH,PAGE				
        MOV 	DH,ROW 			
  • 5
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值