精华内容
下载资源
问答
  • verilog8位寄存器

    2018-04-20 13:05:50
    verilog初学者设计8位寄存器,提供verilog源代码,里面不含仿真文件。
  • 数电实验——8位寄存器源代码(VHDL)
  • 一个自制的8位寄存器的封装(reg8_new2) 一个数据选择器 在quaturs上实现如下:???? 用与门+非门作一个四选一的选择器,对待写入的寄存器进行片选 其中,w表示写操作,如果w=1,则说明可以写,反之亦然。e[0],e[1]...

    已有条件:
    一个自制的8位寄存器的封装(reg8_new2)
    一个数据选择器
    在quaturs上实现如下:👀

    1. 用与门+非门作一个四选一的选择器,对待写入的寄存器进行片选
      在这里插入图片描述
      其中,w表示写操作,如果w=1,则说明可以写,反之亦然。e[0],e[1]是片选的两根地址线,因为是四选一,所以一共需要2根地址线。总线q[7…0]是输入8位数据的总线,这里要注意:这是总线的标准写法,中间只有两个点点
      在这里插入图片描述
      红色部分是数据选择功能,由上图可知,我们现在会输出4个8位数据出来。接下来,我们选用软件自备的数据选择器:
      在这里插入图片描述
      2.现在,四个寄存器都会输出数据,我们要来选择要哪个寄存器来输出:
      在这里插入图片描述
      这个4 × \times × 8位选择寄存器就做好了,很简单,主要由上图两部分完成。
      接下来,我们来看看仿真结果:
      在这里插入图片描述
      出现了问题,我们看到第二个周期中,输出选择是00(前面已经在第00个寄存器中存储了11100000),但是输出来却依旧是00000000?

    如果把上述的仿真图放大(因图太大,所以不放上来了),其实造成这样的结果原因就在于时延,并且我们这个做法也会造成不确定的时延(因为我把写入的片选信号放在了clik中,准确点应该在使能端上),改成如下样子:
    在这里插入图片描述

    展开全文
  • 声明:用于个人学习计算机组成原理时复习数字电路用。采用 Logisim 软件平台进行寄存器组的电路设计。 寄存器是运算器中通用寄存器的主要...关于多路选择器,一个 8 位寄存器组需要两个多路选择器。多路选择器(Mu...

     声明:用于个人学习计算机组成原理时复习数字电路用。采用 Logisim 软件平台进行寄存器组的电路设计。

    寄存器是运算器中通用寄存器的主要组成部分,它的主要功能是为运算单元提供源操作数,并且暂存运算的中间结果。寄存器组一般由4个、8个及以上寄存器组成,为了对这些寄存器进行写入和读出操作,一般需要配置译码器和多路选择器。

    关于多路选择器,一个 8 位寄存器组需要两个多路选择器。多路选择器(Multiplexer)又称为数据选择器或多路开关,常用 MUXb表示。它是一种多路输入、单路输出的组合逻辑电路,其逻辑功能是从多路输入数据中选中一路送至数据输出端。输出对输入的选择受选择控制变量控制。

    通常,对于一个具有 2^n 路输入和 1 路输出的 MUX 有 n 个选择控制变量,对应控制变量的每种取值组合选中相应的一路输入送至输出。

    这里选择典型的 双 4 路MUX 74153 芯片进行介绍,双四路 MUX 74153 的逻辑符号分别如图

                             

    功能表:

            

    由功能表可知,在工作状态下(G= 0),当 A1A= 00 时,Y= D0;当A1A0 = 01 时,Y = D1;当 A1A0 = 10 时,Y =D2;当 A1A0=11时,Y= D3。即在 A1A0 的控制下,依次选中 D0~D3 端的数据送至输出端。 

    而D0~D3 端分别连接着四个8位寄存器,表明通过 控制 A1A0,可以输出 4 个寄存器中的任意一个寄存器存储的数据。

    展开全文
  • This document is protected by copyright and other related rights and the practice or implementation of the information contained in this document may be protected by one or more patents or pending ...
  • 第十三课_8位和16通用寄存器

    千次阅读 2020-10-24 17:44:15
    今天讲8位的和16的通用寄存器。 在十一课中,我们知道了32的通用寄存器。分别是EAX、ECX、EDX、EBX、ESP、EBP、ESI、EDI。 今天讲的16位寄存器分别为:AX、CX、DX、BX、SP、BP、SI、DI。 对比32和16...

    前言

    很久没写东西了,今晚下班抽空写写。

    这部分的内容很简单,但是对刚接触的同学来说可能比较难理解。今天讲8位的和16位的通用寄存器。

    在十一课中,我们知道了32位的通用寄存器。分别是EAX、ECX、EDX、EBX、ESP、EBP、ESI、EDI

    今天讲的16位寄存器分别为:AX、CX、DX、BX、SP、BP、SI、DI

    对比32位和16位寄存器的名称,会发现其实16位的寄存器只是少的一个字母E

    今天讲的8位的寄存器分别为:AL、CL、DL、BL、AH、CH、DH、BH

    下面的内容可能对刚入门的同学比较难理解一点。

    首先说明一点,这些8位、16位、32位的寄存器,并不是相互独立的8位寄存器在16位寄存器中,而16位寄存器在32位寄存器中。或者说:32位寄存器中,取015位的部分组成16位寄存器,16位寄存器对半分,成为8位寄存器。不明白的看下图。

    可能还有同学不明白,下面以EAX为例讲讲它们的关系。看下图,32位寄存器EAX,占用031位。把EAX从中间分开,取015,就是16位寄存器AX。再从AX中间分开,低位07位为8位寄存器AL;高位815位为8位寄存器AH

    在OD中测试寄存器之间的关系

    用OD随便打开一个exe。(OD的使用请看上节课),往EAX中写满A。输入:mov eax,0xAAAAAAAA

    往16位寄存器AX中写满B,输入:mov ax,0xBBBB

    往8位寄存器AL中写满C,输入:mov al,0xCC

    往8位寄存器AH中写满D,输入:mov ah,0xDD

    写完上面的内容开始测试运行结果,按F8。可以看到32位寄存器EAX写满A

    再按F8单步运行,可以看到16位寄存器AX写满B,(即EAX中的低16位)。

    再按F8,可以看到8位寄存器AL写满C,(即EAX中的07位)。

    再按F8,可以看到8位寄存器AH写满D,(即EAX中的815位)。

    通过上面的讲解应该是了解了。​ 

    写于2020.4.21 22:59

     

    展开全文
  • 此书详细的讲解了此项技术的原理及其要点,对于一个初学者来说是一个很不错的选择
  • 32位寄存器用法介绍

    千次阅读 2020-11-12 13:58:16
    8个32通用寄存器,其中包含4个数据寄存器(EAX、EBX、ECX、EDX)、2个变址寄存器(ESI和EDI)和2个指针寄存器(ESP和EBP) 6个段寄存器(ES、CS、SS、DS、FS、GS) 1个指令指针寄存器(EIP) 1个标志寄存器...

    寄存器介绍

    32位CPU所含有的寄存器有:

    • 8个32位通用寄存器,其中包含4个数据寄存器(EAX、EBX、ECX、EDX)、2个变址寄存器(ESI和EDI)和2个指针寄存器(ESP和EBP)
    • 6个段寄存器(ES、CS、SS、DS、FS、GS)
    • 1个指令指针寄存器(EIP)
    • 1个标志寄存器(EFLAGS)

    在这里插入图片描述


    通用寄存器

    通用寄存器最常被用来进行算术运算和数据寻址,如下图所示(以eax为例),通用寄存器的低16位都可以被单独使用:
    在这里插入图片描述
    上图还展示了ax寄存器可以被划分为AL和AH使用,这两个都是八位寄存器。支持最低划分为8位的寄存器有EAX、EBX、ECX、EDX:

    32位16位高8位低8位
    EAXAXAHAL
    EBXBXBHBL
    ECXCXCHCL
    EDXDXDHDL

    剩下的通用寄存器没有八位模式:

    32位16位
    ESISI
    EDIDI
    EBPBP
    ESPSP

    特殊用法

    一些通用寄存器有如下的特殊用法:

    • EAX被自动用于乘法和除法指令,它通常被称为extended accumulator register
    • ECX被CPU自动用作循环计数器
    • ESP被用来在栈上寻址数据,它很少被用于其他的用途(例如算术运算等)。它通常被称为extended stack pointer register
    • ESI和EDI通常被用作数据传输,它们有时被称为extended source index和extended destination index register
    • EBP通常被高级程序语言用来引用栈上的函数参数以及局部变量。它通常被称为extended frame pointer register

    段寄存器

    2.1 数据寄存器

    数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。

    32位CPU有4个32位的通用寄存器EAX、EBX、ECX、和EDX。这些寄存器的低16位分别命名为AX、BX、CX和DX,对低16位数的存取,不会影响到高16位的数据。

    4个低16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每个寄存器都有自己的名称,可独立存取。程序员可利用数据寄存器的这种“可分可合”的特性,灵活地处理字/字节的信息。

    • 寄存器AX和AL通常被称为累加器(Accumulator),用累加器进行的操作可能需要更少时间。累加器可用于乘、除、输入/输出等操作,使用频率很高
    • 寄存器BX称为基地址寄存器(Base)。它可作为存储器指针来使用
    • 寄存器CX被称为计数寄存器(Count)。在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用CL来指明移位的位数
    • 寄存器DX称为数据寄存器(Data)。在进行乘法和除法运算时,它可作为默认的操作数参与运算,也可用于存放I/O的端口地址。
    • 在16位CPU中,AX、BX、CX和DX不能作为基址和变址寄存器来存放存储单元的地址,但在32位CPU中,其32位寄存器EAX、EBX、ECX和EDX不仅可传送数据、暂存数据保存算术逻辑运算结果,而且也可作为指针寄存器,所以,这些32位寄存器更具有通用性。

    2.2 变址寄存器

    32位CPU有2个32位变址寄存器ESI和EDI。其低16位对应先前CPU中的SI和DI,对低16位数据的存取,不影响高16位的数据。它们主要用于存放存储单元在段内的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。

    2.3 指针寄存器

    32位CPU有2个32位指针寄存器EBP和ESP。其低16位对应先前CPU中的BP和SP,对低16位数据的存取,不影响高16位的数据。它们主要用于访问堆栈内的存储单元,存放堆栈内存储单元的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址访问形式访问存储单元提供方便。

    • EBP为基指针(Base Pointer)寄存器,一般作为当前堆栈的最后单元,用它可直接存取堆栈中的数据
    • ESP为堆栈指针(Stack Pointer)寄存器,用它只可访问栈顶。

    三、标志寄存器

    3.1 进位标志(CF,Carry Flag)

    进位标志CF主要用来反映运算是否产生进位或错位。如果运算结果的最高位产生了一个进位或错位,那么其值为1,否则其值为0.

    使用该标志位的情况有:多字(字节)数的加减运算,无符号数的大小比较运算,移位操作,字(字节)之间移位,专门改变CF值的指令等。

    3.2 奇偶标志(PF,Parity Flag)

    奇偶标志PF用于反映运算结果中“1”的个数的奇偶性。如果“1”的个数为偶数,则PF的值为1,否则其值为0.

    利用PF可进行奇偶校验检查,或产生奇偶校验位。在数据传送过程中,为了提供传送的可靠性,如果采用奇偶校验的方法,就可使用该标志位。

    3.3 辅助进位标志(AF,Auxiliary Carry Flag)

    在发生下面情况时,辅助进位标志AF的值被置为1,否则其值为0:

    • 在字操作时,发生低字节向高字节进位或错位时
    • 在字节操作时,发生低4位向高4位进位或错位时

    3.4 零标志(ZF,Zero Flag)

    零标志ZF用来反映运算结果是否为0。如果运算结果为0,则其值为1,否则其值为0。在判断运算结果是否为0时,可使用此标志位。

    3.5 符号标志(SF,Sign Flag)

    符号标志SF用来反映运算结果的符号位,它与运算结果的最高位相同。在微机系统中,有符号数采用补码表示法,所以,SF也就反映运算结果的正负号。运算结果为正数时,SF的值为0,否则其值为1。

    3.6 溢出标志(OF,Overflow Flag)

    溢出标志OF用于反映有符号数加减运算所得结果是否溢出。如果运算结果超过当前运算数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被清为0.

    四、指令指针寄存器

    32CPU将16位指令指针寄存器(IP)拓展到32位,并记作EIP,EIP的低16位与先前CPU中的IP作用相同。这个寄存器存放了下次将要执行的指令在代码段的偏移量。

    五、段寄存器

    段寄存器是根据内存分段的管理模式来设定的。内存单元的物理地址由段寄存器的值和一个偏移量组合而成,这样可以用两个较小位数的值组合成一个可访问的较大物理空间的内存地址。

    CPU内部的段寄存器:

    • CS——代码段寄存器(CodeSegmentRegister),其值为代码段的段值;
    • DS——数据段寄存器(DataSegmentRegister),其值为数据段的段值;
    • ES——附加段寄存器(ExtraSegmentRegister),其值为附加数据段的段值;
    • SS——堆栈段寄存器(StackSegmentRegister),其值为堆栈段的段值;
    • FS——附加段寄存器(ExtraSegmentRegister),其值为附加数据段的段值;
    • GS——附加段寄存器(ExtraSegmentRegister),其值为附加数据段的段值。

    在16位CPU系统中,只有4个段寄存器,所以,程序在任何时刻至多有4个正在使用的段可直接访问;在32位微机系统中,它有6个段寄存器,所以,在此环境下开发的程序最多可同时访问6个段。

    在实模式和保护模式下,段寄存器的作用是不同的:

    • 实模式:前4个段寄存器CS、DS、ES、SS与16位CPU中的所对应的段寄存器的含义完全一致,内存单元的逻辑地址仍为“段值:偏移量”的形式。为访问某内存段内的数据,必须使用该段寄存器和存储单元的偏移量
    • 保护模式:在此模式下,情况比较复杂,装入段寄存器的不再是段值,而是称为Selector的某个值。

    通用32位CPU常用寄存器及其作用

    展开全文
  • ILI9488并口16位寄存器配置C++编译.rar
  • 寄存器A的第四进行置位操作,1<<4, A=A|(1<<4). 对寄存器A的第四进行清零操作,1<<4,A=A&~(1<<4)。 置位与清零寄存器某一操作,不影响其他
  • 此程序是用verilog语言编写的8位移位寄存器,已经通过了验证!
  • 用VHDL实现的48位全加器以及8位寄存器 这是源文件,直接用就可以
  • 画出用74ls194a组成16双向移位寄存器 从逻辑结构上看,移位寄存器有以下两个显著特征:(1)移位寄存器是由相同的寄存单元所组成。一般说来,寄存单元的个数就是移位寄存器的位数。为了完成不同的移位功能,每个寄存...
  • 如何用位域给8位寄存器赋值

    千次阅读 2019-07-05 11:47:32
    八位寄存器里的部分有一个功能,但是不能寻址,如下图,应该怎么把这个寄存器对影成结构体,然后结构体的值直接赋给寄存器呢? 使用位域,将八位寄存器对影成一个结构体,考虑大小端的问题,PC机把第七放到高位,MCU...
  • arm v8 寄存器手册

    2021-01-06 17:40:06
    arm v8 寄存器手册
  • 42--8位数据寄存器

    2020-04-25 15:27:47
    module reg8(out_data,in_data,clk,clr); output[7:0] out_data; input[7:0] in_data; input clk,clr; reg[7:0] out_data; always @(posedge clk or posedge clr) begin if(clr) out_data...
  • 实例七— 8位移位寄存器的设计

    万次阅读 2019-02-19 11:12:12
    实例七 8位移位寄存器的设计(基于Robei工具的8位移位寄存器的设计) 4.1.1. 本章导读 设计目的 要求掌握8位移位寄存器原理,并根据原理设计8位移位寄存器模块以及设计相关testbench,最后在Robei可视化仿真软件进行...
  • 8位移位寄存器

    2012-09-27 16:55:15
    8位移位寄存器
  • 本文主要讲了一下关于八位移位寄存器vhdl程序设计,希望对你的学习有所帮助。
  • 汇编语言--32位寄存器详解

    千次阅读 2018-12-21 11:09:55
    汇编语言–32位寄存器详解 1. 寄存器概述(16个): 4个数据(通用)寄存器:(EAX、EBX、ECX、EDX)。 6个段寄存器:(ES、CS、SS、DS、FS、GS)。 2个变址寄存器:(ESI、EDI)。 2个...
  • 【VHDL】带使能端的同步复位的8位寄存器设计 程序: library ieee; use ieee.std_logic_1164.all; entity reg8 is port(clk,OE,RES:in std_logic; A:in std_logic_vector(7 downto 0); Q:out std_logic_...
  • 解读 8 移位寄存器的设计

    千次阅读 2020-05-22 19:05:06
    快速简单的设计一个移位寄存器,采用代码和框图的模式,输入核心代码,接口等自动生成代码,以及板级验证
  • Arm学习总结之 32和64位寄存器

    千次阅读 2019-07-21 19:47:59
    32 arm在任何模式(9种)下 都有的以下寄存器 15个通用寄存器,包括R0-R12, SP(the Stack SP), LR(Link Register) 1 个PC(Program Counter) 1 一个APSR(Application Progrem Status Register)、 其中R0~R3 ...
  • 刚开始学习STM8单片机时,看别人的代码,在设置寄存器的时候经常使用,或、与、左移、右移等运算,就很不理解,为什么不直接给寄存器赋值,非要搞的这么复杂。直到后来程序写的多了,才明白这样写的好处。比如...
  • Verilog4位寄存器程序(可调周期)

    千次阅读 2018-04-22 23:30:43
    本文提供了用Verilog设计4位寄存器的代码,且时钟周期可调,实现异步清零与同步置数,已通过Basys2开发板验证。代码如下:module register #(parameter N=4) ( input wire load, input wire clr, input wire clk...
  • x64位寄存器名称

    千次阅读 2019-01-30 11:02:00
    相比32汇编,64汇编的通用寄存器在数量上多了8个,共有16个通用寄存器,其中个是兼容32汇编的,分别是将原来的名称e**改成了r**,如eax改成rax,其余8个分别命名为R8、R9、……R15,EIP和EFlags都改成RIP和...
  • 32通用寄存器

    2020-08-06 17:33:54
    32通用寄存器 寄存器 编号 存储数据的范围 EAX 0 0 - 0xFFFFFFFF ECX 1 0 - 0xFFFFFFFF EDX 2 0 - 0xFFFFFFFF EBX 3 0 - 0xFFFFFFFF ESP 4 0 - 0xFFFFFFFF EBP 5 0 - 0xFFFFFFFF ESI 6 0 - 0...
  • 寄存器

    千次阅读 2016-09-04 22:24:52
    8086 有14个16位寄存器,这14个寄存器按其用途可分为(1)通用寄存器、(2)指令指针、(3)标志寄存器和(4)段寄存器等4类。 通用寄存器8个, 又可以分成2组,一组是数据寄存器(4个),另一组是指针寄存器及...
  • UxCTL寄存器简介

    2020-11-12 19:57:42
    UxCTL寄存器是一个8位寄存器。UASRT模块的基本操作由该寄存器的控制确定的,它包含了通信协议、通信模式和校验等的选择。图给出了啷寄存器的各个。  图 UxCTL寄存器  由图可以看出,UxCTL寄存器主要...
  • 操作(寄存器

    千次阅读 2020-03-06 13:33:25
    操作(寄存器) **新手,根据自己理解和参考其他人的资料写成,希望对大家有所帮助。第一次写文章,不足请多指教,谢谢! 带操作的原理: STM32中CPU是32的。最方便快捷的方法是直接操作32的地址,对某个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 304,729
精华内容 121,891
关键字:

属于8位寄存器的是