新闻  |   论坛  |   博客  |   在线研讨会
模拟模式寄存器
zhchxgh | 2009-07-10 16:49:13    阅读:1392   发布文章

模拟模式寄存器
上面的6502模拟模式设计模型显示了65816一些有趣的特征。即使在不能使用16位变址寄存器的模拟模式下,你仍然能做下面的事情: 重新定位直接页面。 使用堆栈寻址方式。 交换A累加器和隐藏的B累加器。 程序和数据存储寄存器可以被改变。 使用新增的指令。 

从原本模式向模拟模式转变时会损失或者改变的东西有:

使用16位用户寄存器的能力。状态寄存器的M位和X位都回到它们在6502中的形式。 
区块移动指令的效用。区块移动指令使用变址寄存器来指定源区块和目的区块,在模拟模式中只有8位地址可用,你只能在零页面内移动数据,因为高端字节总是零。 
零页面在模拟模式下寻址越界会折回,而在原本模式下就会进入下个页面。 
堆栈指针总是在页面1上。 
从模拟模式切换到原本模式时,处理器用65816的M和X标志代替B位(Break标志)和位5,并且将它们设为1。这样变址寄存器和累加器/内存仍然是8位模式(和在模拟模式下相同)。其余的状态寄存器位没有变化。堆栈指针仍然在页面1。 

从原本模式切换到模拟模式时,M和X状态寄存器位消失,将累加器和变址寄存器设置为8位。X和Y的低端字节被保留,但是高端字节就失去了。累加器的低端和高端字节都被保留(当然高端字节是隐藏的但可通过XBA指令访问)。堆栈指针则变回八位,高端字节被强行置1,高端字节也失去了。 

我想,当你用过65816的模拟模式后,你会认识到模拟模式并没有使你在原本模式上失去什么,而是让你在6502上可以获得很多。事实上,所有新增加的操作码以及指令在模拟模式中仍然可以使用,它们是为甚至没有16位寄存器的强大处理器而设计的。

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客