
W742E/C816
5.2堆栈寄存器(栈)
堆栈寄存器被组织成53位× 16个级别(先入后出) 。当任一个子程序调用或
一个中断被执行时,程序计数器(PC) , TAB 0 , TAB1 , TAB2 , TAB3 , DBKRL , DBKRH ,
WRP , ROMPR , PAGE , ACC和CF将被自动压入堆栈寄存器。在结束时
呼叫子程序或中断服务子程序中,
RTN
(仅恢复程序计数器)和
RTN #I
指令可以弹出堆栈寄存器的内容到相应的寄存器中。它可以
恢复的栈缓冲区内容的一部分。当在堆栈寄存器被推到第16级,在
所述第一级的内容将被改写。在换句话说,堆栈寄存器总是16个级别
深。 #I的比特定义如下所示。
I = 0000 0000
位0 = 1
位1 = 1
位2 = 1
位3 = 1
位4 = 1
位5 = 1
位6 = 1
从栈中弹出PC只
流行TAB0 , TAB1 , TAB2 ,从堆栈TAB3
从栈中弹出DBKRL , DBKRH
从栈中弹出WRP
从栈中弹出ROMPR
从栈中弹出页
从栈中弹出ACC
从栈中弹出CF
5.3程序存储器( ROM )
只读存储器(ROM) ,用于存储程序代码或查找表,可以是
安排多达65536 ( 64K )
×
4比特。程序ROM被分成16页;每个的大小
页面是2048 (2K)
×
16位。所以总的ROM大小为32768 ( 32K )
×
16位。前跳或
子程序调用指令被执行,目的ROM页寄存器( ROMPR )必须
首先确定的。 ROM的页面都可以通过执行来选择
MOV ROMPR , #I
or
MOV
ROMPR , RAM
指令。但分支决策指令(如JB0 , SKB0 , JZ , JC等)必须
跳转到相同的ROM页面。
所述查找表区分配在ROM (PC的下半部分:
4000H到7FFFH ) 。
每个查找表的元素组成的4位,所以查找表可以是
针对高达65536 ( 64K )的元素。它使用说明书
MOV TAB0 ,R MOV TAB1 ,R MOV TAB2 ,
MOV TAB3 ,R
来确定查找表元素的地址。所述查找表的地址是4倍
电脑计数器,和偏移值是4000H 。指令
MOVC
用于读出的查找表
内容和保存数据到RAM 。程序存储器的组织如图5-1所示。
-8-