-
寄存器 编辑
寄存器的功能是存储二进制代码,它是由具有存储功能的触发器组合起来构成的。一个触发器可以存储1位二进制代码,故存放n位二进制代码的寄存器,需用n个触发器来构成。按照功能的不同,可将寄存器分为基本寄存器和移位寄存器两大类。基本寄存器只能并行送入数据,也只能并行输出。移位寄存器中的数据可以在移位脉冲作用下依次逐位右移或左移,数据既可以并行输入、并行输出,也可以串行输入、串行输出,还可以并行输入、串行输出,或串行输入、并行输出,十分灵活,用途也很广。
在计算机领域,寄存器是CPU内部的元件,包括通用寄存器、专用寄存器和控制寄存器。寄存器拥有非常高的读写速度,所以在寄存器之间的数据传送非常快。
Cortex-M4总共有18个寄存器,相比传统ARM(如ARM7/ARM9/Cortex-A系列)的38个寄存器已减少很多,减少了内核核心面积
寄存器有串行和并行两种数码存取方式。将n位二进制数一次存入寄存器或从寄存器中读出的方式称为并行方式。将n位二进制数以每次1位,分成n次存入寄存器并从寄存器读出,这种方式称为串行方式。并行方式只需一个时钟脉冲就可以完成数据操作,工作速度快,但需要n根输入和输出数据线。串行方式要使用几个时钟脉冲完成输入或输出操作,工作速度慢,但只需要一根输入或输出数据线,传输线少,适用于远距离传输。对寄存器中的触发器只要求它们具有置1,置0的功能即可,因而无论是用电平触发的锁存器(latch-up),还是用脉冲触发或边沿触发的触发器(flip-flop),都可以组成寄存器。
由电平触发的动作特点可知,在CLK高电平期间,Q端的状态跟随D端状态的改变而改变;CLK变成低电平以后,Q端将保持CLK变为低电平时刻D端的状态。
74HC175则是用CMOS边沿触发器组成的4位寄存器,根据边沿触发的动作特点可知,触发器输出端的状态仅仅取决于CLK上升沿到达时刻D端的状态。可见,虽然74LS75和74HC175都是4位寄存器,但由于采用了不同结构类型的触发器,所以动作特点是不同的。
为了增加使用的灵活性,在有些寄存器电路中还附加了一些控制电路,使寄存器又增添了异步置零、输出三态控制和保持等功能。这里所说的保持,是指CLK信号到达时触发器不随D端的输入信号而改变状态,保持原来的状态不变。
上面介绍的两个寄存器电路中,接收数据时所有各位代码都是同时输入的,而且触发器中的数据是并行地出现在输出端的,因此将这种输入、输出方式称为并行输入、并行输出方式。
基本寄存器逻辑图
寄存器应具有接收数据、存放数据和输出数据的功能,它由触发器和门电路组成。只有得到“存入脉冲”(又称“存入指令”、“写入指令”)时,寄存器才能接收数据;在得到“读出”指令时,寄存器才将数据输出。
寄存器存放数码的方式有并行和串行两种。并行方式是数码从各对应位输入端同时输入到寄存器中;串行方式是数码从一个输入端逐位输入到寄存器中。
寄存器读出数码的方式也有并行和串行两种。在并行方式中,被读出的数码同时出现在各位的输出端上;在串行方式中,被读出的数码在一个输出端逐位出现。
寄存器
通用寄存器组包括AX、BX、CX、DX4个16位寄存器,用以存放16位数据或地址。也可用作8位寄存器。用作8位寄存器时分别记为AH、AL、BH、BL、CH、CL、DH、DL。只能存放8位数据,不能存放地址。它们分别是AX、BX、CX、DX的高八位和低八位。若AX=1234H,则AH=12H,AL=34H。通用寄存器通用性强,对任何指令,它们具有相同的功能。为了缩短指令代码的长度,在8086中,某些通用寄存器用作专门用途。例如,串指令中必须用CX寄存器作为计数寄存器,存放串的长度,这样在串操作指令中不必给定CX的寄存器号,缩短了串操作指令代码的长度。下面一一介绍:
AX
FR是16位寄存器,其中有9位有效位用来存放状态标志和控制标志。状态标志共6位,CF、PF、AF、ZF、SF和OF,用于寄存程序运行的状态信息,这些标志往往用作后续指令判断的依据。控制标志有3位,IF、DF和TF,用于控制CPU的操作,是人为设置的。(2)代码要记得住;
(3)代码要取得出。
寄存器是由具有存储功能的触发器组合起来构成的。一个触发器可以存储1位2进制代码,存放n位2进制代码的寄存器,需用n个触发器来构成。对寄存器中的触发器只要求它具有置1、置0的功能即可,因而无论用何种类型的触发器都可组成寄存器。
按照功能的不同,寄存器可分为基本寄存器和移位寄存器两大类。基本寄存器只能并行送入数据,需要时也只能并行输出。移位寄存器中的数据可以在移位脉冲作用下依次逐位右移或左移,数据既可以并行输入、并行输出,也可以串行输入、串行输出,还可以并行输入、串行输出或串行输入、并行输出,十分灵活,用途也很广。
ARM9处理器共有37个32位长的寄存器,这些寄存器包括:
(1) RO~R12:均为32位通用寄存器,用于数据操作。但是注意:绝大多数16位Thumb指令只能访问R0~R7,而32位Thumb -2指令可以访问所有寄存器。
(2)堆栈指针:堆栈指针的最低两位永远是O,这意味着堆栈总是4字节对齐的。
(3)链接寄存器:当呼叫一个子程序时,由R14存储返回地址。
(4)程序计数器:指向当前的程序地址,如果修改它的值,就能改变程序的执行流。
(5)6个状态寄存器(1个CPSR、5个SPSR),用以标识CPU的工作状态及程序的运行状态,均为32位,目前只使用了其中的一部分。
Cortex-A8处理器有40个32位长的寄存器,多了监控模式下的寄存器,如RO~R12、R15、CPSR通用,R13_ mon、R14_mon、SPSR_mon三个专用寄存器。
寄存器寻址是指操作数存放在CPU内部的寄存器中,指令中给出操作数所在的寄存器名。寄存器操作数可以是8位寄存器AH、AL、BH、BL、CH、CL、DH、DL,也可以是16位寄存器AX、BX、CX、DX、SP、BP、SI、DI等。因为寄存器寻址不需要通过总线操作访问存储器,所以指令执行速度比较快。
寄存器寻址( Register Addressing)是以通用寄存器的内容作为操作数的寻址方式,在该寻址方式下,操作数存放在寄存器中。寄存器寻址方式的寻址对象为:A,B,DPTR,R0~R7。其中,B仅在乘除法指令中为寄存器寻址,在其他指令中为直接寻址。A可以按寄存器寻址又可以直接寻址,直接寻址时写成ACC。
1、本站所有文本、信息、视频文件等,仅代表本站观点或作者本人观点,请网友谨慎参考使用。
2、本站信息均为作者提供和网友推荐收集整理而来,仅供学习和研究使用。
3、对任何由于使用本站内容而引起的诉讼、纠纷,本站不承担任何责任。
4、如有侵犯你版权的,请来信(邮箱:baike52199@gmail.com)指出,核实后,本站将立即删除。