精华内容
下载资源
问答
  • 寄存器和地址
    万次阅读
    2016-03-17 10:18:12

    一般的CPU都是由以下部分组成:运算器、控制器和寄存器。

    这些器件之间自然也要相互交换信息,所以他们也是有导线相连的,也就是总线了。但是这个总线是内部总线,而CPU和内存、显卡之类做信息交换的是外部总线。

    他们的作用分别是:

    运算器:信息处理

    寄存器:信息储存

    控制器:控制器件

    好吧,从名字来看就很容易明白……

    通用寄存器(8086CPU):

    8086CPU寄存器都是16位的,可以存放两个字节,一个字节是八个二进制位哦。

    它的通用寄存器有:AX,BX,CX,DX,话说就是ABCD嘛。

    特殊的是这些寄存器都是可以拆成8位寄存器来使用,为了兼容。

    AX可以拆分为AHAL

    BX可以拆分为BXBL

    CX可以拆分为CHCL

    DX可以拆分为DHDL

    H代表high的意思,L代表low的意思,这样是不是很好理解。

    这个16位寄存器,说起来就是它里面可以存放0和1的小格子有16个。一个小格子就是一个二进制位。

    来张图应该会很清晰,没网……以后补充吧……

    说到这里,如果你看到这样的一个数字4E2C,不用慌张,它是一个16进制的数据。这种类型的数据,你只要死死记住,16禁止的一位,相当于二进制的四位,所以呢4E2C你要是换算成二进制,它是16个。

    书上的例子是这样的:

    4E20,这是一个16进制数,换算以后成二进制:0100111000100000,

    4就是0100,E就是1110,2就是0010,0就是0000.怎么换算还不知道,请打你的计算机老师……

    最后,有些时候我们不能一眼看出它是一个16进制数,或者说会有误解的时候,就会在十六进制数的后面加上一个H,这里的H不是high,而是Hex的意思。

    二进制数呢,就会在后面加上B,也就是byte的意思,而十进制数就不用加了,毕竟都是小学都会的。

    现在来使用寄存器吧!

    首先呢,在写汇编代码的时候,你不用区分大小写。

    比如:mov ax 22,这个是可以,他表示将22的数据送入AX寄存器

    不仅可以把数据送进寄存器,还可以把其它寄存器的数据送过来,如:mov ax bx 它表示把BX中的数据送入AX,当然,BX的数据还在的哦。

    如果你很高兴,mov AX 22 mov AX BX这种大写代码也是可以接受的……

    这里说到了mov ax bx的情况,有时候如果说ax寄存器没有数据,那么一切ok,但是如果ax里面有数据会怎么样?这个时候把bx的数据送进来,那ax的数据还在吗?

    答案是否定的,ax的数据将会被bx中传递过来的数据覆盖。

    其实很好理解,这个ax这个容器很小,当你把别的数据是送进来,它只能以这种方式存储数据。

    物理地址

    这里说的可不是你的MAC地址……

    在内存当中,不管你的内存有多大,CPU在访问的时候都是把它当成一维的,这样确保了每个内存单元都有唯一的地址。嗯,不排除以后科技更牛逼……

    这些内存单元的地址,就是它们的物理地址。

    CPU会首先在内部安排好地址,然后再发出去。那么CPU是怎么发出地址的?自然是靠地址总线。

    这里说的内存单元,绝不仅仅是内存条,还有显存之类的也属于内存单元。

    在讨论CPU问题,其实涉及到的是计算机的工作原理,和本质,我们不应当将概念人为地局限为一个或者一种特殊器件。

     

     

    更多相关内容
  • 【汇编语言】寄存器和地址

    千次阅读 多人点赞 2021-03-04 18:40:57
    寄存器和地址 主要内容: 一、寄存器 (1)透明寄存器 (2)可编程寄存器 1.通用寄存器 2.专用寄存器 二、地址 (1)存储模型 (2)存储空间分段管理 (3)物理地址与逻辑地址 (4)操作数寻址过程

    寄存器和地址

    在这里插入图片描述

    一、寄存器

    (1)透明寄存器

    透明寄存器对应用人员来说不可见,不能直接控制

    (2)可编程寄存器

    具有引用名称、供编程使用

    1.通用寄存器

    处理器最常使用的整数通用寄存器,可用于保存整数数据、地址等

    32位IA-32处理器具有8个32位通用寄存器
    EAX,EBX,ECX,EDX,ESI,EDI,EBP,ESP
    它们源自16位8086处理器的8个16位通用寄存器 AX,BX,CX,DX,SI,DI,BP,SP
    前4个寄存器还可分成高低字节,形成8个8位通用寄存器 AH,AL,BH,BL,CH,CL,DH,DL
    在这里插入图片描述

    • 32位通用寄存器
      寄存器名称英文中文作用
      EAXAccumulator累加器使用频度最高,用千算术运算逻辑运算以及与外设传送信息等
      EBXBase Address基址寄存器常用来存放存储器地址,以方便指向变批或数组中的元素
      ECXCounter计数器常作为循环操作等指令中的计数器
      EDXData数据寄存器可用来存放数据,其中低 16 DX 常用来存放外设端口地址
      ESISource Index源变址寄存器用于指向字符串或数组的源操作数
      EDIDestination Index目的变址寄存器用于指向字符串或数组的目的操作数
      EBPBase Pointer基址指针默认情况下指向程序堆栈区域的数据,主要用于在子程序中访问通过堆栈传递的参数和局部变批
      ESPStack Pointer堆栈指针专用于指向程序堆栈区域顶部的数据,在涉及堆栈操作的指令中会自动增加或减少

    2.专用寄存器

    • 标志寄存器FLAG

      标志体现了某种工作形态,反映指令执行结果或控制指令执行形式。

      标志寄存器包含 组状态标志 、一 个控制标志和 组系统标志,其初始状态为000000002 H:

      • ►状态标志:记录指令执行结果的辅助信息
        状态标志有 6个 从低位到高位依次是:
      中文缩写全称
      进位标志CFCarry Flag
      奇偶标志PFParity Flag
      调整标志AFAdjust Flag
      零标志ZFZero Flag
      符号标志SFSign Flag
      溢出标志OFOverflow Flag
      • ►控制标志:方向标志DF,仅用于用于串操作指令中,控制地址的变化方向
      • ►系统标志:控制操作系统或核心管理程序的操作方式
    • 指令指针寄存器EIP

      保存将要执行的指令在主存的存储器地址

      EIP 具有自动增量的能力 处理器执行完一条指令, EIP 就加上该指令的字节数,指向下一条指令

    • 段寄存器

      段寄存器表明某个段在主存中的位置
      6个16位段寄存器:CS DS SS ES FS GS

      寄存器
      代码段CS(Code Segment)
      堆栈段SS(Stack Segment)
      数据段DS(Data Segment)ES (Extra Segment)FS GS

    二、地址

    (1)存储模型

    • 平展存储模型(Flat Memory Model)

      存储器是一个连续的4GB线性地址空间

      平展存储模型 (Flat Memory Model) 下,对程序来说存储器是一个连续的地址空间,称为线性地址空间。程序需要的代码、数据和堆栈都包含在这个地址空间中。线性地址空间也以字节为基本存储单位,即每个存储单元保存一个字节且具有一个地址,这个地址称为线性地址 (Linear Address) IA-32 处理器支持的线性地址空间是 0 ~ 2 32 2^{32} 232 - 1 (4GB 容量)。

    • 段式存储模型(Segmented Memory Model)

      存储器由一组独立的地址空间组成:段(Segment) 每个段都可以达到4GB

      段式存储模型 (Segmented Memory Model) 下,对程序来说存储器由一组独立的地址空间组成,这个地址空间称为段 (Segment) 。通常,代码、数据和堆栈位千分开的段中。程序利用逻辑地址 (Logical Address) 寻址段中的每个字节单元,每个段都可以达到 4GB。
      在处理器内部,所有的段都被映射到线性地址空间 程序访问一个存储单元时,处理器会将逻辑地址转换成线性地址 使用段式存储模型的主要目的是增加程序的可靠性。
      在这里插入图片描述

    • 实地址存储模型(Real-address Memory Model)

      实地址存储模型 (Real address Mode Memory Model) 8086 处理器的存储模型 IA-32 处理器之所以支持这种存储模型,是为了兼容原来为 8086 处理器编写的程序 实地址存储模型是段式存储模型的特例,其线性地址空间最大为 1MB 容量,由最大为 64KB 的多个段组成。

    (2)存储空间分段管理

    • 代码段(Code Segment):存放程序的可执行代码(处理器指令)
      • 段基地址:代码段寄存器CS指示
      • 偏移地址:指令指针寄存器EIP保存
    • 数据段(Data Segment):存放程序所用的数据,例如全局变量
      • 段基地址:堆栈段寄存器SS指示
      • 偏移地址:堆栈指针寄存器ESP保存
    • 堆栈段(Stack Segment):程序需要的特殊区域,存放返回地址、临时变量等
      • 段基地址:数据段寄存器DS指示,有时也用ES、FS和GS指示
      • 偏移地址:存储器寻址方式计算出,有效地址EA指示

    (3)物理地址与逻辑地址

    在这里插入图片描述

    1.物理地址

    主存储器需要处理器通过总线进行访问,称为物理存储器。物理存储器的每个存储单元有一个唯一的地址,这个地址就是物理地址 (Physical Address) 。物理地址空间从 开始顺序编排,直到处理器支持的最大存储单元。

    2.逻辑地址

    存储器空间可以分段管理,采用逻辑地址指示

    • 逻辑地址=段基地址∶偏移地址
      • ►段基地址=在主存中的起始地址
      • ►偏移地址=距离段基地址的位移量
    • 处理器内部以及程序员编程时采用逻辑地址

    不论是何种存储模型,程序员都采用逻辑地址进行程序设计,逻辑地址由段基地址和偏移地址组成 段基地址(简称段地址)确定段在主存中的起始地址,以段基地址为起点,段内的位置可以用距离该起点的位移量表示,称为偏移 (Offset) 地址 。

    3.逻辑地址与物理地址的转换

    在这里插入图片描述

    • 实地址方式的地址转换

      通电或复位后, IA-32 处理器处千实地址方式 (Real- address Mode , 简称实方式) 它实现了8086 相同的程序设计环境,但有所扩展

      • 主存空间1MB:00000H~FFFFFH
      • 程序设计时分段管理,但有两个限制:
        • 每个段最大为64KB
        • 段只能开始于低4位地址全为0的物理地址处
      • 逻辑地址=段地址∶ 偏移地址
        • 16位段寄存器保存20位段起始地址的高16位
        • 偏移地址也用16位数据表示
      • 物理地址=段地址×16(左移二进制4位)+偏移地址
    • 保护方式的地址转换

      保护方式 (Protected Mode) IA-32 处理器固有的工作状态 在保护方式下, IA-32 处理器能够发挥其全部功能,可以充分利用其强大的段页式存储管理以及特权与保护能力 保护方式下, IA-32 处理器可以使用全部 32 条地址总线,可寻址 4GB 物理存储器

      • 16位段寄存器保存16位段选择器
      • 段选择器指向64位段描述符(Descriptor)
      • 段描述符包括段基地址
        • 平展存储模型:指向地址0位置
        • 段式存储模型:指向线性地址空间不同的段
        • 实地址存储模型:保存段基地址的高16位

    (4)操作数寻址过程

    1.段选择器

    • 保护方式的16位段寄存器被定义为段选择器
    • 包含3个域,指向一个段描述符
      • 索引域
        记录段描述符在“描述符表”内的位置
      • 表指示位TI
        指示要寻址的描述符表
      • 请求特权层RPL
        反映请求本次存取的特权级别

    2.段描述符

    描述符是保护方式引入的数据结构,8个字节64位,段描述符:“描述”段的属性

    • 段界限(segment limit):用于存储空间保护
    • 基地址(base address):用于形成物理地址
    • 访问权字节(access rights byte):段访问权限:该段当前是否驻留主存、该段所具有的特权层和段类型,用于特权保护
      在这里插入图片描述

    3.操作数寻址过程举例

    • (1)段选择器的TI域指明描述符表,获得描述符表基地址
    • (2)利用索引值指向该段的段描述符
    • (3)从段描述符中取出段基地址,从逻辑地址中取出段内偏移地址
    • (4)基地址与偏移地址相加,得到操作数的线性地址

    在这里插入图片描述

    展开全文
  • 控制寄存器和系统地址寄存器 ppt
  • 为了兼容更古老的CPU,他们的16bit可以分为高八位第八位,如AH,AL。这种灵活的使用方法给编程带来极大的方便,既可以处理16位数据,也能处理8位数据。 这四个数据寄存器除了作为通用寄存器使用外,还有各自的特殊...

    AX BX CX DX

    AX BX CX DX是CPU内部的四个16bit的通用寄存器,常用于存储数据,也叫数据寄存器,一般用于存放参与运算的数据或运算的结果。
    为了兼容更古老的CPU,他们的16bit可以分为高八位和第八位,如AH,AL。这种灵活的使用方法给编程带来极大的方便,既可以处理16位数据,也能处理8位数据。

    这四个数据寄存器除了作为通用寄存器使用外,还有各自的特殊功能:
    AX 寄存器称为累加器,常用于存放算术、逻辑运算中的操作数或结果。另外,所有的I/O指令都要使用累加器与外设接口传递数据。
    BX 寄存器称为基址寄存器,常用来存放访问内存时的地址。
    CX 寄存器称为计数寄存器,在循环、串操作指令中用作计数器。
    DX 寄存器称为数据寄存器,在寄存器间接寻址中的I/O指令中存放I/O端口的地址。

    地址寄存器以及地址形成方式

    上一节提到过8086内存寻址的特殊之处,即8086有20根地址线而CPU是16位的,所以地址形成方式如下:
    段地址x16(10H)(左移4位)+ 偏移地址 = 物理地址

    段地址(0~FFFF 或 0 ~1111 1111 1111 1111) 偏移地址(0 ~ F 或 0 ~1111)
    F230Hx10H C8H = F23C8H (完成这个操作的部件叫做地址加法器。)

    ds es ss cs (段地址寄存器) sp bp si di ip b(偏移地址寄存器)

    CPU怎么区分指令和数据

    8086CPU中在任意时刻,CPU将CS:IP所指向的内容全部当做指令来执行。在内存中指令和数据是没有任何区别的,都是二进制信息,CPU只有在工作的时候,通过不同种类的寄存器才能识别是数据还是指令,将指令寄存器下的信息当做指令,数据寄存器下的信息当做数据。
    CS:IP指向的内存单元中的内容当做指令

    CPU取值执行的过程

    指令是有长度的,不同指令的长度有所不同,一个指令可以由多个字节构成

    1,CPU从CS:IP所指向的内存单元取出指令,存放到 指令缓存器中
    2,IP = IP + 所读指令的长度,从而指向下一条指令
    3,执行指令缓存器中的内容,回到步骤1

    为何要如此设计

    这就要涉及到一对指令:
    call and ret

    code segment
    	start:mov ax,stack
    		  mov ss,ax
    		  mov sp,128
    	
    		  call cpy_Boot
    		  mov ax,1001H
    		  mov ax,1002H
    		  mov ax,1003H
    	 
    cpy_Boot:mov bx,1001h
    		 ........
    		 ret
    

    上面这段示例代码涉及到call与ret,这俩的作用都是转移,call会将call指令这条命令的下一条指令的地址保存起来(具体保存在哪里后面说)然后跳转到后面标识符所标识的程序段所在的地址。ret会将前面保存的地址拿回,并跳转到该地址上去,这就实现了函数跳转的功能。
    这里其实就对应着上面所说的CPU取值执行的过程中的第二部,IP=IP+所读指令的长度。

    修改CS:IP的方式:

    不可以直接通过mov去修改CS:IP,可以通过jmp或者call等跳转指令
    (mov指令可以修改大部分寄存器的值,比如AX、BX、CX、DX、SS、SP、DS,但是不能修改CS、IP的值,8086没有提供这样的功能。)

    在这里插入图片描述

    展开全文
  • 各主流品牌变频器Modbus RTU通信寄存器地址分配表汇总(启动+停止+频率读写等)
  • 威纶通触摸屏系统寄存器功能使用详解及地址列表一览
  • 西门子S高级编程培训间接寻址和地址寄存器PPT课件.pptx
  • Android下读取PHY寄存器地址的工具
  • CNC and PLC Interface-ZH-CN.chm 新代SYNTEC CNC PLC 接口资料。主要讲解了I O C S A R 寄存器的定义及如何相互交互。
  • 西门子PLC基于MODBUS RTU通信协议的寄存器地址对应关系及错误代码
  • 80386控制寄存器和系统地址寄存器参照.pdf
  • 寄存器地址和寄存器位之间的关系? 答:在汇编语言中,分为位地址和字地址,8位为一个字地址,题中32位即4个字地址,10个寄存器为40个地址。

    寄存器地址和寄存器位之间的关系?

    答:8位为一个字节,题中32位即4个字节,10个寄存器为40个地址。 

    展开全文
  • 地址指针寄存器:SP,BP 变址寄存器:SI,DI 1, 指针寄存器:主要提供全部或部分偏移量 16位: SP堆栈指针寄存器 BP基址指针寄存器 SP:存放堆栈段中栈顶单元的偏移量 BP:存放堆栈段中某个单元的全部或部分偏移量...
  • 就是容量和地址寄存器。MAR的位数以及数据寄存器MDR的位数的关系。 总的容量等于2的mar位数的n次方乘以mdr的位数 因为地址寄存器n位二进制代码。可以表示的地址单元的个数是二的n次方。这里就是我...
  • 地址寄存器、偏移地址寄存器

    千次阅读 2020-11-15 12:43:19
    1. 数据寄存器:AX,BX,CX,DX 2. 地址寄存器,看图找规律
  • 寄存器PLC地址寄存器modbus协议地址

    万次阅读 多人点赞 2017-10-24 22:25:28
    寄存器PLC地址指存放于控制器中的地址,这些控制器可以是PLC,也可以使触摸屏,或是文本... 寄存器modbus协议地址指通信时使用的寄存器地址,在实际编程中,由于寄存器PLC地址前缀的区分作用,所以只需说明后4位数...
  • STM32寄存器的简介、地址查找,与直接操作寄存器

    万次阅读 多人点赞 2019-01-11 11:15:15
    寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。  简单来说,寄存器就是存放东西的东西。从名字来看,跟火车站寄存行李的地方好像是有关系的。只不过火车站行李寄存处,存放的行李;寄存器...
  • SPI寄存器

    2020-11-12 22:43:59
    SPI接口寄存器地址及功能如表所列。  表 SPI接口寄存器 欢迎转载,信息来源维库电子市场网(www.dzsc.com) 来源:ks99
  • 0x0000 0000表示第一个地址字节,代码使用这个16进制时,指针会指向这个物理地址,对4字节的GPIO控制单元来说,这4个字节的物理地址就叫寄存器,当我们把IO口配置的数据写入这个寄存器地址时,过程如下:(1)cpu...
  • GPIO寄存器地址怎么寻找?

    千次阅读 2022-05-31 21:03:13
    由上图知,GPIOC的地址就是在这个PERIPH_BASE地址的基础上偏移得到得。我们可以一步一步的计算一下GPIOC的地址是多少... CRL寄存器是结构体的第一个变量,所以它的偏移量就为0x00,所以CRL寄存器地址为:0x4001 1000
  • 一、物理地址空间、 二、外围设备寄存器、 三、外围设备寄存器物理地址 映射到 虚拟地址空间、
  • PC寄存器

    千次阅读 2020-10-07 13:13:56
    这里,并非是广义上所指的物理寄存器,或许将其翻译为PC计数器(或指令计数器)会更加贴切(也称为程序钩子,指向程序中的指令行号地址),并且也不容易引起一些不必要的误会。JVM中的PC寄存器是对物理PC寄存器的一...
  • modbus的寄存器地址

    千次阅读 2020-06-11 15:08:22
    modbus的地址,其实modbus的规范里面写的很明确了,但是最近还有人问我,其实这个很简单的。00001至09999是离散输出(线圈)-----Coil status10001至19999是离散输入(触点)-----Input status30001至39999是输入寄存器...
  • 繁易触摸屏系统寄存器大全
  • 寄存器地址总线

    千次阅读 2014-01-10 09:45:45
    寄存器: cpu中可以存储数据的器件,一个CPU钟可以有多个寄存器, 不同的寄存器有不同的代号,作用存放的数据也不同 word: 2 byte 一个字==2个字节 汇编语言不区分大小写 mov ax,18, 将数据18送入到...
  • 在CPU中至少要有六类寄存器:指令寄存器(IR)、程序计数器(PC)、地址寄存器(AR)、数据寄存器(DR)、累加寄存器(AC)、程序状态字寄存器(PSW)。这些寄存器用来暂存一个计算机字,其数目可以根据需要进行扩充...
  • 地址空间是一个进程可用于寻址内存的一套地址集合。每个进程都有一个自己的地址空间,并且这...方法:基址寄存器与界限寄存器使用一种简单的动态重定位,把每个进程的地址空间映射到物理内存的不同部分。当使用基址...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 359,338
精华内容 143,735
关键字:

寄存器和地址