简单汇编程序范例

简单汇编程序范例

ID:19280995

大小:29.50 KB

页数:9页

时间:2018-09-30

简单汇编程序范例_第1页
简单汇编程序范例_第2页
简单汇编程序范例_第3页
简单汇编程序范例_第4页
简单汇编程序范例_第5页
资源描述:

《简单汇编程序范例》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、简单汇编程序范例简单汇编程序范例第一步:获取编译器编译器可以使用NESASM,不过这篇文章使用的是CA65,它是CC65开发套装中的汇编器,源代码可以从附件中获取,编译方法如下(不想编译也可以直接从附件中下载编译后的ca65.exe和ld65.exe)如果在windows下编译,先安装cygwin(相关教程请google),开一个cygwin控制台窗口,然后做以下2步1.编译common库进入src目录下的common目录,然后输入下面命令make-fmake/gcc.maklib完成后会在common目录下产生common.a库文件2.编译ca65进入src目录下

2、的ca65目录,然后输入下面命令make-fmake/gcc.makall完成后会在ca65目录下产生ca65.exe文件。3.编译ld65进入src目录下的ld65目录,然后输入下面命令make-fmake/gcc.makall完成后会在ld65目录下产生ld65.exe文件。ca65是汇编器,ld65是链接器,之后写好nes的6502汇编,要编译成rom就要靠这两个程序。第二步:编写一个简单的程序:有了汇编器,接下来就是试着编译一个小程序;Displaysamessageonthescreen.DemonstrateshowtosetupPPU;andnamet

3、able.segment"HEADER".byte"NES",26,2,1;CHRROMdata.segment"CHARS".segment"VECTORS".word0,0,0,nmi,reset,irq.segment"STARTUP".segment"CODE";===============================================;NESRegisters;===============================================PPUCTRL=$2000;这两个寄存器用来控制PPU的各种行为PPUMASK=$2

4、001PPUSTATUS=$2002;用来读取PPU当前状态PPUSCROLL=$2005;设置背景卷轴的X/Y坐标PPUADDR=$2006;设置PPU中的VRAM地址PPUDATA=$2007;往当前VRAM地址中写入数据;===============================================;程序入口-开机或Reset的时候会跳到这里;===============================================reset:;初始化NES硬件ldx#$FF;重置栈顶指针到$FF(255)txssei;禁用IRQ中断lda

5、#0staPPUCTRL;关闭NMI(将PPUCTRL置零)staPPUMASK;关闭PPU渲染(将PPUMASK置零);等待PPU预热(一共等待2次,第一次VBlank发生当作预热完成,第二次才正式当作VBlank)@wait1:bitPPUSTATUS;循环等待PPUSTATUS最高位置位(位的高低从右到左是从低到高,最高位即最左端D7,一旦置位,表示VBlank发生)bpl@wait1;读取PPUSTATUS也会清除最高位;所以到这里D7位已经清0了@wait2:bitPPUSTATUS;再次等待PPUSTATUS的D7置位bpl@wait2;设置头四个调色板

6、lda#$3F;设置PPU地址为调色板RAM($3F00)staPPUADDRlda#0staPPUADDRlda#$51;设置背景色为黑色staPPUDATAlda#$FF;设置3个前景色为白色staPPUDATAstaPPUDATAstaPPUDATA;显示前等待VBlankbitPPUSTATUS@wait3:bitPPUSTATUSbpl@wait3;启用背景显示lda#%00001000;启用背景staPPUMASKlda#0;滚动背景到最左上角(即$2000处的nametable)staPPUCTRLstaPPUSCROLLstaPPUSCROLL;不断

7、循环(什么都不做,保持当前PPU状态,不断显示蓝色背景)forever:jmpforever;===============================================;中断处理;===============================================irq:rtinmi:rti将这段代码另存为myprogram.asm,注意用ansi编码不要用unicode或utf-8然后在cygwin控制台输入以下命令(假设ca65.exe和ld65.exe在当前目录):./ca65.exemyprogram.asm执行完毕后生成m

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。