欢迎来到天天文库
浏览记录
ID:19280995
大小:29.50 KB
页数:9页
时间:2018-09-30
《简单汇编程序范例》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
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
此文档下载收益归作者所有