
ST6208C/ST6209C/ST6210C/ST6220C
CPU寄存器
(续)
12位长度允许直接寻址的
在程序空间为4096字节。
然而,如果程序空间中包含多个
4096字节,在程序中的附加内存
空间可以通过使用程序来解决
ROM页寄存器。
读取AD-后PC值递增
着装当前指令的。要执行相对
跳跃, PC和偏移通过错开
ALU的,在那里它们被加入;其结果是再
移回PC 。程序计数器可以
通过以下方式来改变:
- JP(跳转)指令
PC =跳转地址
- CALL指令
PC =地址电话
- 相对分行InstructionPC = PC +/-偏移
中断
PC =中断向量
复位
PC =复位向量
- RET & RETI指令PC = POP(堆栈)
- 正常教学
PC = PC + 1
标志( C, Z) 。
该ST6 CPU包括3对
标志(进位和零) ,每对关联
与操作的三个正常模式中的一种:
普通模式,中断模式和非屏蔽
中断模式。每对包括一个携带
标志和零标志。一对( CN, ZN )被用于
正常操作过程中,另一对用于很好地协同
的中断模式(CI, ZI) ,以及第三对用于
在非屏蔽中断模式( CNMI , ZN-
MI ) 。
在ST6 CPU采用双旗相关
与当前的模式:一旦中断(或
一个不可屏蔽中断)产生时, ST6
CPU采用中断标志位(或NMI标志) IN-
取而代之的正常标志。当RETI指令
灰被执行时,先前使用的标记集是
恢复。但是应当注意的是,每个标记设置可以
只有在自己的范围内加以解决(非Maska-
BLE中断,一般中断或主程序) 。
标志中的上下文切换不会被清除
从而保持自己的状态。
C
:进位标志。
当一个进位或借位期间发生此位被置位
荷兰国际集团的算术运算;否则,它被清零。
进位标志也被设置成该位的值
在一个位测试指令测试;它也参与
向左旋转指令。
0 :无进已发生
1 :进位已发生
Z
:零标志
设置此标志,如果最后一次算术的结果或
逻辑操作是等于零;否则它是
清除。
0:上次运算的结果是,从不同的
零
1:上次运算的结果是零
三组标志之间的切换是per-
自动形成时的NMI ,中断或
RETI指令发生。由于NMI模式为自动
MCU的复位后matically选择,则
ST6核心采用了NMI标志第一。
堆栈。
该ST6 CPU包括一个真正的LIFO (后进
先出)的硬件堆栈,它消除了
需要对一个堆栈指针。该协议栈由六个
不属于单独的12位RAM地址
到数据空间的RAM区域。当一个子程序
致电(或中断请求)时,内容
每个级别都转移到一个新的水平下降,
而PC的内容被转移到第一
第六堆栈级别的水平(原来的内容
丢失) 。当子程序或中断返回OC-
小人( RET或RETI指令) ,第一级稳压
存器被移动回PC和的值
每个级别弹出回到以前的水平。
图8.堆栈操作
节目
计数器
ON RETURN
从
中断,
OR
子程序
LEVEL 1
LEVEL 2
LEVEL 3
4级
LEVEL 5
LEVEL 6
ON
中断,
OR
子程序
通话
由于蓄能器,在与其他所有
数据空间的寄存器,没有被存储在栈中,
这些寄存器管理工作必须
子程序内形成。
注意事项:
该协议栈将保持在其“最深切的”宝
习得如果超过6嵌套调用或中断
执行的,因此,最后返回地址
礼服都将丢失。
它也将保持在如果堆栈其最高位置
是空的,一个RET或RETI被执行。在这
情况下,下一个指令将被执行。
18/104
1