用汇编写个字符型的flappy bird

本文介绍了如何使用8086汇编语言在DOS环境下编写一个简单的字符型Flappy Bird游戏。通过调用中断设置光标和显示字符,实现了绘图函数。游戏通过循环执行清屏、绘制、延时来实现动态效果。延时功能通过中断1AH完成。键盘输入的获取在Windows系统下需在DOSBox中运行。游戏以实时模式运行,每帧更新游戏状态并重绘界面。
摘要由CSDN通过智能技术生成

虽然以前很少用汇编编写程序,但却感觉到了汇编的强大,以前有些8086的汇编基础,所以准备在8086的环境下试探着写个简单的字符型flappy bird。

写游戏首先得解决的问题就是输出问题,我所知道的方法有两种:一种直接向显存写数据,一种调用中断。在这里使用中断的办法,把输出写成一个函数:

首先调用10号中断2号子程序设置光标坐标:

   	mov ah,2
   	mov bh,0
   	mov dh,byte ptr ss:[bp+8]	;y
   	mov dl,byte ptr ss:[bp+10]	;x
   	int 10h					;set position

再调用int10  9号显示字符

   	mov ah,9
   	mov al,byte ptr ss:[bp+6];char
   	mov bl,byte ptr ss:[bp+4];color
   	mov bh,0
   	mov cx,ss:[bp+2];repeat
   	int 10h;draw char


其中颜色用一个字节表示,其定义如下:

	twk equ 80h;闪烁
	bred equ 40h;前景红色
	bgreen equ 20h
	bblue equ 10h
	hlight equ 8h;高亮
	fred equ 4h;背景红色
	fgreen equ 2h
	fblue equ 1h
在绘图之前还得清屏才行,笔者曾试图用int10h 3号中断清屏,但发现速度十分慢,于是采用填充空白的办法把整个屏幕填充掉。

接下来绘图就方便多了,绘制地板直接调用绘图函数就行,绘制水管的过程中需要进行比较,也是十分容易的。

能够绘图了,但怎么才能动起来呢?很简单,循环地执行  清屏-绘制-延时,问题来了,8086怎么延时呢?用中断1ah就能实现,以下引用的其他资料:

时钟服务
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值