一起来开发NES游戏!(6502CPU相关的汇编语言知识)

来源:互联网 发布:淘宝详情页制作教程 编辑:程序博客网 时间:2024/06/05 09:39
关于八位CPU 6502相关的汇编语言知识

/*
译者注:这些内容是关于开发NES(FC)游戏的,有兴趣的可以一起来学一学,尽量每天都能更新一点。因为自己最近也在学这些内容,所以把自己翻译的拿出来与大家分享。 若是感兴趣,也可以上网搜“维京猎人”,他一直致力于开发FC游戏,写了很多关于这方面的东西。
要是什么地方写的有错误,或者有疑问的话,希望大家能指出来。

为了使本文在描述上简单易懂,译者同时参考了一些相关的资料


结合分享,如《6502大奥秘》。


原文来自Bob Rost的网站:http://bobrost.com/nes/

http://nesdev.com/6502guid.txt

*/

本文内容概括:


本文是关于用汇编语言在6502上编程的一篇简短的向导。这里将介绍6502的架构

址模式、以及相关的指令。在此之前你可能没有接触过汇编语言,但是无论如何你要

会一点十六进制。程序的范例将会在本文的最后给出。



Ⅰ.6502架构:

6502是一种8位的微处理器,它遵循着摩托罗拉6800面向内存的设计理念。一些工程师离开了摩托罗拉公司后研制出了MOS技术并在1975年生产出了6502。由于6502的价格很低以及它在当时是一些早期的个人电脑的核心(包括APPLE Ⅱ、Commodore 64、Atari 400和800)导致6502在当时非常流行。

一、简易是关键:


6502在它的寄存器中操作数据,每个寄存器种可容纳一个字节(八个二进制位)数据。接下来就介绍一下它所有的寄存器。包括三个一般用途的寄存器(A、X、Y)和两个特殊用途的寄存器(S、P)。


1. A(累加寄存器)

   操作所有的算术与逻辑运算,是6502汇编中使用最多的一个寄存器。


2. X、Y(变址寄存器)
   具有一般功能的8位的寄存器


3. S(①堆栈指针)

   

①堆栈指针:当6502微处理器执行JSR指令(Jump To Subroutine 跳向子程序)时,CPU(也就是微处理器)需要知道子程序执行完后要从哪里返回。6502保存了这个信息在$(这个符号表示后面的数字是地址)0100-$01FF(这个地址对应的256个字节内存也叫做‘第一页’),并且用堆栈指针S作为偏移地址(一个地址是由段地址和偏移地址共同组成的,详细的请自行查阅书籍)。每次要有数据进入栈区时,栈段就会从$01FF开始从下往上增长。



4. P(②标志寄存器)






0 0
原创粉丝点击