精华内容
下载资源
问答
  • CPU 字长的定义就是通用寄存器宽度,两者当然相等了。 不过专用寄存器可能有不同的大小,比如: 32位CPU Pentium Pro/II/III ,它的通用寄存器是32位的, 但是浮点寄存器是 64位的。支持SSE2增强指令集的...

    cpu中一个寄存器的大小是不是与cpu的字长相等?
    为什么要相等,
    寄存器大一点不行吗?
    

     

     

    CPU 字长的定义就是通用寄存器的宽度,两者当然相等了。 
    
    不过专用寄存器可能有不同的大小,比如: 
    32位CPU Pentium Pro/II/III ,它的通用寄存器是32位的, 
    但是浮点寄存器是 64位的。支持SSE2增强指令集的的Pentium4, 
    早期产品都是32位的,但是SSE2浮点寄存器多达 128位! 
    
    你要是把通用寄存器也做大,还得运算单元能配合才行啊, 
    如果运算单元能控制得了,那就是更大字长的CPU了,比如64位CPU。
    展开全文
  • 单片机文档的时候一般寄存器是rw类型,还有一些r或者w,...单片机的两种清0方式有什么区别单片机内部有各种功能的寄存器,比如PIC,C51系列8位的单片机,寄存器宽度就是八个二进制位,一般高位在前低位在后,...

    单片机文档的时候一般寄存器是rw类型,还有一些是r或者w,对于一些特殊寄存器的置1是由硬件自动实现的,比如标志位flag、中断int,但清0还是需要通过软件进行操作,清0方式有两种,写1清0,写0清0,这两种方式有什么区别呢?在硬件实现上有什么不同?

    897d20136fa2d95e6026901568ed6923.png

    单片机的两种清0方式有什么区别

    单片机内部有各种功能的寄存器,比如PIC,C51系列8位的单片机,寄存器的宽度就是八个二进制位,一般是高位在前低位在后,例如:11000011,一共是八位,高四位数据是1100,低四位数据是0011。单片机是可以进行位操作的,一个8位的寄存器我们可以只针对其中一个位或者某些位进行操作,将寄存器相应的位赋值1(高电平)为置位,相反赋值0(低电平)为清零。这是一种比较容易理解的方式,但对于写1清0有几种说法。

    5f442cd2870daf012483c94885ba7155.png

    1、从电路角度去看,对某位写1,即输入一个高电平,使内部的一个三极管导通接地,电容放电进行清0。

    2、写1是在硬件上产生一个复位脉冲。能写0清除就很可能也可以写1进去,而这与功能要求不符。如要控制只能写0而不能写1,则硬件比较复杂。

    3、从应用便捷性角度来说,读了寄存器数据以后,照着写回去就可以清0,不用再更改一次数据。

    6bbb1692cd6cfe27d24cde97bc0023ce.png

    还有寄存器一般支持的是byte, half word, word操作,对于寄存器上有几个标志位的情况下,完成对单一标志位的清0,又不影响其他标志位,但又必须对其他位进行写,因此也就只能是写1或者写0清0才有效,只能一种方式。

    个人理解,有什么不对的,烦请评论指正探讨,尽信书不如无书,理越辩越明

    展开全文
  • 逻辑运算&寄存器

    2019-09-10 18:24:00
    如果想获取某个值的第N位多少,在计算机的世界寄存器中的01每一个位置的0或者1都有着特定的含义,那我们在编程的时候就需要判断某一个位置的地方都什么的,也不可能自己把一串数字自己转成二进制,自己查12345...

    滴水三期逻辑计算

    计算机如何存数只有0和1
    上回说的计算2+3=?
    逻辑运算2-3= :
    (逻辑运算,移位,数据宽度)

    如果想获取某个值的第N位是多少,在计算机的世界寄存器中的01每一个位置的0或者1都有着特定的含义,那我们在编程的时候就需要判断某一个位置的地方都是干什么的,也不可能自己把一串数字自己转成二进制,自己查12345位置,那个位置,这么算比较郁闷。
    那么我想知道8F的第4位是0还是1
    那么我们把第四位写成00001000与10001111进行与运算然后哪一位置是1上面就是1了
    最简单的加密算法:
    xor两次以后就会变成原来的值,所以密钥是很重要的
    例如:
    要加密的数据:2015(16进制)
    密钥:54(16进制)
    进行异或后:7441
    解密异或后:2015

    这些的目的:计算机怎么存数的只有0和1,数据宽度:一旦超过这个边界,就不要了,那个圆的图体现了正负数的本质,定义我们自己定义的,计算机运算的本质:最后都是or and xor not

    八进制数2-5 在计算器中的结果是:177777777777777777775 为什么?
    转化成16 1字节:FD

    寄存器:
    CPU 内存 CPU计算速度非常快,放在内存里会慢点
    CPU可以提供的容器是有限的,而内存可以4G,8G,16G增加的
    CPU提供的32位容器叫做32位通用寄存器
    在这里插入图片描述
    这个表一定要熟练的背下来包括编号!!!!!
    忘记后面的主要用途,因为cpu在创作的时候是建议把EAX当成累加器,比如去商店去买一个杯子人家让你用杯子喝水难道你就不能用这个杯子喝酒了吗,后面主要用途就不用看了
    32位:里面可以存32个0或者32个1
    范围就是0-FFFFFFFF 任何一个容器存储的都是0-FFFFFFFF

    DTdebug打开一个随便的exe文件

    在这里插入图片描述
    黑色的地方代表的是当前的CPU刚好执行到这个位置,简单来说就是程序跑到这里停了下来
    EIP也是一个寄存器,寄存器存储的是当前的程序走到哪里

    在这里插入图片描述
    看右边的那些事寄存器窗口,刚才说的容器刚好是上面的的那8个
    在这里插入图片描述
    上面的值已经发生了变化,mov 后面的寄存器先不要写EIP后面会说EIP的值怎么改的
    所有的汇编指令都是由操作码和操作数组成的,MOV(移动)(指的是我要干什么)1代表的是源操作数 EAX目标操作时在这里 MOV EAX,1 是我要把后面的操作数的值放到EAX中去

    在这里插入图片描述
    一个16进制等于4位2进制,因为这些寄存器都是32位的,所以只能存8个多余8个会从最后一个开始往前取8个,在这之前的那些将会不要
    例如:上面写的MOV edx0X123456789 前面的那个1就会没有
    DTDebug打一个exe程序(F3),单步执行程序(F7)

    展开全文
  • 汇编 第二章 寄存器

    2018-10-21 19:24:00
    在我看来,第二章中主要围绕着6个寄存器展开阐述。它们分别是AX、BX、CX、DX、CS、IP。 在此之前,通过本章的学习,使我对CPU这一概念又有了更深一步的认识。...(2)寄存器的最大宽度是16位;(3)寄...

    在我看来,第二章中主要围绕着6个寄存器展开阐述。它们分别是AX、BX、CX、DX、CS、IP

     

    在此之前,通过本章的学习,使我对CPU这一概念又有了更深一步的认识。

    1.CPU中字长与位宽的区别

    通常情况下,用字长来描述CPU。例如,字长16,则称16位CPU。那么16位CPU有什么具体的含义呢?

    (1)表明运算器一次最多可以处理16位的数据;(2)寄存器的最大宽度是16位;(3)寄存器和运算器之间的通路是16位。

    概括地来讲,就是通过字长这一指标可以反映出CPU内部运算处理的速度(这与本章中的物理地址与逻辑地址有着密切的关系,下文中会提到)。在这里老师在课堂上提到了位宽这一名词,须与字长区分开来。位宽是指CPU通过外部数据总线与内存之间一次能够传送的数据位。例如,8086——16位CPU(字长是16位,位宽也是16位),80386——32位CPU(字长32位,位宽16位),Pentium——32位CPU(字长32位,位宽64位)。

    2.ISA(字节集编码)

    ISA,一个处理器支持的指令和指令的字节级编码(与之后的CS,IP寄存器有关)。

    *通过课前的quiz小练习我进一步了解到不同的CPU生产厂商在生产CPU时如果遵照相同的ISA,则认为这些CPU在ISA级别上是兼容的。而不同的CPU的差异也主要体现在处理的字长及速度、工作模式、指令集的丰富程度这三方面。我们平时最常见到的x86系列也称IA32指令集(Intel32位体系结构),包括实模式和保护模式。

     

    再说到第二章的主题寄存器,在8086CPU中所有寄存器都是16位的,可以存放两个字节

    1.通用寄存器(AX、BX、CX、DX)。在CPU内部运算时,它们通常被用来保存操作数和中间结果。为了保证兼容,使原来基于上代CPU编写的程序稍加修改就可以运行在8086之上,便有了高8位、低8位的寄存器的出现。

    以寄存器AX为例,如图所示,分为AH(高8位)和AL(低8位)。此时需要注意AX与AH(AL)寄存器所能表示的整数范围是不一样的。AX寄存器是16位的。它所能表示的无符号整数的范围是0~(2^16)-1,而AL(AH)所能表示的无符号整数范围是0~(2^8)-1(其他三个通用寄存器亦是如此)。

    之后又介绍了两条基本的汇编指令:mov、add(在本章学习中,mov与add 指令还只是在CPU内部进行相关操作)。在指令使用时需要注意:

    (1)计算结果是否超出寄存位数,若超出要“丢失”进位值。同时,注意AL的进位值不能写入AX中,这也更好地体现了AH与AL是两个独立使用的寄存器。

    (2)指令的两个操作对象应要保证位数一致。若出现mov al,2000、mov ax,bh等情况均是错误的。

    2.CS与IP寄存器。CS——代码寄存器和IP——指令指针寄存器是8086CPU中两个最关键的寄存器,其重要性在于提供了CPU要执行指令的地址。这也随之带来了问题:8086的寄存器是16位的,而外部地址总线宽度为20位,16位的寄存器无法表示20位地址线宽度。

    于是,设计者由此想出解决方法:采用一种在内部用两个16位地址合成的方法来形成一个20位的物理地址。在8086CPU中的具体形式为:

    物理地址=段地址*16+偏移地址  CS中的内容即为段地址,IP中的内容即为偏移地址,CS和IP的值合在一起,CS:IP恰好构成计算机中下一条将要执行的指令的逻辑地址

    *通过课前的quiz小练习,我理解了物理地址与逻辑地址之间的区别与联系:

    逻辑地址——用[段地址:偏移地址]的形式表示,其中[段地址*16]是这个逻辑段的起始物理地址,偏移地址可理解为内存单元相对于段起始物理地址的位移量。

    物理地址——每一个内存单元在一个一维线性空间中的唯一地址,而这个一维线性空间是所有的内存单元构成的存储空间。

    对于8086CPU给出的物理地址方法,仔细学习后还得出了以下一些结论:

    1)CPU可以用不同的段地址和偏移地址形成同一个物理地址。

    2)如果给定一个段地址,仅用偏移量来寻址最多可寻2^16B即64KB个内存单元。

    3)内存并没有分段,只是8086CPU给出的物理地址方法使得我们可以用分段的形式来管理内存。正因如此,之后我们在编程时也可以根据需要,将若干地址连续的内存单元看作一个段,该段的起始地址为段地址*16。不过需要注意两点,一个段的起始地址一定为16的倍数,一个段的最大长度为64KB(因为偏移地址为16位,决定了其寻址能力)。

    再回到CS和IP这两个寄存器上,CPU从何处执行指令是由CS、IP中的内容决定的。由此我们可以通过改变CS、IP中的内容来控制寄存器。那么,如何来控制呢?8086CPU通过转移指令修改CS、IP的内容。在本章中我学习了两种方法:

    1)jmp段地址:偏移地址  ——段地址修改CS中的内容,偏移地址修改IP中的内容

    2)jmp 某一合法寄存器 ——用寄存器中的值修改IP内容

    最后是CPU是进行读取、执行指令的工作原理:

    (1)从CS:IP指向的内存单元读取指令;

    (2)IP=IP+所读取指令的长度,从而指向下一条指令;(如何知道所取指令的长度:CPU从内存中取出一系列字节并设置一个待分析的位置,从此位置逐字节分析得出该条指令的长度)

    (3)执行该指令,转到步骤(1),重复该过程。

    转载于:https://www.cnblogs.com/zjybel/p/9769305.html

    展开全文
  • 本质其实没有什么区别,都拿来存储数据的 那为什么要在cpu中放一些容器,在内存中放一些容器 把数据放在cpu里面计算非常快,但是cpu非常昂贵 放在内存中会相对慢一点,但是内存要相对便宜一点 所以两者兼用会比较...
  • S3C2440 的中断寄存器

    2011-07-22 19:18:01
    EINTPEND: 这个中断挂起寄存器,清除时要写1,后面还有几个写 1清除。当 一个外部中断(EINT4-EINT23)发生后,那么相应的位会被置 1。为什么没有EINT0-EINT3, 呵呵,看看SRCPND就知道了,里面没有 EINT4-...
  • 先从实模式下入手:存储器地址的分段,实模式下允许的最大寻址空间为1MB(因为8086/8088地址总线宽度是20为 2^20=1048576=1024k=1M)其他的微处理器也为1M 实际上实模式就是为8086/8088而设计的工作方式,它要解决在...
  • 数据总线的宽度是决定计算机性能的一个重要指标,计算机的数据总线大多是32位或64位。计算机字长是指进行运算的二进制位数,有8,16,32,64位之分,主要取决于数据总线的宽度;比如说奔腾是32位,这是指处理器的...
  • 1.1 PWM是什么? PWM表示脉冲宽度调制,现在我们先将PWM理解为一种信号,它可以从微控制器或555定时器等数字集成电路中产生,它是一系列脉冲,这些脉冲将以方波的形式出现。也就是说,在任何给定的时间点,波型要么...
  • 64位系统的CPU通用寄存器,数据宽度为64位,64位指令集可以运行64位数据指令,处理器一次可以提取64位数据(两个指令一次提取8个字节的数据),比32位(需要4个指令,一次取4个字节)速度快。 ...
  • 什么是cpu寻址能力。

    千次阅读 2011-08-03 11:40:29
    通常人们认为,内存容量越大,处理数据的能力也就越强,但内存容量不可能无限的大,它要受到系统结构、硬件设计、制造成本等多方面因素的制约,一个最直接的因素取决于系统的地址总线的地址寄存器宽度(位数)。...
  • day28.什么是变量

    2018-02-22 18:37:47
    第28节:什么是变量变量是什么?在程序的进程中需要存储一些数据。大家之前学汇编的时候知道了,存储数据可以存到CPU中也就是存在寄存器里也可以存在内存中。但是在C语言中存储数据的时候我们要把这个数据存储到哪里...
  • 位数指CPU处理的数据的宽度,参与运算的寄存器的数据长度。如果总线宽度与CPU一次处理的数据宽度相同,则这个宽度就是所说的单片机位数。如果总线宽度与CPU一次处理的数据宽度不同:(1)总线宽度小于CPU一次处理的...
  • int类型大小由机器字长决定还是编译器决定,int类型...通常的64位技术相对32位而言的,这个位数指的CPU GPRs(General-Purpose register通用寄存器)的数据宽度为64位,而32位的处理器的通用寄存器的数据宽度为32...
  • 不是32位和64位系统的区别,就是说原生64位软件和32位软件的区别是什么呢? 我现在64位系统大部分用的还是32位的软件… -------------------------- 这个位数指的是CPU GPRs(General-Purpose Registers,通用...
  • 64位系统,这个位数指的CPU 里面的通用寄存器的数据宽度为64位,也就是说一个地址占二进制位数64,所以: sizeof(double *)==sizeof(int *)==sizeof(char *)==64/8==8   32位系统,同理,他的一个地址占32位...
  • 什么是64位技术

    2007-08-20 09:06:00
    64位技术:这里的64位技术相对于32位而言的,这个位数指的CPU GPRs(General-Purpose Registers,通用寄存器)的数据宽度为64位,64位指令集就是运行64位数据的指令,也就是说处理器一次可以运行64bit数据。...
  • 什么是64位技术?

    2007-12-21 09:24:00
    64位技术:这里的64位技术相对于32位而言的,这个位数指的CPU GPRs(General-Purpose Registers,通用寄存器)的数据宽度为64位,64位指令集就是运行64位数据的指令,也就是说处理器一次可以运行64bit数据。...
  • 单片机文档的时候一般寄存器是rw类型,还有一些r或者w。...单片机内部有各种功能的寄存器,比如PIC、C51系列8位的单片机,寄存器宽度就是八个二进制位,一般高位在前低位在后,例如:1100001...
  • int类型比较特殊,具体的字节数同机器字长和编译器有关。如果要保证移植性,尽量用__int16 __int32... 通常的64位技术相对32位而言的,这个位数指的CPU GPRs(General-Purpose register通用寄存器)的数据宽度为64位
  • 单片机文档的时候一般寄存器是rw类型,还有一些r或者w。...单片机内部有各种功能的寄存器,比如PIC、C51系列8位的单片机,寄存器宽度就是八个二进制位,一般高位在前低位在后,例如:1100001...
  • 64位系统,这个位数指的CPU 里面的通用寄存器的数据宽度为64位,也就是说一个地址占二进制位数64,所以:sizeof(double *)==sizeof(int *)==sizeof(char *)==64/8==8。 32位系统,同理,他的一个地址占32位二...
  • 但一般等于机器寄存器位宽(64位平台除外,默认为4字节),如在32位平台上(所谓32位平台是指通用寄存器的数据宽度是32)编写代码,int 类型分配4个字节,而在16位平台是则分配2个字节。 编译器是把代码转换为机器...
  • 什么会有大小端模式之分呢?

    千次阅读 2014-06-13 10:54:36
    因为在计算机系统中,我们以字节为单位的, ...例如16位或者32位的处理器,由于寄存器宽度大于一个字节, 那么必然存在着一个如果将多个字节安排的问题。 因此就导致了大端存储模式和小端
  • 但是在C语言中除了8bit的char之外,还有16bit的short型,32bit的long型(要看具体的编译器),另外,对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如何将多...
  • 32位电脑与64位电脑有什么... 我们通常说的64位技术相对于32位而言的,这个位数指的CPU GPRs(General-Purpose Registers,通用寄存器)的数据宽度为64位,64位指令集就是运行64位数据的指令,也就是说处理器一次...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 170
精华内容 68
关键字:

寄存器宽度是什么