17/86
ST62T53c/t60c/t63c ST62E60C
CPU 寄存器
(内容’d)
不管怎样, 如果 这 程序 空间 包含 更多 比
4096 字节, 这 额外的 记忆 在 程序
空间 能 是 addressed 用 使用 这 程序
Bank 转变 寄存器.
这 PC 值 是 incremented 之后 读 这 ad-
dress 的 这 电流 操作指南. 至 execute 相关的
jumps, 这 PC 和 这 补偿 是 shifted 通过
这 alu, 在哪里 它们 是 增加; 这 结果 是 然后
shifted 后面的 在 这 pc. 这 程序 计数器 能
是 changed 在 这 下列的 方法:
- JP (jump) instructionPC=Jump 地址
- CALL instructionPC= Call 地址
- 相关的 Branch 操作指南.pc= PC +/- 补偿
- 中断 PC=Interrupt vector
- 重置 PC= 重置 vector
- RET &放大; RETI instructionsPC= 流行音乐 (堆栈)
- 正常的 instructionPC= PC + 1
Flags (c, z)
. 这 ST6 CPU 包含 三 pairs 的
flags (carry 和 零), 各自 一双 正在 有关联的
和 一个 的 这 三 正常的 模式 的 运作:
正常的 模式, 中断 模式 和 非 Maskable
中断 模式. 各自 一双 组成 的 一个 CARRY
标记 和 一个 零 标记. 一个 一双 (cn, zn) 是 使用
在 正常的 运作, 另一 一双 是 使用 dur-
ing 中断 模式 (ci, zi), 和 一个 第三 一双 是 使用
在 这 非 Maskable 中断 模式 (cnmi, zn-
mi).
这 ST6 CPU 使用 这 一双 的 flags 有关联的
和 the 电流 模式: 作 soon 作 一个 中断 (或者
一个 非 Maskable 中断) 是 发生, 这 ST6
CPU 使用 这 中断 flags (resp. 这 NMI flags)
instead 的 这 正常的 flags. 当 这 RETI 在-
构造 是 executed, 这 先前 使用 设置 的
flags 是 restored. 它 应当 是 指出 那 各自 标记
设置 能 仅有的 是 addressed 在 它的 自己的 context (非
Maskable 中断, 正常的 中断 或者 主要的 rou-
tine). 这 flags 是 不 cleared 在 context
切换 和 因此 retain 它们的 status.
这 Carry 标记 是 设置 当 一个 carry 或者 一个 borrow oc-
curs 在 arithmetic 行动; 否则 它 是
cleared. 这 Carry 标记 是 也 设置 至 这 值 的
这 位 测试 在 一个 位 测试 操作指南; 它 也 partici-
pates 在 这 rotate left 操作指南.
这 零 标记 是 设置 如果 这 结果 的 这 last arithme-
tic 或者 logical 运作 是 equal 至 零; 其它-
wise 它 是 cleared.
切换 在 这 three sets 的 flags 是 每-
formed automatically 当 一个 nmi, 一个 中断 或者
一个 RETI 说明 occurs. 作 这 NMI 模式 是
automatically 选择 之后 这 重置 的 这 mcu,
这 ST6 核心 使用 在 第一 这 NMI flags.
堆栈.
这 ST6 CPU 包含 一个 真实 LIFO hard-
ware 堆栈 这个 排除 这 需要 为 一个 堆栈
pointer. 这 堆栈 组成 的 六 独立的 12-位
内存 locations 那 做 不 belong 至 这 数据
空间 内存 范围. 当 一个 子例程 call (或者 inter-
rupt 要求) occurs, 这 内容 的 各自 水平的 是
shifted 在 这 next 高等级的 水平的, 当 这 内容
的 这 PC 是 shifted 在 这 第一 水平的 (这 原来的
内容 的 the sixth stack 水平的 是 lost). 当 一个
子例程 或者 中断 返回 occurs (ret 或者 RETI
说明), 这 第一 水平的 寄存器 是 shifted 后面的
在 这 PC 和 这 值 的 各自 水平的 是 popped
后面的 在 这 previous 水平的. 自从 这 accumula-
tor, 在 一般 和 所有 其它 数据 空间 寄存器,
是 不 贮存 在 这个 堆栈, 管理 的 这些
寄存器 应当 是 执行 在里面 这 subrou-
tine. 这 堆栈 将 仍然是 在 它的 “deepest” 位置
如果 更多 比 6 nested calls 或者 中断 是 execut-
ed, 和 consequently 这 last 返回 地址 将
是 lost. 它 将 也 仍然是 在 它的 最高的 位置 如果
这 堆栈 是 empty 和 一个 RET 或者 RETI 是 executed.
在 这个 情况 这 next 操作指南 将 是 executed.
图示 8. ST6 CPU 程序编制 模式
l
短的
直接
寻址
模式
V 寄存器
W 寄存器
程序 计数器
六 水平
堆栈 寄存器
CZ正常的 FLAGS
中断 FLAGS
NMI FLAGS
INDEX
寄存器
VA000423
b7
b7
b7
b7
b7
b0
b0
b0
b0
b0
b0b11
ACCUMULATOR
Y reg. POINTER
X reg. POINTER
CZ
CZ
17