保持快乐,善于表达,敢于创新

HCS08 CPU 寄存器类型和作用

上一篇 / 下一篇  2010-10-18 16:15:17 / 个人分类:嵌入式开发

(1)累加器A(Accumulator)

累加器A8位通用寄存器,用来存放操作数和运算结果。数据读取时,累加器A用于存放从存储器读出的数据;数据写入时,累加器A用于存放准备写入存储器的数据。在执行算术、逻辑操作时,累加器首先存放一个操作数,执行完毕时累加器存放操作结果。累加器A是指令系统中最灵活的一个寄存器,各种寻址方式均可对之寻址。复位时,累加器A的内容不受影响。

(2)变址寄存器HX(IndexRegister)

HC08 CPU的变址寄存器HX16位寄存器,H是高8位,X是低8位,可单独使用。变址寄存器HX主要用于变址寻址方式中确定操作数的地址,也可以用来存放临时数据,作为一般寄存器使用。复位时,高8位被清零。

(3)堆栈指针SP(Stack Pointer)

SP是指向下一个栈地址的16位寄存器,堆栈指针SP采用递减的结构,即进栈时SP1,出栈时SP1复位时,SP的初值为$00FF(前置符号$表示十六进制数,下同)。栈指针复位指令(RSP)可将SP的低8位置为$FF,而不影响高8位。

在堆栈指针作为8位或16位的偏移量寻址方式中,SP充当变址寄存器功能,CPU利用SP的内容确定操作数的有效地址。

(4)程序计数器PC(Program Counter)

程序计数器PC也是16位的,可寻址范围达64KBPC存放下一条指令的地址,在执行转移指令时存放转移地址,在执行中断指令时存放中断子程序入口地址。复位时,程序计数器PC自动装入地址$FFFE$FFFF中的内容。一般地,地址$FFFE$FFFF中的内容是复位的入口地址,这样,复位后,程序能够从复位入口地址开始执行程序。复位入口地址也称复位向量地址或复位矢量地址(Reset vector address),意味着复位状态过后,PC指向该处,从这里执行程序。

(5)条件码寄存器CCR(Condition Code Register)

条件码寄存器CCR8位的寄存器(见图3-1),其中5(除了中断屏蔽位I)用于指示执行完指令的结果状态,这些位可由程序来测试。第6(D6)和第5(D5)永远为1,其余位有具体的含义,分别介绍如下:

V(D7)—溢出标志位(Overflow Flag)

当二进制补码溢出时置位。有符号跳转指令BGTBGEBLEBLT使用该标志。

H(D4)—半进位标志位(Half-Carry Flag)

执行加法指令(ADD)和带进位加法指令(ADC)时,如果相加的结果的低四位向上产生进位,即累加器D3D4有进位,则CPU将半进位标志H置“1”。该标志对于一般运算是没有用的,但在二进制编码的十进制(BCD)数据运算中则很有用,由于BCD码是以四位二进制数来表示一位十进制数,所以在BCD码算术运算中,半进位标志H记录的是一位十进制数的进位。做十进制调整(DAA)时,利用HC的状态来判断是否调整。

I(D3)—中断屏蔽标志位(Interrupt Mask Flag)

I=1表示屏蔽中断,即禁止中断;I=0表示允许中断,即开放中断。复位时,该位被置“1,可用CLI指令开中断。中断响应时,CPU将除H寄存器以外的寄存器推入堆栈,然后执行中断服务子程序,遇到RTI指令时,从栈中恢复包括CCR在内的各寄存器。当然也包括这一位的状态。为了保持与M68HC05系列兼容,变址寄存器高字节即H寄存器,在中断时未被自动保护(CPU内部自动保护了AXCCRPC),若在中断服务子程序中用到H寄存器的话,需要程序对H进行保护,可用PSHHPULH使其进栈、出栈。

N(D2)—负标志位(Negative Flag)

CPU进行运算过程中,如果产生负结果,则将负标志N置为“1。该情况用于有符号位的运算,数据位的最高位D7作为符号位,如果D7=1,说明数据为负,如果D7=0,说明数据为正。如果寄存器或存储单元的D71,那么把寄存器或存储单元的内容送入累加器A时,就会使N=1。如果寄存器或存储单元的D70,那么把寄存器或存储单元的内容送入累加器A时,就会使N=0。所以,负标志位N可用于检查有关寄存器或存储单元D7位的状态。

Z(D1)—零标志位(Zero Flag)

CPU进行运算过程中,如果数据或运算结果为0,零标志位Z被置“1”,否则被清“0”。

C(D0)—进位/借位标志(Carry/Borrow Flag)

当进行加法运算时,在最高位D7上有进位;或在进行减法运算时D7需要向更高位借位,则CPU将进位/借位标志C1,否则清0。一些指令如位测试、跳转、移位指令等也会影响该标志。

TAG:

 

评分:0

我来说两句

Open Toolbar