本人是06后的6502汇编萌新,只在Apple II平台写过几个简单的游戏,目前在用NESASM和ASM6学习NES游戏编写。由于对新手来说我觉得这些技巧挺有用,就发出来了,如有错误请留言评论。
第一:常用变量与指针尽量放在零页中
我们都知道零页寻址的访存指令相对于绝对(直接)寻址节省了一个字节大小,这样一来如果我们使用频率较高的数据时可以直接用零页的地址即可。其中零页寻址中指令引用的是地址低八位,高八位永远为00(这个应该学过的都知道)并且访存指令的间接索引寻址只能访问零页。这只是对FC等另一空区大的机器有用途,如Apple II之类的计算机零页一般都被系统占了,只留下了几个给用户,可见零页的意义有多大。第二:巧用分支指令
有时候会用JMP来循环执行,而JMP的操作数是两字节的地址。分支指令则是一个,作偏移量。所以有时候可以用分支指令来代替JMP,比如用与第一个分支相反条件的分支来代替跳转指令(前提是偏移量不大于255)第三:终止符
在利用间接寻址循环遍历读取数据输出屏幕的时候,有些情况下不必用计数器,而是在后面写上一个特定的数值,作为本次循环的终止符。例如,在一群数据块的后面加上一个$00,当运行循环遍历的过程中读取到了$00,执行BNE,不符合条件,跳出循环。
第一:常用变量与指针尽量放在零页中
我们都知道零页寻址的访存指令相对于绝对(直接)寻址节省了一个字节大小,这样一来如果我们使用频率较高的数据时可以直接用零页的地址即可。其中零页寻址中指令引用的是地址低八位,高八位永远为00(这个应该学过的都知道)并且访存指令的间接索引寻址只能访问零页。这只是对FC等另一空区大的机器有用途,如Apple II之类的计算机零页一般都被系统占了,只留下了几个给用户,可见零页的意义有多大。第二:巧用分支指令
有时候会用JMP来循环执行,而JMP的操作数是两字节的地址。分支指令则是一个,作偏移量。所以有时候可以用分支指令来代替JMP,比如用与第一个分支相反条件的分支来代替跳转指令(前提是偏移量不大于255)第三:终止符
在利用间接寻址循环遍历读取数据输出屏幕的时候,有些情况下不必用计数器,而是在后面写上一个特定的数值,作为本次循环的终止符。例如,在一群数据块的后面加上一个$00,当运行循环遍历的过程中读取到了$00,执行BNE,不符合条件,跳出循环。