- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
天津大学微机原理第3.1节CPU寄存器
Freescale 8位单片机CPU寄存器 HCS08 CPU 简介 HCS08 CPU与M68HC08 CPU的指令系统完全相同,且目标代码与M68HC08完全兼容。同时增加了一些指令和增强了寻址模式以增加C编译器效率,且支持一个新的背景调试系统,能够代替早期M68HC08微处理器的监测模式。 HCS08 CPU的特点包括: ?目标代码完全向上兼容M68HC05和M68HC08家族 ?所有寄存器和存储器映射在单块64 Kbyte地址空间 ?16位堆栈指针SP(64 Kbyte地址空间中的任意大小堆栈) ?16位索引寄存器(H:X)的强大的寻址索引模式 ?多种寻址模式 ?8位累加器(A) ?支持存储器到存储器的数据传送 ?高效的位操作指令 ?快速的8位乘8位和16位除以 8位指令 ?STOP和WAIT指令唤醒低功耗运行状态 CPU寄存器 CPU寄存器 累加器 (A) 累加器A是一个通用8位寄存器。经常用于暂存一个输入到算术逻辑单元(ALU)的操作数,并且用于存放(ALU)的计算结果。 复位对累加器A的内容没有影响。 索引寄存器(H:X) 这个16位寄存器实际上分为两个8位寄存器(H和X),它们作为一个16位的地址指针一起工作,H存放一个地址的高位字节和X存放地址的低位字节。所有索引寻址模式指令利用H:X中全部16位值作为一个索引参考指针;然后,为了与早先 M68HC05家族兼容,一些指令只在低8位(X)中运行,并且H在复位过程中强制为0x00。复位对X的内容没有影响。 堆栈指针(SP) 16位地址指针寄存器指向下一个有效的堆栈位置。堆栈可以放置在包含RAM的 64 Kbyte地址空间的任意位置,其大小可以为任何RAM中的有效值。堆栈用来自动保存子程序调用的返回地址、中断中CPU寄存器和局部变量的返回地址。AIS(立即加堆栈指针,堆栈处理指令)指令对SP加上一个8位有符号立即数。这经常用于对堆栈中的局部变量分配和取消分配空间。 向上生长型(如51单片机) 特性:先加后压,先弹后减 向下生长型(飞思卡尔单片机) 25F 特性:先压后减,先加后弹 程序计数器(PC) 程序计数器是个16位的寄存器,存放取出的下一个指令或操作数的地址。 正常的程序执行期间,每一次取出指令或者操作数时,程序计数器自动加一指向后续的存储器位置。跳转、分支、中断和返回操作程序计数器加载地址不是下一个后续位置。 复位期间,程序计数器加载位于$FFFE和$FFFF的复位矢量(这点与51的差别很大,PC不是装载$FFFE,而是装载$FFFE和$FFFF 中存放的内容)。该处的矢量地址是退出复位状态后被执行的第一条指令的地址。 条件代码寄存器(CCR) 8位条件代码寄存器存放中断屏蔽位(I)和5个指出刚执行指令结果的标志。第5和第6位永远设置为1。如图: 0 C 进/借标志—当一个加法操作产生一个对第7位累加需要进位或者一个减法操作要求一个借位,则置本位为1。一些指令,如位测试和分支,移位和旋转也会影响进/借标志。 0 第7位没有产生进/位 1 第7位产生进/位 1 Z 置零标志—当一个算术操作,逻辑操作或数据处理产生一个0x00或0x0000的结果,则将该位置1。如果加载或存储的值为0,简单的加载或存储一个引起Z置1。 0 NUMn-zero result 1 Zero result 2 N 负数标志—当一个算术操作,逻辑操作或者数据处理产生一个负数结果,则会设置结果的第7位,并且CPU将负数标志位置1。如果加载或存储的最高位为1,同样会将N置1。 0 非负数结果 1 负数结果 3 I 中断屏蔽位—当设置中断屏蔽,所有可屏蔽的 CPU中断将被屏蔽.当中断屏蔽被清除时使能。当产生一个CPU中断,中断屏蔽被保存到堆栈,但是在中断服务子程序第一条指令执行前自动置1。这确保了CLI或TAP之后的下一条指令总会被执行,而不会出现如果I置1而发生插入中断的可能性。 0 中断使能 1 中断屏蔽 4 H 半进位标志—当在累加器第3位和第4位之间在不带进位加法(ADD)或者带进位加(ADC)操作时发生半进位,则CPU置该标志为1。二进制编码的十进制(BCD)运算将用到半进位标志。另外DAA指令也会根据条件代码位H和C的状态,自动加一个修正值到先前的ADD或ADC的BCD运算,以修正结果为一个正确的BCD值。 0 第3位和第4位之间没有进位 1 第3位和第4位之间有进位 7 V 二进制补码溢出标志—当发生一个二进制补码溢出,CPU置这位为1。符号分支指令BGT,BGE, BLE和BLT将会用到溢出标志位。 0 没有溢出 有溢出 V=6C⊕7C * 注意:飞思卡尔单片机与其他单片机(如51系列)的堆栈有所不同。其他单片机的堆
文档评论(0)