8086汇编 贪吃蛇 源代码
assume cs:code,ds:data,ss:stack
data segment
dw 200 dup(0) ;--蛇身坐标
dw 0,0,0 ;--存储原始9号中断
data ends
stack segment STACK
db 100 dup(0)
stack ends
code segment
start:
;;-----------------将原始的9号中断存在data断的最后,再把9号地址换掉到offset int9
mov ax,0
mov es,ax
mov ax,data
mov ds,ax
push es:[9*4]
pop ds:[400]
push es:[9*4+2]
pop ds:[402]
mov word ptr es:[9*4],offset int9
mov word ptr es:[9*4+2],cs
;;------------------
mov ax,stack
mov ss,ax
mov sp,100
mov ax,0b800h
mov es,ax
;;-----------------snake的初始化
mov bx,0
mov cx,10
s: mov ds:[bx],cx
add bx,2
loop s
mov word ptr ds:[404],9
call putfood
mov bx,0001h
mov cx,60000
cli
s1:
call movnext
call delay
sti
loop s1
;;------------恢复中断向量,程序结束
end_snake:
mov ax,0
mov es,ax
push ds:[400]
pop es:[9*4]
push ds:[402]
pop es:[9*4+2]
mov ax,4c00h
int 21h
;------------------------------壁障=遇到墙壁或者咬到自己就退出
die_or_not:
cmp dl,-1
je die
cmp dl,80
je die
cmp dh,-1
je die
cmp dh,50
je die
call putchar
cmp byte ptr es:[di],0fh
je die
jmp no_die
die:
jmp end_snake
no_die:
ret
;------------------------------移动蛇身的
movnext:
push dx
push cx
push ax
mov si,0
mov dx,ds:[si]
mov ax,dx
add dh,bh
add dl,bl
call die_or_not
mov ds:[si],dx
call putchar
cmp word ptr es:[di],0403h
mov word ptr es:[di],0A0fh
jne pc_go
mov di,ds:[404]
add di,di
push ds:[di]
pop ds:[di+2]
inc word ptr ds:[404]
call putfood
pc_go:
mn1:
add si,2
cmp word ptr ds:[si],0
je mn_ok
mov dx,ds:[si]
call putchar
mov word ptr es:[di],0
mov dx,ax
call putchar
mov word ptr es:[di],0A0fh
mov ax,ds:[si]
mov ds:[si],dx
jmp mn1
mn_ok: pop ax
pop cx
pop dx
ret
;;----------int9-----------------上48 下50 左4B 右4D
int9:
push ax
push es
push cx
in al,60h
pushf
call dword ptr ds:[400]
cmp bl,0
je zy
sx:
cmp al,48h
jne int9x1
mov bx,0ff00h
int9x1:
cmp al,50h
jne int9x2
mov bx,0100h
int9x2: jmp int9ok
zy:
cmp al,4bh
jne int9x3
mov bx,00ffh
int9x3:
cmp al,4Dh
jne int9x4
mov bx,0001h
int9x4:
int9ok:
pop cx
pop es
pop ax
iret
int9_end:nop
;--------------------------------
putchar:
push dx
push ax
mov ax,00a0h
mul dh
mov dh,0
add dl,dl
add ax,dx
mov di,ax
pop ax
pop dx
ret
;---------------------------------
delay:
push cx
mov ch,0bh
cmp word ptr ds:[404],24
ja level4
cmp word ptr ds:[404],20
ja level3
cmp word ptr ds:[404],12
ja level2
cmp word ptr ds:[404],10
ja level1
jmp normal
level4:
shr ch,1
shr ch,1
level3:
shr ch,1
level2:
shr ch,1
level1: shr ch,1
normal:
mov cl,0ffh
dn1:
push cx
mov cx,0ffffh
dn2:loop dn2
pop cx
loop dn1
pop cx
ret
;;-----------------------------------根据时间的随机性变化产生食物
putfood:
push ax
push dx
push cx
push bx
put_again:
mov al,0
out 70h,al
in al,71h
mov ah,al
mov cl,4
shr ah,cl ;--秒数十位在ah 个位在al
and al,00001111b
push ax
mov ah,0
mov dh,8
mul dh
mov dl,al
pop ax ;--秒数十位在ah 个位在al
mov al,ah
add al,dl
mov cl,23
div cl
mov dh,ah
;;-------------------防止随机产生的食物,在蛇身上
mov cx,ds:[404]
mov bx,0
pt1: cmp word ptr ds:[bx],dx
je put_again
add bx,2
loop pt1
;;-------------------
call putchar
mov word ptr es:[di],0403h
pf_end: pop bx
pop cx
pop dx
pop ax
ret
code ends
end start
8086汇编 贪吃蛇 源代码相关推荐
- 8086汇编贪吃蛇(随机食物+速度递增)
基于8086实现的贪吃蛇 [cpp] view plaincopy assume cs:code,ds:data data segment dw 200 dup(0) ;--蛇身坐标 dw 0,0 ...
- H5网页版贪吃蛇源代码
H5网页版贪吃蛇源代码,新建文本文档,将下面的代码复制粘贴到文本文档,然后保存文件.重命名文件及后缀名为index.html.将文章最下面的两个图片保存下来,蓝色背景大图重命名为back.jpg,骷髅 ...
- 简单贪吃蛇c语言代码,一个C语言写简单贪吃蛇源代码.doc
一个C语言写简单贪吃蛇源代码 #include #include #include #include #include #include int grade=5,point=0,life=3; voi ...
- 贪吃蛇统计分数的c语言代码,C/C++编程笔记:C语言贪吃蛇源代码控制台(二),分数和食物!...
接上文<C/C++编程笔记:C语言贪吃蛇源代码控制台(一),会动的那种哦!>如果你在学习C语言开发贪吃蛇的话,零基础建议从上一篇开始哦!接下来正式开始吧! 三.蛇的运动 上次我已经教大家画 ...
- C语言七彩贪吃蛇源代码---AI自动寻径,分数排行,数据保存,背景音乐难度设置等 控制台小游戏
------------------------------------------------------------------------------------------- 七彩贪吃蛇小游戏 ...
- x8086千行汇编项目——汇编贪吃蛇、画图、两个程序的调度
特别说明:本博客草稿创建于2018年12月5日(设为私密文章),这已经是作品提交截止日期以后,不过为了进一步避免不必要的麻烦将会在比赛彻底结束后发布为公开文章. 发布日期:2018/12/8 12:0 ...
- JAVA:贪吃蛇源代码
嘿嘿 新手来 表现了!!! 2019年结束 游戏截图: 文件布局: 代码分享 用到的一些全局变量 //全局变量 public class Global {public static final int ...
- 贪吃蛇c语言自动寻路,C/C++编程笔记:C语言贪吃蛇源代码控制台(一),会动的那种哦!...
前几天有个同学加我QQ私聊我说他们老师布置了一个贪吃蛇,他不知道怎么写所以来找我求解,我给他简单讲解了思路和一些难点之后他也能够自己独立将项目完成了!考虑到更多同学可能有贪吃蛇上的问题,今天有时间就来 ...
- c语言贪吃蛇源代码window32,Win32贪吃蛇源代码。背景非常简单
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 } VOID OnTimer(HWND hWnd){ GAME_RESULT res = snake.move(); if(res != GAME_CON ...
最新文章
- 吃货告诉你IaaS、PaaS、SaaS之间的区别
- html5 键盘触发事件
- 互联网天生本质与产业大局的开始
- java.lang.arr_jxl操作java.lang.ArrayIndexOutOfBoundsException: 441 错误的解决
- Linux环境下进入MySQL环境报权限问题:Access denied for user 'root@localhost' (using password:YSE)...
- php7.3 安装详解,php7.3.20以及常用拓展安装
- 乌当区利用大数据织密环境监测保护网
- 面向对象和面向过程连接数据库
- (一)Windows环境下汇编编程读书笔记
- uwp连接mysql数据库_在 UWP 应用中使用 SQLite 数据库
- Linux中Docker的yum源与镜像加速器
- 从入门到入土:在kali中安装Nessus详细操作
- matlab 可视化 —— 高级 api(montage)、insertObjectAnnotation、insertMaker
- java垃圾回收机制GC
- 【转载】MySQL5.6.27 Release Note解读(innodb及复制模块)
- Ueditor、FCKeditor、Kindeditor编辑器漏洞
- 批量处理文件内容数据
- 360提高计算机运行速度,360安全卫士如何提高开机和运行速度
- Visual Odometry
- 今天是元旦节,可是我失恋了
热门文章
- AtCoder Grand Contest 008: Contiguous Repainting(思维)
- 安装laravel5.1项目命令
- 11月25日struts培训日记
- Msfvenonm生成后门
- 【数据结构与算法】之深入解析“H指数”的求解思路与算法示例
- 百练 1363.Rails
- 二进制信号在信噪比为127:1的4kHz信道上传输,最大数据传输速率可以达到( )
- 2015年第六届蓝桥杯 - 省赛 - C/C++大学B组 - C. 三羊献端
- 141. Linked List Cycle 环形链表
- 【机器视觉】 exit算子