您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 3.5 cpu及cpu寄存器
2020/2/133.5CPU与CPU寄存器3.5.1本单元的目标1)明白CPU的工作原理2)知道CPU包含那些寄存器3)掌握每个寄存器的功能及访问方式4)了解与各个寄存器相关的一些指令3.5.2CPU组成部分CPUControl控制单元(调度中心)ALU运算单元(加工车间)CPURegisterCPU寄存器(仓库)3.5.3CPU的工作原理-炒饭一盘扬州炒饭是如何做出来的?3.5.3CPU的工作原理-炒饭主料:青豆、胡萝卜、火腿、鸡蛋、米饭(最好是隔夜饭)、蒜籽、葱;调料色拉油、盐、鸡精;3.5.3CPU的工作原理-炒饭制作:1、首先将胡萝卜、火腿洗净切成小丁块状,越小越好,当然了不能切成沫状。再将辅料洗净切成沫状,将鸡蛋搅碎放入少许葱沫在内。2、将锅内放上少许色拉油加至8成热,将切好的主料,同时也放入切好的蒜沫,放入锅里炒拌,炒到可以闻到香味时(此过程只需几秒钟)再将鸡蛋放入锅内炒拌,(这时需加大火候,这样鸡蛋会很松软,也不易炒糊),当鸡蛋炒至金黄色时,将其装盘。3、再放入少许色拉油加热至八成,将米饭放入锅内翻抄。此时,需将饭中加放少许食盐和鸡精,(鸡精不宜放太多,否则太鲜也不好吃)当米饭炒到在锅里可以蹦起饭粒时,再将刚才炒好的主料及辅料全部返锅炒拌,直到饭粒松软不粘为起锅最佳时间。3.5.3CPU的工作原理-炒饭做一盘扬州炒饭的大概过程:1)厨房中事先准备好了做各种菜式的各种配料;2)厨师从所有的配料中选择炒饭需要的配料;3)厨师把挑选的配料按照一定的时间顺序放到锅里,然后厨师利用他高超的厨艺炒出美味的炒饭;4)厨师把做好的炒饭装在盘中。3.5.3CPU的工作原理-工厂加工工厂的加工过程1)准备好加工产品的各种原材料;2)物资调配部分对各种原材料进行调度分配,把它们送到生产线;3)生产线对各种原材料进行加工,生产出成品;4)生产出来的成品被送到仓库中存储。3.5.3CPU的工作原理CPU的工作原理:1)单片机运行后,CPU控制单元从存储器中提取指令;2)控制单元把指令送到逻辑算术运算单元中;3)逻辑算术运算单元对这些指令进行处理,得到相应的数据;4)控制单元再把运算单元处理后的数据存储到存储器中。3.5.3CPU的工作原理:2×3CPU如何处理2×3?3.5.4.1CPU内部寄存器五个内部寄存器A、H:X、SP、PC、CCR3.5.4.1CPU内部寄存器:A累加器A(Accumulator):8位寄存器作用大,被访问的频率高主要作用:存放CPU的操作数保存运算的结果3.5.4.1A作用1:存放操作数有些直接操作累加器A的单目指令,或者一些不是直接操作累加器A的双目指令,需要把操作数先存放在A中。例1:单目指令LDA#%00000011;(A)=#%00000011LSLA;(A)=#%00000110例2:双目指令LDA#1T;(A)=#1TADD#2T;(A)=#3T实例程序:cpu_demo_累加器A3.5.4.1A作用2:保存结果累加器A还可以保存计算的结果例3:加法中保存结果LDA#1T;(A)=#1TADD#2T;(A)=#3T例4:乘法中保存乘积的低八位(高八位存在X中)LDX#2TLDA#3T;(A)=#3TMUL;(A)=#6T实例程序:cpu_demo_累加器A3.5.4.1与A有关的常用指令CLRALDASTAADDSUBMULINCADECACMP3.5.4.2CPU内部寄存器:变址寄存器变址寄存器(Indexregister):由H和X两个8位寄存器构成的16位寄存器,标志为H:X,H为高八位,X为低八位。主要作用:H:X用于64KB存储空间寻址暂存数据和计算结果3.5.4.2存储空间寻址例5:变址寻址CLR$8F;($8F)=0LDHX#$008F;(X)=#$8FLDA,X;(A)=(#$8F)实例程序:cpu_demo_变址寄存器3.5.4.2存放计算结果例6:8位乘法运算中存放结果的高8位已知:$31*$6=$126LDX#$31;(X)=#$31LDA#$06MUL;(X)=#$01实例程序:cpu_demo_变址寄存器3.5.4.2与H:X相关的常用指令CLRXCLRHLDXSTXLDHXSTHXTAXTXATXSINCXDECXAIXMULCPXCPHXTSTX3.5.4.3CPU内部寄存器:PC程序计数器(ProgramPointer):16位寄存器,指向存放下一个指令或预取操作数的地址指令码或操作数预取后,PC地址会自动增量指向下一个。“先取后增”。复位后,自动装入$FFFE(高位)和$FFFF(低位)中的值作为程序入口,即$FFFE和$FFFF存放的为地址,非操作码。运行实际的程序,看PC如何变化3.5.4.4CPU内部寄存器:CCR条件码寄存器(ConditionCodeRegister):8位寄存器:5个状态位、1个中断屏蔽位,两个未用置1bit标识名称107V溢出二进制补码有溢出无溢出6保留始终为15保留4H半进位累加器3向4位进位无进位3I中断屏蔽禁止CPU中断开放中断2N负运算结果为负非负1Z零运算结果为零非零0C进位运算结果进位或借位无进无借实例cpu_demo_条件码寄存器CCR,演示各个状态的变化3.5.4.4CCR中各位状态的改变1;在AC16中,复位时,禁止中断,I=1,CCR的初始状态为:V=0,H=0,I=1,N=0,Z=0,C=0LDA#$80;V=0,H=0,I=1,N=1,Z=0,C=0;装入一个负数,N=1NEGA;V=1,H=0,I=1,N=1,Z=0,C=1;0-(A)=0-(-128)=128,一个8位的有符号数所能表示的范围:-128~127,128超出能表示的范围,故溢出,V=1CLRA;V=0,H=0,I=1,N=0,Z=1,C=1;将累加器中的值清零,故Z=1条件码寄存器中各位的状态会受到多种指令操作的影响。3.5.4.4CCR中各位状态的改变2LDA#%00001000;V=0,H=0,I=1,N=0,Z=0,C=1ADD#%00001001;V=0,H=1,I=1,N=0,Z=0,C=0;#%00001000+#%00001001=#%00010001;3位向4位进位,故H=1CLI;V=0,H=1,I=0,N=0,Z=0,C=0;开中断,不再禁止中断,故I=0LDA#3TSUB#4T;V=0,H=1,I=0,N=1,Z=0,C=1;3-4=-1,结果为负数,且有借位,故N=1,C=13.5.4.4利用CCR中的标志进行跳转预备知识:逻辑左移指令LSLA×b7b6b5b4b3b2b1b00AC0b0b1b2b3b4b5b6b7CA01000010×CA001000010CA3.5.4.4利用CCR中的标志进行跳转程序中也往往会根据各个状态位的状态作出适当的跳转。例7:LDA#%01000010;(A)#%01000000LSLA;把A中的值左移1位,移出的值放在标;志C中.移位后(A)=#%10000100,C=0BCSC_High;如果C=1,则转到标志C_High;所在的位置C_Low:MOV#0T,VarLSLA;移位后(A)=#%000001000,C=1BCSC_HighBRAC_Low;转移到标志C_Low所在的位置C_High:MOV#1T,Var3.5.4.4利用CCR中的标志进行跳转程序中也往往会根据各个状态位的状态作出适当的跳转。例7:LDA#%01000010LSLABCSC_HighC_Low:MOV#0T,VarLSLABCSC_HighBRAC_LowC_High:MOV#1T,VarLDALSLAC_HighMOV#1T,VarC_LowMOV#0T,VarLSLAC=1?C=1?是否是否3.5.4.4直接操作CCR的指令TPATAPSEICLRI3.5.4.5CPU寄存器其他说明A,H,X,SP,PC,CCR不与其他存储器和FLASH统一编址。对它们的操作往往是隐含寻址。对A,H,X,SP,CCR寄存器,用户可用指令直接操作赋值,同时CPU也将运算结果存入其中。对PC(程序指针)16位寄存器,用户无直接操作赋值指令,其内容仅由CPU处理。
本文标题:3.5 cpu及cpu寄存器
链接地址:https://www.777doc.com/doc-3715980 .html