DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 198|回复: 0
打印 上一主题 下一主题

65816介绍

[复制链接]
跳转到指定楼层
楼主
发表于 2011-5-11 00:46:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
65816介绍

欢迎来到65816的编程世界。65816是经典的6502中央处理器的一种升级产品。  它主要的新特征包括可对高达16MB内存进行直接访问的完全24位寻址;提供了可完全模拟6502的模拟模式,新的寻址方式,完全的16位用户寄存器和几十个新的指令。

如果你是一个资深的6502程序员,你将会很快地了解65816的优点。无论处理器的操作速度如何,藉着16位用户寄存器的优势,65816总是操作得要快一些。  由于在操作(比如加、减)中使用了16位寄存器,65816为程序员提供了速度的实质性提高。

接下来的文档不打算写成一个65816的编程指南,但是可以作为那些熟悉6502并且希望找到新的65816资料的人的一本入门书。

65816提供两种主要的操作模式,原本的65816模式和6502模拟模式。处理器的通电后默认状态是在6502模拟模式。除了修正了6502中的一些BUG,模拟模式下的65816无论在哪方面看都像是一个6502。

在65816的模拟模式和最初的6502有一些值得注意的不同之处。一些6502没有使用的操作码,现在已经作为65816的附加操作而可以被使用了,如此它们将不会得到和在旧的6502处理器上获得的相同结果。无论是在模拟模式还是在原本模式下,65816都使用了所有可能采用的256个操作码。

6502和模拟模式之间还有一个差异就是那间接的跳转指令JMP($XXXX)的BUG,当低位$XX被固定的时候它会使处理器取回错误的数据。

在模拟模式下,65816的直接零页面寄存器设置为零。堆栈指针的高位设置为一(和6502一样)。程序和数据存储寄存器的初值设置为零。所有指令的占用时间是一样的。

在原本模式下,通过24位的寻址,处理器有完全访问16MB地址空间的能力。  原本模式也使得一些新的和扩展的寄存器变为可用。65816有能力将堆栈和零页面重新定位到开始的64K内存空间内的任何位置。对于Commodore  128的程序员,这听起来会让人怀疑它也像128的内存管理单元那样重新定位零页和堆栈--因此它从一开始就是落伍的。(说句题外话,在CMD的超级处理器128上编程是很有趣的--它会给你一个可重新定位的零页面和堆栈。呵呵;))

原本模式也打开了16位用户寄存器的世界。累加器可能是8位或16位的。XY变址寄存器也可能是8位或16位的。累加器也许可以看成两个8位的寄存器(一个可到达而另一个是隐藏的),或者看成一个完整的16位寄存器。当累加器被设置成16位,内存也被用16位(2字节)的方式处理。

另外两个新的寄存器是数据存储寄存器和程序存储寄存器。程序存储寄存器在功能上扩展了程序记数器,使它可以超过24位,而数据存储寄存器则允许代码流程的转移到或者跳转到6502的64K寻址空间之外的地址。

最后,在原本模式下,65816的状态寄存器包括了一些新的位。由于65816有BRK硬件向量,旧的BRK位已经不再需要。BRK位现在被用于选择8位或者16位变址寄存器的X位所取代,然而在模拟模式中,BRK位仍然存在。过去状态寄存器中保留的位5则被16/8位的累加器/内存选择位所取代。还有一个隐藏的模拟位,只有在将它和进位标志交换之后才可以被访问到。

下面是一些新的有趣的东西:  

XYA寄存器可能是16或8位的。  
哇,两个真正的内存区块移动指令。  
新的压栈/出栈指令phx,plx,phy,ply。  
新的xfer指令tyx,txy。  
不载入累加器而设置或者重置任何的内存位。  
INC(递增)和DEC(递减)累加器。  
间接的JSR,Branch  Always,或者Branch  Long到64K。  
零页面被重新命名为直接页面。像许多奇怪的事物一样,这将会开始引起真正的困惑。你能做的唯一事情是,"忘掉它然后继续用它"。  
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-7-20 05:32 , 耗时 0.079157 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表