汇编热门游戏网络游戏的历史及汇编在热门游戏网络游戏历史上的作用!

休闲娱乐生活服务其他类别扫扫有惊喜
汇编:国家科技重大专项(民口)项目(课题)财务验收办法国家科技重大专项项目(课题)自评价报告提纲一、项目(课题)概况说明项目(课题)目标、任务及考核指标和其他基本情况。二、项目(课题)实施情况1.项目(课题)目标、任务总体完成情况。采用列表对比的方式,详细阐述各项目标、考核指标的完成情况,包括知识产权任务和目标完成情况。未完成任务目标的,应当予以说明;2.项目(课题)对专项目标完成的作用情况。详细说明项目(课题)与专项总体目标的关系,项目(课题)实施突破的关键技术和取得的成果对重大专项目标实现的实质性贡献和发挥的作用;3.主要成果产出情况。对比国际同类技术或产品的技术、经济指标,说明项目(课题)突破的关键核心技术、形成自主知识产权的核心技术或产品;4.人才队伍和创新基地建设情况。说明创新人才凝聚、引进、培养和使用以及创新团队建设情况,科技创新平台、产业化基地建设等情况,以及取得效果。三、成果应用及其经济社会效益1.成果应用及其产业化情况。包括新产品的产业化应用情况,建成的试验基地、中试线、生产线等;2.在国家重大工程、重点项目中的应用情况;3.对提升单位技术创新能力(市场竞争力)的作用;4.成果应用所取得的直接经济效益和社会效益等。四、经费使用和管理情况1.财务管理制度执行情况;2.资金到位和落实情况;3.会计核算和财务信息情况;4.支出内容合规有效情况;5.预算执行情况;6.固定资产管理情况等。五、组织管理情况1.所采取的管理措施及其对项目(课题)实施的保障作用;2.产学研用相结合情况;3.相关项目(课题)之间的衔接集成情况等。六、后续计划安排1.项目(课题)后续研发和档案管理计划;2.后续创新平台基地建设、资产资源开发和技术服务计划;3.项目(课题)成果、知识产权后续产业开发和应用计划等。七、存在问题及建议
ooo5共8页热门新闻更多
实时热点榜单热门视频
阅读下一篇视频推荐网站已改版,请使用新地址访问:
game123 基于汇编语言的小游戏.. 从屏幕上自动生成小球并下落,挡板接 球则加分。 assembly language
238万源代码下载- www.pudn.com
&文件名称: game123
& & & & &&]
&&所属分类:
&&开发工具: Asm
&&文件大小: 3 KB
&&上传时间:
&&下载次数: 25
&&提 供 者:
&详细说明:基于汇编语言的小游戏.. 从屏幕上自动生成小球并下落,挡板接到小球则加分。 -game123
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&新建文件夹\game123.asm&&新建文件夹
&相关搜索:
&输入关键字,在本站238万海量源码库中尽情搜索:
&[] - 这是一个动态笑脸,可以先是很可爱的笑脸,在编程的时候可以将它放在任意时刻,会给用户惊喜。很好很有用
&[] - 打字游戏 用汇编语言来实现源代码
在dos界面上运行
&[] - 画一个小球,小球碰壁,碰四周后反弹,小球自行运动
&[] - masm汇编语言,实现读入学生姓名,成绩,学号。输出按成绩排序后的结果和平均分。精确到1位小数。(北京邮电大学计算机学院汇编语言作业)
&[] - avr汇编语言,集合了几乎全部汇编子程序,并且注释齐全,特别适合初学者,是我精心的收藏
&[] - 用汇编语言来模拟\实现钢琴的工作原理,具有良好的用户界面,使用户能够感受真正的钢琴
&[] - 用汇编做的简单的打砖块游戏,在13h号图形方式下运行,源码大小为10k
&[] - 用汇编语言实现画图功能,包括圆,方,三角形,直线。而且能着色,移动,用汇编语言实现画图功能,包括圆,方,三角形,直线。而且能着色,移动,用汇编语言实现画图功能,包括圆,方,三角形,直线。而且能着色,移动,
&[] - 小鸡接鸡蛋小游戏,6502汇编语言编写。用vc6.0打开dsw文件可看到源码,用模拟器装载工程文件夹下的rom.bin文件可看到游戏效果。
&[] - 罗云彬的汇编写的水波,3种效果,很不错了哈 有源代码和执行文件.&>&基于汇编语言的小游戏
基于汇编语言的小游戏
上传大小:10KB
基于汇编语言的小游戏..
从屏幕上自动生成小球并下落,挡板接到小球则加分。
综合评分:4
下载个数:
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var parentWrap = $(this).parents(".respond_box"),
q = parentWrap.find(".form1").serializeArray(),
resStr = $.trim(parentWrap.find(".res_area_r").val());
console.log(q);
//var res_area_r = $.trim($(".res_area_r").val());
if (resStr == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
//var mess = $(".res_area_r").val();
var mess = resS
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, data.com_username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click", '.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
var parentWrap = $(v).parents(".respond_box");
parentWrap.find(".res_area_r").val($.trim(parentWrap.find(".res_area").val()));
评论共有11条
Windows 7 64位,我运行不了,代码一直在跳
不太能玩啊
很好,值得下载
综合评分:
积分/C币:3
VIP会员动态
CSDN下载频道资源及相关规则调整公告V11.10
下载频道用户反馈专区
下载频道积分规则调整V1710.18
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
资源所需积分/C币
当前拥有积分
当前拥有C币
输入下载码
为了良好体验,不建议使用迅雷下载
基于汇编语言的小游戏
会员到期时间:
剩余下载个数:
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
无法举报自己的资源
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可返还被扣除的积分
被举报人:
举报的资源分:
请选择类型
资源无法下载 ( 404页面、下载失败、资源本身问题)
资源无法使用 (文件损坏、内容缺失、题文不符)
侵犯版权资源 (侵犯公司或个人版权)
虚假资源 (恶意欺诈、刷分资源)
含色情、危害国家安全内容
含广告、木马病毒资源
*详细原因:
基于汇编语言的小游戏当前位置: >>
X86汇编贪吃蛇游戏(nasm)
X86 汇编语言程序设计实验报告学 班 学 姓院: 信息科学与技术学院 级: 号: 名: 计科一班
廖远强 凌应标指导老师: 中山大学 操作系统实验报告 计科一班贪吃变色龙游戏设计 一、 实验目的用汇编语言编程。二、 实验内容完成一个汇编语言设计的互动单人游戏程序设计项目。三、 实验要求(1)文本方式的显示控制 (2)有 1 个以上的多个移动物体(字符),在屏幕区域内反复移动 (3)有数字显示游戏中的内部信息 (4)加分项:个性特征丰富,如移动、物体形态或数量变化的不规则性、多种性;键盘交 互与控制能力;布局外观吸引眼球能力;适合原型操作系统中运行;同等完成质量提交越早 越好。四、开发环境平台工具:dos box 、Notepad++、Nasm、winHex、vmware workstaction五、游戏设计步骤1. 2. 3. 4. 5. 6. 7. 8. 我在设计这个贪吃变色龙游戏时,有几个比较重要的步骤: 龙身的存储; 龙身的显示; 龙身的移动; 龙身移动方向的改变; 食物的产生和放置; 吃到食物并生长; 龙的死亡; 游戏改进,游戏界面的设计; 下面将进行这几个步骤的细致叙述:1 中山大学 操作系统实验报告 计科一班一、 龙身的存储一开始是想着,屏幕是二维屏幕,如果可以获得龙身的坐标的话,直接在当前坐标打印 蛇身就好了。 可是龙身不是只有一个点, 而是有许多点, 那么该如何存储龙身所有的坐标呢, 如果可以像高级语言那个使用数组来存储就好了。那怎么办呢,我想起了这个语句:times 510-($-$$) db 0,好吧,这个就是用来声明数组的,可以在前面加一个 label,这个 label 就是 这个数组的首地址,获得数组的首地址之后就可以访问整个数组了。 声明数组的时候要有两个,即龙身的横纵坐标,用这种方法来存储龙身,那么后面的程 序写起来就会顺利很多了。其中龙身的头尾坐标要另外存储,后面判断吃食物的,还有撞到自己的会用到。二、龙身的显示龙身用数组来存储之后,想要显示龙身就简单了,只要访问龙身,获得龙身的坐标,然 后调用 BIOS 中断,一个一个打印龙身就可以把我的龙显示出来了。我是调用了 10h 中断,09h 号功能打印‘*’,入口参数坐标 dh , dl。2 中山大学 操作系统实验报告 计科一班三、龙身的移动有的龙身的坐标,也可以在屏幕上显示龙身了,那么下一步就是龙身的移动了。因为即 使没有键盘输入龙身也应该按照它原来的方向前进的,所以得有一个不用 player 控制的是 龙身前进的步骤。一开始是想着可以调用 BIOS 中断 16h 号中断,01h 号功能的,即读取键 盘状态,可是遇到一个问题,太快了,游戏一开始,迅速撞墙挂掉^_^。想起来之前我们做 过的操作系统实验,曾经写过一个时钟中断,想到可以通过时钟中断来刷新龙身,而且这个 速度也可以控制。 于是很自然的把龙身的移动放到了时钟中断里面了。 因为龙身的存储使用数组, 打印是 获得坐标打印的,而龙身的前进对应的就是坐标的后移,根据前进的特点,就是头部更新, 然后尾巴去掉,尾巴的去掉直接打印字符就好了,然后用一个循环把龙身的坐标后移,头坐 标更新至新的头坐标就好了,接着就是调用自己写的打印龙身的函数 dspSnake 就可以了:3 中山大学 操作系统实验报告 计科一班四、龙身移动方向的改变方向可以自己声明一个变量 dir , 用来存储龙身前进的方向。 当没有键盘输入的时候, 就沿着这个方向前进。当有输入是,先判断输入是否是方向键 ( a = left w = up d = right s = down ) ,如果不是方向键可认为是没有输入,如果输入的方向与原来的方向相同或者相 反,也可以认为是没有输入,直接在调到 key_in 继续等待 player 输入。如果输入与原来龙 身的前进方向垂直,输入有效,改变方向。4 中山大学 操作系统实验报告 计科一班代码有注释,就不再详细说明了。此截图仅仅是输入为 left,且与原来的方向垂直,与 此类似的代码还有三个,不一一展示。这个在附件的源代码里面有详细的说明注释。五、食物的产生和放置食物的产生应当是随机的, 就是要有一个可以产生随机数的程序用来产生食物的横纵坐 标。 这个在高级语言里面直接用 rand 就好了, 在汇编里面有点麻烦, 我上网找了一些方法, 最后选择用 io 端口产生随机数。 因为我不确定产生的随机数是不是我想要的范围 (因为我在单独测试这个产生随机数程 序的时候,在我设置的范围内也会出现光标) ,所以我对程序做了几点特殊的处理,其中一 个就是产生随机数的时候通过用除法获得%的值, 用这个值再加或者减一个值以获得我想要 的随机数的范围:5 中山大学 操作系统实验报告 计科一班产生纵坐标也是类似的处理。 这里有个问题,食物产生之后,如果给龙吃掉了,那么当前位置就要用空白覆盖,或者 清屏,清掉原来的食物,然后下一次时钟到来时再产生新的食物,所以时钟进来的时候要有 一个判断,判断食物是否存在,类似于一个门栓:六、吃到食物龙吃到食物的定义就是头部坐标和食物的坐标相等,所以只需要做一个横纵坐标的判断即 可,不相等继续,如果相等,就是吃到食物,然后龙长大,更新龙身,长度要加一,尾坐标 依然要保留:6 中山大学 操作系统实验报告 计科一班七、龙的死亡龙的死亡的定义是撞到墙壁,或者撞到自己。撞到墙壁很好判断,当龙将要前进的时候 就判断龙的头部坐标是否有一个已经更墙壁坐标相等了, 如果相等, 再沿着这个方向前进就 会撞墙死掉:龙的第二种死法是撞到自己, 这个也不难, 只需要比较龙的头部坐标和身体的其它坐标 是否相等就可以了,用一个循环就可以实现: 首先要比较与原来的尾坐标是否相等:比较头部坐标和龙身的其它坐标是否相等:7 中山大学 操作系统实验报告 计科一班八、游戏改进,游戏界面的设计实现的前面七个功能其实就是可以设计出这个贪吃龙了, 游戏已经可以玩了, 作业也是 可以交了。但是因为是第一次自己写游戏,就想着做好一些,所以才有了这一部分。此部分 主要是要给出游戏的基本(指南,设计者等)和界面的个性化和美化: 1、Guidance 首先打开游戏的时候需要有一个 README,这里调用一个 BIOS 中断,显示字符串:2、右侧游戏信息 在游戏进行的时候,我还在屏幕的右侧 68-79 列位置显示了类似的信息和游戏指南,8 中山大学 操作系统实验报告 计科一班 player 获得的分数和 player 从键盘输入的字符: 调用了多次这个中断,每个只显示一行内容。因为如果加上 0dh,0ah,光标到了下一行 的开头,并不是我想要的位置。如果用空格填充又会占用龙身移动的位置。有一个想法是调 用 BIOS 中断设置光标,我自己也用这个中断写了一个函数 set_cursor,不过我这里并没有 这样做。我在屏幕的右下角位置显示了 player 从键盘输入的字符;下面截图的前面几行代码是必须的,原因注释已经说的很清楚了:3、右侧墙壁 因为上面的信息是在屏幕右侧显示,所以龙身不可以到这个位置,So,龙身移动的范围 就要重新设定了,把右边墙壁的纵坐标改为 67 即可,为了给 player 相应的信息就应该在 68 列打印出一堵墙壁:9 中山大学 操作系统实验报告 计科一班4、贪吃龙身变色升级成贪吃变色龙 自己定义一个变量,color,用来存储此时的颜色,在调用打印龙身函数的时候,打印字 符的中断字符属性改为 color,即可显示此时的颜色。定义这个变量是为了改变颜色,所以 color 不能一直不变,因此,我是每用一次这个值我就加一,当等于 15 的时候,强制置为 1 (没有 0,因为与背景色相同,会看不到) :5、吃到金子 类似于产生食物那样产生金子‘#’,如果吃到金子,则分数加 5 分;但是龙不长大。金子 的数量要比食物的数量少。金子会闪烁,而且数量比较少。 6、GAME OVER 游戏结束的时候告诉 player,游戏结束,就是调用一个字符串输出的函数,在屏幕的中 心显示 GAME OVER 就可以了。10 中山大学 操作系统实验报告 计科一班 7、待改进 没有背景音乐或者说是声音,这里其实可以用一个 io 端口实现,当龙吃到食物或者金 子的时候给出提示音,这个不难,还有不少要改进的地方(比如再次启动游戏) ,但是不想 再去实现了,毕竟真的很忙。 。 。 。六、实验结果实验结果就不废话了,直接看游戏界面截屏吧^_^ 游戏运行方式,用虚拟机打开 MySnake.img 软盘,或者将 MySnake.com 拖进 dosbox 运 行,我的机器直接打开 MySnake.com 也可以运行,不过视觉效果没有那么好。 游戏指南:游戏开始:11 中山大学 操作系统实验报告 计科一班游戏去吃食物龙撞到自己,死亡:12 中山大学 操作系统实验报告 计科一班龙撞到墙壁,死亡:13 中山大学 操作系统实验报告 计科一班七、实验心得实验心得,看着前面已经十多页了,实验心得就简单些吧,只挑关键的讲: 1、 一开始用引导扇区引导, 结果挂了好多次, 比如键盘不能输入, 时钟不能继续往下进行, 字符串也不可以显示;这个 bug 我调试了好久好久,找了班上的大神帮忙,结果花了一 整天依然没有找到什么原因。 当时砸电脑的心都有了^_^! ! ! ! ! 因为我们几个人都认为程 序逻辑上没有问题的,这样设计是正确,而且大神还说他的逻辑跟我的是一样的,然而 他的可以顺利的进行。他是用 dos_box 运行.com 程序的,我也尝试用这个方法来运行我 的程序,好吧,错误没有那么明显。于是乎很自然的想到了我在 VMware 上运行的时候 是要引导扇区的,而在 dos_box 下运行直接用.com 文件就可以了。于是乎也就很自然想 到了段寄存器的值的问题了, timer 的段地址和主程序的不一样, 所以需要在重新设置。 把这个 bug 找到之后,我再花了几个小时就把游戏主体部分写好了,就是已经可以运行 了,因为其它功能的实现不难。 2、 一开始做的时候跟同学讨论了一些,感觉这个游戏的设计很简单,逻辑上不难。只是因 为是用汇编,所以有些麻烦,中间出现问题的时候也不容易发现。这里可以总结一些这 个游戏的逻辑,其实就是上面的游戏设计步骤啦,不再赘述。 。 。 。 。 。 (看导航的小标题就 可以了)3、 游戏存在 bug: a) 当龙吃到食物的时候,尾坐标更新比较慢,应该是我程序逻辑上有点小小的 bug, 不过这个问题不大。 b) 另外一个 bug 是食物的产生有可能会不再屏幕上,这个应该跟 io 端口有关,因为 我是用 io 端口产生随机数的。 而且我还做了特殊的处理, 用 div 指令获得余数确保 产生的随机数在我的范围内。可是还是会有问题; c) 解决这个问题我采用了键盘输入计数, 当 player 从键盘输入多次之后, 屏幕就会刷 新,食物重置,以保证龙一定会有食物可以吃。 4、 实验的目的,内容,和要求没有细致些,因为作为理科生,应该注重本质的东西。 5、 因为代码比较长,所以我把它放在两个文件里面,其中一个文件类似于函数库,在用的14 中山大学 操作系统实验报告 计科一班 时候 include 进来就可以了。6、 其实我起这个名字只是为了好玩啦, 其实就是一个贪吃蛇游戏, 会变点色, 没有什么的。 一千多行代码,纯手打,也是不容易啊,累了就开下玩笑呗^_^^_^^_^^_^^_^^_^ 7、 在代码源文件里面,我添加了许多注释,方便老师查看。 8、 建议在 dos_box 下运行游戏。 9、 做这个游戏的时候问了几个同学问题, 咨询一下他们一些功能是怎么实现的, 当我 debug 不出的时候也找过他们帮我 debug。好耐心,好感动。 ( 他们 equ 陈榕涛,劳嘉辉,崔 家洛(网工) ) 附:代码清单(有详细注释,见附录) 计一 廖远强 附录 主程序;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ;mySname.asm 主程序 ;此程序所有权归廖远强 ;国立中山大学信息科学与技术学院 13 级计科一班 ;谢谢! ! ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ org 100 direction constants left equ 97 ;a up equ 119 right equ 100 down equ 115 Tdelay equ 2 key_number equ gold_number equ;s; 计时器延迟计数 12 ; 一个计数器,当长时间找不到食物时 ; (计数器为零,刷新界面, 重置食物 815 中山大学 操作系统实验报告 计科一班startGame: call cls call dspGameGuide call hide_cursor xor ax , ax mov ah , 0 int 16h;给出游戏指南 ;隐藏光标;输入任意键开始游戏;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ; 设置计数器 call SetT 调用设置计数器函数 ;设置时钟中断,蛇身的刷新就靠时钟中断************** xor ax,ax mov es,ax mov word [es:20h],Timer mov ax,cs mov word [es:22h],%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% mov ax , cs mov ds , ax mov es , ax mov ss , ax mov sp , 0100 ES = DS = CS ; ES = CSinitial: call cls call dspS打印蛇身,此处用以初始蛇身位置 ;********************************************************* ;等待键盘输入,输入方向键的时候,控制蛇前进的方向,否则重新输入 key_in: dec byte [gold_count] cmp byte [gold_count] , 0 jg goldGoOn mov dh , byte [goldRow] mov dl , byte [goldCol] call set_cursor call hide_cursor call printSpace mov byte [gold_count] , gold_number16 中山大学 操作系统实验报告 计科一班 goldGoOn: dec byte [key_count] jnz keyInGoOn;键盘输入次数递减 ;&0,跳转=0,刷新界面,重置食物和键盘输入计数器 mov byte [ifFoodExit] , 0 mov byte [key_count] , key_number keyInGoOn: xor ax , ax mov ah , 0 int 16h call showChar cmp al , 1bh je gameEnd0 cmp al , 97 je key_left cmp al , 119 je key_up cmp al , 100 je key_right cmp al , 115 je key_down;键盘输入;在屏幕右下角打印输入的字符 ;对于 esc 键,退出游戏 ;go downjmp key_other char , keep key_******************************************************** ;======================================================== key_left: ;call dspGameGuide mov al , byte [dir] cmp al , 97 ;原本就是向左 je key_in cmp al , 100 ;原本向右,不能改变方向 je key_方向与原来方向垂直,允许改变方向 cmp al , 119 je UpDownToLeft cmp al , 115 je UpDownToLeft jmp key_in UpDownToLeft:17 中山大学 操作系统实验报告 计科一班 mov al , byte [headCol] cmp al , 0 je gameEnd1 dec byte [headCol] ;向左,纵坐标应当减一 ;纵坐标已经等于 0,不能再向左, ;挂了call moveOneS否则,蛇身前进一步 mov dh , byte [headRow] mov dl , byte [headCol] call ifHitI判断蛇是否已经撞到自己,如果是结束 mov si , snakeRow mov di , snakeCol mov byte [si] ,否则,更新头坐标 mov byte [di] , dl call dspSnake mov byte [dir] , 97 jmp key_方向改为向左 ;继续输入;一下一部分代码与上部分类似,不一一注释 key_up: mov al , byte [dir] cmp al , 119 ;原本就是向上 je key_in cmp al , 115 ;原本向下,不能改变方向 je key_方向与原来方向垂直 cmp al , 97 je LeftRightToUp cmp al , 100 je LeftRightToUp jmp key_in LeftRightToUp: mov al , byte [headRow] cmp al , 0 je gameEnd1 dec byte [headRow] call moveOneStep mov dh , byte [headRow] mov dl , byte [headCol] call ifHitItself mov si , snakeRow18 中山大学 操作系统实验报告 计科一班 mov di , snakeCol mov byte [si] , dh mov byte [di] , dl call dspSnake mov byte [dir] , 119 jmp key_in key_right: mov al , byte [dir] cmp al , 100 ;原本就是向右 je key_in cmp al , 97 ;原本向左,不能改变方向 je key_方向与原来方向垂直 cmp al , 119 je UpDownToRight cmp al , 115 je UpDownToRight jmp key_in UpDownToRight: mov al , byte [headCol] cmp al , 67 je gameEnd inc byte [headCol] call moveOneStep mov dh , byte [headRow] mov dl , byte [headCol] call ifHitItself mov si , snakeRow mov di , snakeCol mov byte [si] , dh mov byte [di] , dl call dspSnake mov byte [dir] , 100 jmp key_in key_down: mov al , byte [dir] cmp al , 115;原本就是向下19 中山大学 操作系统实验报告 计科一班 je key_in cmp al , 119 je key_in;原本向上,不能改变方向;方向与原来方向垂直 cmp al , 97 je LeftRightToDown cmp al , 100 je LeftRightToDown jmp key_in LeftRightToDown: mov al , byte [headRow] cmp al , 24 je gameEnd1 inc byte [headRow] call moveOneStep mov dh , byte [headRow] mov dl , byte [headCol] call ifHitItself mov si , snakeRow mov di , snakeCol mov byte [si] , dh mov byte [di] , dl call dspSnake mov byte [dir] , 115 jmp key_==之间的为从键盘输入数据后的操作 ;========================================================= ;********************************************************* ;######################################################### ;一下为时钟中断 Timer:push ax 很重要,没有的话程序绝对出错 ;因为从键盘输入的值放在 al 里面, ;而时钟中断用到的寄存器 ax,会把 al 的值覆盖如果使用引导扇区引导的话,段地址需要注意 ;两个段地址不一样 mov ax ,此段代码注释掉,直接死掉 mov ds ,段地址不一样,需改变 dec byte [ds:Tcount] ; 递减计数变量,控制时钟中断频率20 中山大学 操作系统实验报告 计科一班 &0:跳转;判断游戏是否已经结束 cmp byte [gameOver] , 0 je notOver gameEnd1: call gameEnd notOver: ;打印右侧边界 call dspB*************************************************** ;没有食物时,随机产生食物,并打印出来 ;这个随机数的产生有点问题,获得的随机数不是特别随机 ;随机数的范围也有问题,所以做了特殊处理 cmp byte [ifFoodExit] , 1 je foodE如果已经有食物了 ;则不用在产生新的食物 xor ax , ax xor dx , dx mov ax, 50 ;产生从 1 到 AX 之间的随机数 mov dx, 41H ;用端口 41H out dx,产生从 1 到 AX 之间的随机数 in al,产生的随机数放在 AL做一个除以 25 运算,以获得 0-24 (即余数) mov ah , 0 mov bl , 25 div bl cmp ah , 25 jge resetAH ;超过 24 或者小于 0,手工设置 cmp ah , 0 jl resetAH jmp setAH resetAH: mov ah , byte [color] setAH: mov byte [foodRow] , ah xor ax , ax xor dx , dx mov ax, 136;产生从 1 到 AX 之间的随机数21 中山大学 操作系统实验报告 计科一班 mov dx, 41H ;用端口 41H out dx,产生从 1 到 AX 之间的随机数 in al,产生的随机数放在 AL dec al mov ah , 0 mov bl , 68 div bl cmp ah , 68 jge resetAH1 cmp ah , 0 jl resetAH1 jmp setAH1 resetAH1: mov ah , byte [color] add ah , 20 setAH1: mov byte [foodCol] , ah xor dx , dx mov dh , byte [foodRow] mov dl , byte [foodCol] call set_cursor call hide_打印食物,money xor bx , bx mov al,'$' mov ah,09h mov bh,0 mov bl,0eh mov cx,01h int 10h mov byte [ifFoodExit] , 1 ;食物已经存在,下一次时钟中断不用再产生食物 ;************************************************** foodExit: ;没有 gold 时,随机产生 gold,并打印出来 ;这个随机数的产生有点问题,获得的随机数不是特别随机 ;随机数的范围也有问题,所以做了特殊处理 cmp byte [ifGoldExit] , 1 je goldE如果已经有 gold 了 ;则不用在产生新的 gold22 中山大学 操作系统实验报告 计科一班xor ax , ax xor dx , dx mov ax, 50 ;产生从 1 到 AX 之间的随机数 mov dx, 41H ;用端口 41H out dx,产生从 1 到 AX 之间的随机数 in al,产生的随机数放在 AL做一个除以 25 运算,以获得 0-24 (即余数) mov ah , 0 mov bl , 25 div bl cmp ah , 25 jge resetAH20 ;超过 24 或者小于 0,手工设置 cmp ah , 0 jl resetAH20 jmp setAH30 resetAH20: mov ah , byte [color] setAH30: mov byte [goldRow] , ah xor ax , ax xor dx , dx mov ax, 136 ;产生从 1 到 AX 之间的随机数 mov dx, 41H ;用端口 41H out dx,产生从 1 到 AX 之间的随机数 in al,产生的随机数放在 AL dec al mov ah , 0 mov bl , 68 div bl cmp ah , 68 jge resetAH1110 cmp ah , 0 jl resetAH1110 jmp setAH110 resetAH1110: mov ah , byte [color] add ah , 20 setAH110: mov byte [goldCol] , ah23 中山大学 操作系统实验报告 计科一班xor dx , dx mov dh , byte [goldRow] mov dl , byte [goldCol] call set_cursor call hide_打印 gold,gold xor bx , bx mov al,'#' mov ah,09h mov bh,0 mov bl,8eh mov cx,01h int 10h mov byte [ifGoldExit] , 1 ;gold 已经存在,下一次时钟中断不用再产生 gold goldExit: ;如果食物已经存在,跳过食物的产生,直接进入下一步 ;********************************************************** no_key: call ifGetF判断贪吃蛇是否吃到食物 call ifGetG判断贪吃蛇是否吃到 gold mov al , byte [dir] ;判断蛇前进的方向 cmp al , 97 ;用 byte [left] 不可以, je no_key_left cmp al , 119 je no_key_up cmp al , 100 je no_key_right cmp al , 115 je no_key_down jmp no_可注释no_key_left: ;没有输入,方向向左 mov al , byte [headCol] ;向左,纵坐标应当减一 cmp al , 0 ;撞到墙壁 je gameEnd1 ;龙死了, call moveOneS前进一步,逻辑上有错误 已改正24 中山大学 操作系统实验报告 计科一班 dec byte [headCol] mov dh , byte [headRow] mov dl , byte [headCol] call ifHitI是否撞到自己 mov si , snakeRow mov di , snakeCol mov byte [si] , dh mov byte [di] , dl call dspSnake jmp endi no_key_up: mov al , byte [headRow] cmp al , 0 je gameEnd1 call moveOneStep dec byte [headRow] mov dh , byte [headRow] mov dl , byte [headCol] call ifHitItself mov si , snakeRow mov di , snakeCol mov byte [si] , dh mov byte [di] , dl call dspSnake jmp endi no_key_right: mov al , byte [headCol] cmp al , 67 je gameEnd1 call moveOneStep inc byte [headCol] mov dh , byte [headRow] mov dl , byte [headCol] call ifHitItself mov si , snakeRow mov di , snakeCol mov byte [si] , dh mov byte [di] , dl call dspSnake jmp endi25 中山大学 操作系统实验报告 计科一班 no_key_down: mov al , byte [headRow] cmp al , 24 je gameEnd1 call moveOneStep inc byte [headRow] mov dh , byte [headRow] mov dl , byte [headCol] call ifHitItself mov si , snakeRow mov di , snakeCol mov byte [si] , dh mov byte [di] , dl call dspS以上代码实现的是同一个功能 ;没有键盘输入时,蛇继续前进,不一一注释 ;*********************************************************** mov byte [Tcount],T重置计数变量=初值*********************************************************** endi: call dspGuideMoney call dspScore mov al,20 AL = EOI out 20h, 发送 EOI 到主 8529A out 0A0h, 发送 EOI 到从 8529A pop ax mov ds ,************************************************************* ;############################################################# gameEnd0: mov byte [gameOver] , 1 jmp $ %include &snakeF.asm& ;自己写的一个汇编函数库(包含进来) snakeLen dw 5 ;蛇身长度 snakeRow db 10,10,10,10,10, times 100 db 0 snakeCol db 63,64,65,66,67, times 100 db 0;初始化横纵坐标26 中山大学 操作系统实验报告 计科一班 headRow db 10 ;初始化头尾的坐标 headCol db 63 tailRow db 10 tailCol db 67 dir db 97 ;蛇前进方向,初始化为向左 a color db 1 ; 字符颜色 foodRow db 0 ;食物的横纵坐标 foodCol db 0 goldRow db 0 ;黄金所在 goldCol db 0 ifFoodExit db 0 ;bool 值,1=食物存在,0=食物不存在 ifGoldExit db 0 gameOver db 0 ;bool 值,1=游戏结束,0=游戏继续 score dw 0 ;获得分数,吃一个$则加一 Tcount db T 计时器计数变量,初值=delay key_count db key_ 键盘计数变量,初值=key_number gold_count db gold_ 用 0 填充引导扇区剩下的空间,一共五个个扇区 times -($-$$) db 0函数库;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ;snakeF.asm 函数库 ;此程序所有权归廖远强 ;国立中山大学信息科学与技术学院 13 级计科一班 ;毕竟一千多行代码,纯手打,不容易啊! ;谢谢! ! ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ;此文件几乎包含左右 MySnake.asm 中的所有函数 ;因为把函数也放在 MySnake.asm 中的话不太方便查看 ;***************************************************** ;右侧以列数最大为 67,68-79 用来显示分数,指南以及 player 的输入 dspBoard: push ax push bx push cx push dx push bp push es27 中山大学 操作系统实验报告 计科一班 push ds mov dl , 68 mov dh , 0 showBoard: cmp dh , 25 jge boardRet call set_cursor call hide_cursor xor bx , bx mov al,'#' mov ah,09h mov bh,0 mov bl,0eh mov cx,01h int 10h inc dh jmp showB打印右侧墙壁 ;字符的位置 68 列,0-24 行;设置光标 ;隐藏光标 ;墙壁标志;循环打印‘#’ 0-24 行boardRet: pop ax mov ds,ax pop ax mov es,ax pop bp pop dx pop c**************************************************** ;If geedy snake gets its food? ifGetFood: mov ah , byte [headRow] cmp ah , byte [foodRow] jnz foodNotE如果横坐标不相等,没有吃到食物 ifFoodColEqual: mov al , byte [headCol] cmp al , byte [foodCol] jnz foodNotE横坐标相等,纵坐标不等,未吃到食物 ;蛇身头部与食物相同(横纵左边均相等) ,则吃到食物, mov si , snakeR蛇身坐标起始位置 mov di , snakeC原本写错:snakeRow28 中山大学 操作系统实验报告 计科一班 mov cx , word [snakeLen] add si , cx add di ,吃到食物,蛇身加一 ;加上长度,指向新的尾坐标;吃到食物;更新身体坐标,长大 growUp: ;call moveOneS原本放在这里,逻辑上有错误 mov dh , byte [tailRow] mov dl , byte [tailCol] call moveOneStep mov byte [si] ,写入尾坐标,不变 mov byte [di] , dl mov byte [tailRow] ,尾坐标不变 mov byte [tailCol] , dl inc byte [snakeLen] ;长大,蛇身加一 inc word [score] ;分数加一 mov byte [ifFoodExit] , 0 ;没有食物 foodNotEqual:*************************************************** ;If geedy snake gets its gold? ifGetGold: push ax push bx push cx push dx push bp push es push ds mov ah , byte [headRow] cmp ah , byte [goldRow] jnz goldNotE如果横坐标不相等,没有吃到食物 ifGoldColEqual: mov al , byte [headCol] cmp al , byte [goldCol] jnz goldNotE横坐标相等,纵坐标不等,未吃到食物 ;蛇身头部与食物相同(横纵左边均相等) ,则吃到 gold add word [score] , 5 mov byte [ifGoldExit] , 0 goldNotEqual:分数加五 ;没有 gold29 中山大学 操作系统实验报告 计科一班 mov ds,ax pop ax mov es,ax pop bp pop dx pop c**************************************************** ;打印 player 获得的分数, ;一般为两位数,所以 div 10,获得十位和个位(即商和余数) dspScore: push ax push bx push cx push dx push bp push es push ds xor bx , bx xor ax , ax mov ax , word [score] mov bl , 10 div bl add al , 48 mov dh , 14 mov dl , 73 call set_cursor call hide_cursor call printScore mov al , ah add al , 48 mov dh , 14 mov dl , 74 call set_cursor call hide_cursor call printScore pop ax;商在 al,余数在加上 48,获得对应的 ascii 码 ;显示十位数;打印 ;显示个位数 ;右侧位置打印分数30 中山大学 操作系统实验报告 计科一班 mov ds,ax pop ax mov es,ax pop bp pop dx pop c=============================================== printScore: push ax push bx push cx push dx push bp push es push ds xor bx ,mov al,'a' mov ah,09h mov bh,0 mov bl,0eh mov cx,01h int 10h pop ax mov ds,ax pop ax mov es,ax pop bp pop dx pop c****************************************************** ;****************************************************** ;将蛇身数组 snakeRow,snakeCol 往后推, ;eg:1,2,3,4,5 ---- 1,1,2,3,4 ;蛇身前进的时候,最后一位打印‘ ’ moveOneStep: push ax31 中山大学 操作系统实验报告 计科一班 push bx push cx push dx push bp push es push ds mov cx , word [snakeLen]循环的次数,须是蛇长度减一 mov si , snakeRow mov di , snakeCol add si , cx add di , cx mov dh , byte [si] mov dl , byte [di] mov byte [tailRow] ,保存原先的尾巴坐标 mov byte [tailCol] ,后面与头坐标比较 call set_cursor call hide_cursor call printSpace loopS0: ;蛇身坐标后移 mov dh , byte [si-1] mov byte [si] , dh mov dl , byte [di-1] mov byte [di] , dl dec si dec di loop loopS0 pop ax mov ds,ax pop ax mov es,ax pop bp pop dx pop c************************************************* ;************************************************* ifHitItself: ;判断是否撞到自己 push ax32 中山大学 操作系统实验报告 计科一班 push bx push cx push dx push si push di push比较新的头坐标与原来的尾坐标是否相等,这个是要有的 cmp dh , byte [tailRow] je cmpTailCol jmp cmpOtherBody cmpTailCol: cmp dl , byte [tailCol] je gameOver3 ;相等,结束 jmp RCnotEqual gameOver3: pop ax mov ds,ax pop ax mov es,ax pop bp pop di pop si pop dx pop cx pop bx pop ax call gameEnd RCnotEqual: ;不相等,比价蛇身的其它部位: cmpOtherBody: mov si , snakeRow mov di , snakeCol mov cx , word [snakeLen] ifEqual: mov ah , [si] ;如果横坐标都不相等,纵坐标就不用比较了 cmp ah , dh je ifColEqual incSiDi: inc si inc di33 中山大学 操作系统实验报告 计科一班 loop ifE循环比较头坐标与蛇身其它坐标是否相等 ifColEqual: mov al , [di] cmp al , dl je gameOver4 ;存在坐标相等,即头撞到自己,结束 jmp incSiDi gameOver4: call gameEnd endloop: pop ax mov ds,ax pop ax mov es,ax pop bp pop di pop si pop dx pop c************************************************ ;************************************************ printStar: ;print '*' at the location push ax push bx push cx push dx push bp push es push ds xor bx , bx showColor: mov al,byte[color] cmp al,15 ;颜色从 1-15 循环变换,0 黑的黑子,不要 jz returnTOone inc byte[color] ;改变颜色,纯属为了好玩,或者好看吧 jmp showStar returnTOone: ;color & 15 , 重置 mov byte[color],1 jmp showStar34 中山大学 操作系统实验报告 计科一班 showStar: xor ax , ax xor bx , bx mov al,'*' mov ah,09h mov bh , 0 ;mov bl,0eh mov bl,byte[color] mov cx,01h int 10h;字符属性pop ax mov ds,ax pop ax mov es,ax pop bp pop dx pop c***************************************************** printSpace: ;print '' at t跟 print '*'差不多,没什么好说的 push bx push cx push dx push bp push es push ds xor bx , bx mov al,' ' mov ah,09h mov bh,0 mov bl,0eh mov cx,01h int 10h pop ax mov ds,ax pop ax mov es,ax pop bp35 中山大学 操作系统实验报告 计科一班 pop dx pop c************************************************** ; set cursor at dh(row),dl(col) set_cursor: push ax push bx push cx push dx push bp push es push ds xor bx , bx mov ah,02h int 10h pop ax mov ds,ax pop ax mov es,ax pop bp pop dx pop c***************************************************** hide_cursor: ;隐藏光标 push ax push bx push cx push dx push bp push es push ds mov mov mov int ah, 1 ch, 2bh cl, 0bh 10h36 中山大学 操作系统实验报告 计科一班pop ax mov ds,ax pop ax mov es,ax pop bp pop dx pop c****************************************************** ;****************************************************** ;打印出蛇的位置,状态 dspSnake: push ax push bx push cx push dx push bp push es push ds mov si , snakeR获得坐标的起始位置 mov di , snakeC头部坐标已更新 mov cx , word [snakeLen]须减一 starLoop: ;循环打印’*‘ (蛇身) ,结束有蛇身长度控制 xor dx , dx mov dh,byte [si] mov dl,byte [di] call set_设置光标 call hide_隐藏光标 call printS打印’*‘ inc si inc di loop starLoop pop ax mov ds,ax pop ax mov es,ax pop bp pop dx37 中山大学 操作系统实验报告 计科一班 pop c***************************************************** ;*************************************************** SetTimer: push ax mov al,34 设控制字值 out 43h, 写控制字到控制字寄存器 mov ax,0 ; 每秒 100 次中断(10ms 一次) out 40h, 写计数器 0 的低字节 mov al, AL=AH out 40h, 写计数器 0 的高字节**************************************************** cls: ; 清屏 mov ax,0003h int 10*************************************************** showChar: ;在右下角显示 player 的输入 push ax push bx push cx push dx mov dh , 24 mov dl , 79 call set_cursor mov ah , 09h mov bh , 0 mov bl , 0eh mov cx , 1 int 10h pop dx pop c*********************************************** dspGuideMoney: ;屏幕右侧打印游戏指南和分数38 中山大学 操作系统实验报告 计科一班 push ax push bx push cx push dx push bp push es push ds mov ax , cs mov ds , ax mov ss , ax mov es ,重新设置段地址 ;因为 timer 的段地址不一样 ;不重新设置,程序出错 ;如果是在 dos_box 下运行,是可以的 ;因为段地址一样;因为位置不好控制,所以调用了多次中断 mov ax,scoreSdirection mov bp,bp 指向字符串地址 mov cx,9 ;串长 cx=IDLen1 mov ax,1301调用 BIOS 功能 ah=13,al=01 光标放到串位 mov bx,00显示字符串背景 mov dx,0246串显示的起始位置 dh=行号,;dl=列号 int 10调用 BIOS 功能显示字符串 mov ax,scoreSleft add ax , 9 mov bp,bp 指向字符串地址 mov cx,8 ;串长 cx=IDLen1 mov ax,1301调用 BIOS 功能 ah=13,al=01 光标放到串位 mov bx,00显示字符串背景 mov dx,0446串显示的起始位置 dh=行号,;dl=列号 int 10调用 BIOS 功能显示字符串 mov ax,scoreSup add ax , 17 mov bp,bp 指向字符串地址 mov cx,6 ;串长 cx=IDLen1 mov ax,1301调用 BIOS 功能 ah=13,al=01 光标放到串位 mov bx,00显示字符串背景 mov dx,0546串显示的起始位置 dh=行号,;dl=列号 int 10调用 BIOS 功能显示字符串 mov ax,scoreStr add ax , 23 mov bp,bp 指向字符串地址39 中山大学 操作系统实验报告 计科一班 mov cx,9 ;串长 cx=IDLen1 mov ax,1301调用 BIOS 功能 ah=13,al=01 光标放到串位 mov bx,00显示字符串背景 mov dx,0646串显示的起始位置 dh=行号,;dl=列号 int 10调用 BIOS 功能显示字符串 mov ax,scoreSdown add ax , 32 mov bp,bp 指向字符串地址 mov cx,8 ;串长 cx=IDLen1 mov ax,1301调用 BIOS 功能 ah=13,al=01 光标放到串位 mov bx,00显示字符串背景 mov dx,0746串显示的起始位置 dh=行号,;dl=列号 int 10调用 BIOS 功能显示字符串 mov ax,scoreStotal add ax , 40 mov bp,bp 指向字符串地址 mov cx,scoreStrL串长 cx=IDLen1 mov ax,1301调用 BIOS 功能 ah=13,al=01 光标放到串位 mov bx,00显示字符串背景 mov dx,0a48串显示的起始位置 dh=行号,;dl=列号 int 10调用 BIOS 功能显示字符串 mov ax,scoreS add ax , 45 mov bp,bp 指向字符串地址 mov cx,scoreStrL串长 cx=IDLen1 mov ax,1301调用 BIOS 功能 ah=13,al=01 光标放到串位 mov bx,00显示字符串背景 mov dx,0c48串显示的起始位置 dh=行号,;dl=列号 int 10调用 BIOS 功能显示字符串 mov ax,scoreSinput add ax , 50 mov bp,bp 指向字符串地址 mov cx,scoreStrL串长 cx=IDLen1 mov ax,1301调用 BIOS 功能 ah=13,al=01 光标放到串位 mov bx,00显示字符串背景 mov dx,1848串显示的起始位置 dh=行号,;dl=列号 int 10调用 BIOS 功能显示字符串 pop ax mov ds,ax40 中山大学 操作系统实验报告 计科一班 pop ax mov es,ax pop bp pop dx pop cx pop bx pop ax ret scoreStr: db 'DIRECTION' ;9 db 'a = left' ;8 db 'w = up' ;6 db 'd = right' ;9 db 's = down' ;8 db 'TOTAL' ;5 db 'MONEY' ;5 db 'INPUT' ;5 scoreStrLen equ 5 ;************************************************ ;************************************************ gameEnd: ;打印 GAME OVER push ax push bx push cx push dx push bp push es push ds mov ax,endS mov bp,bp 指向字符串地址 mov cx,endStrL串长 cx=IDLen1 mov ax,1301调用 BIOS 功能 ah=13,al=01 光标放到串位 mov bx,008显示字符串背景 mov dx,0b19串显示的起始位置 dh=行号,;dl=列号 int 10调用 BIOS 功能显示字符串 pop ax mov ds,ax pop ax mov es,ax pop bp pop dx41 中山大学 操作系统实验报告 计科一班 pop cx pop bx pop ax jmp $ ret endStr: db 'GAME OVER' endStrLen equ ($-endStr) ;********************************************************* ;********************************************************* dspGameGuide: ;打印初始化界面,游戏概况,和指南 pushpush dx push bp push es push ds mov ax,GuideS mov bp,bp 指向字符串地址 mov cx,GuideStrL串长 cx=IDLen1 mov ax,1301调用 BIOS 功能 ah=13,al=01 光标放到串位 mov bx,00显示字符串背景 mov dx,0500串显示的起始位置 dh=行号,dl=列号 int 10调用 BIOS 功能显示字符串 pop ax mov ds,ax pop ax mov es,pop dx pop cx pop bx pop ax ret GuideStr: db ' ' db ' Welcome to greedy snake game made by LiaoYQ' ,0dh,0ah,0ah db ' ' db ' Here is the illustration of the game' ,0dh, 0ah,0ah db ' '42 中山大学 操作系统实验报告 计科一班 db ' a = left d = right' ,0dh,0ah,0ah db ' ' db ' w = up s = down' ,0dh,0ah,0ah db ' ' db 'If you are ready, press any key to start the game' GuideStrLen equ ($-GuideStr)43
2.2 使用寄存器在前一节中的 x86 基本寄存器的介绍, 对于一个汇编语言编程...需要说明的是,这些方法是针对宏汇编器(例如,MASM、TASM、NASM)说的,调试器默认...2 汇编 1)要求了解汇编程序概念和功能。了解 MASM 和 NASM 的概念、特点和...IVT:x86 计算机在启动时会自动进入实模式状态,并由主板上的系统 BIOS 初始化 ...NASM 网际编译器手册 第 1 章 简介 1.1 什么是 NASM? 网际汇编器,NASM 是一个模块化和便携性的 80x86 汇编编译器。它支持多种目标格式 包含 Linux 的 a....更多&&什么是NASM NASM是一个为可移植性与模块化而设计的一个80x86的汇编器...这能很方便地在一 个游戏可执行文件中包含中图像或声音数 据。它可以以下三种...汇编程序与代码块装载为了使用汇编语言,必须熟悉 CPU 和寄存器,还需要掌握 CPU 的寻址方式。 为了利用 NASM 进行 PC 机的汇编语言编程,需要熟悉 x86 的指令集和 ...什么是 NASM NASM 是一个为可移植性与模块化而设计的一个 80x86 的汇编器。...这能很方便地在一个游戏可执行文件中包含中图像或声音数 据。它可以以下三种...实验一 汇编语言的使用( 2 学时) 实验名称:汇编语言的使用 实验类别:基本性实验 目的与要求: 练习 DOSBox 和 NASM 的使用 实验内容要点: 1、熟悉 DOSBox 的...内容:Intel x86 处理器的 16 位实模式、32 位保护模式。 Intel 8086 处理器...标号:在 NASM 汇编语言里,每条指令的前面都可以拥有一个标号,以代表和指示该...nasm dd 可选: hexdump objdump bochs 汇编编译器,完成汇编代码编译 镜像生成...【参考文献】 《INTEL 汇编语言程序设计》 《x86 汇编语言-从实模式到保护模式...Linux 汇编器:对比 GAS 和 NASM 对比 GNU Assembler(GAS)和 Netwide Assembler...Slackware)和 基本的 GNU 工具,比如 gcc 和 ld,还应该在 x86 机器上进行编程...
All rights reserved Powered by
www.tceic.com
copyright &copyright 。文档资料库内容来自网络,如有侵犯请联系客服。

我要回帖

更多关于 热门游戏网络游戏 的文章

 

随机推荐