精华内容
下载资源
问答
  • 寻址寄存器
    千次阅读
    2021-09-28 20:23:34

    概念

    寻址方式就是处理器根据指令中给出的地址信息来寻找有效地址的方式,是确定本条指令的数据地址以及下一条要执行的指令地址的方法。

    常用寻址方式

    立即寻址

    指令中在操作码字段后面的部分不是通常意义上的操作数地址,而是操作数本身立即寻址是获取操作数最快的方式

    直接寻址

    指令中在操作码字段后面的部分是操作数的地址

    直接寻址和立即寻址的区别

    立即寻址:是把一个“常数”送到指定位置。
    直接寻址:是把一个“变量”送到指定位置。

    间接寻址

    指令中给出的地址是操作数地址的地址

    寄存器寻址

    指定的寄存器中存放着操作数本身。

    寄存器间接寻址

    指定的寄存器中存放的不是操作数,而是操作数的地址。

    不常用的寻址方式

    基址寻址

    将基址寄存器 Rb 的内容与指令中给出的位移量 D 相加,形成操作数有效地址,即 EA=(Rb)+D。

    相对寻址

    相对寻址是基址寻址的一种变通,由程序计数器提供基准地址,指令中的地址码字段作为位移量 D,两者相加后得到操作数的有效地址,即 EA=(PC)+D。

    变址寻址

    把 CPU 中某个变址寄存器的内容与偏移量 D 相加来形成操作数有效地址。

    隐含寻址

    这种类型的指令,不是明显地给出操作数的地址,而是在指令中隐含着操作数的地址。

    例题

    1. 在汇编指令中,操作数在某寄存器中的寻址方式称为(C)寻址。
      A.直接 B.变址 C.寄存器 D.寄存器间接

    2. 在汇编指令中,操作数包含在指令中的寻址方式称为(B)寻址。
      A.直接 B.立即 C.寄存器 D.寄存器间接

    3. 在汇编指令中,操作数的地址在某寄存器中的寻址方式称为(D)寻址。
      A.直接 B.立即 C.寄存器 D.寄存器间接

    更多相关内容
  • 寻址寄存器阵列并行处理图像.zip
  • 使用可寻址寄存器阵列执行直方图.zip
  • 67寻址寄存器阵列并行处理图像_new.pdf
  • 121使用可寻址寄存器阵列执行直方图_new.pdf
  • 汇编语言基础:寄存器寻址方式

    千次阅读 2022-06-06 08:31:45
    寄存器分类AX、BX、CX、DX 一般用来存放数据,所以被称为数据...SI和DI功能和BX相同,可以用于间接寻址。主要用于存放存储单元在段内的偏移量。但是SI、DI不可分割成8位寄存器。在16为构架中,16位的指针只能访问64k


    1. 寄存器

    以16位8086构架为主说下寄存器的名称和用途,并在16位基础上说明一下32位、64位的寄存器。

    寄存器分类

    • 通用寄存器
      • 数据寄存器(AX,BX,CX,DX)
      • 指针寄存器(SP,BP)
      • 索引寄存器(SI,DI)
    • 段寄存器(CS,DS,SS,ES)
    • 控制寄存器
      • 指令指针寄存器(IP)
      • 标志寄存器(FLAG)

    16位的8086处理器共14个寄存器。32位和64位的x86,x64构架分别对寄存器进行了扩充。

    1.1 通用寄存器

    通用寄存器虽然分为了三类,但是实际上对于比较新的cpu这些寄存器功能都差不多,RISC等构架通用寄存器就是直接采用数字编号的,没有再细分功能。
    当然习惯上还是把不同寄存器用于不同的用途,这也是ABI的一个重要部分。比如通常默认AX就是函数返回值,有的系统默认优先把SI,DI作为函数参数。

    1.1.1 数据寄存器

    AX、BX、CX、DX 一般用来存放数据,所以被称为数据寄存器。

    • AX(Accumulator Register) :累加寄存器,主要用于输入/输出和大规模的指令运算。常用于四则运算,函数返回值等。
    • BX(Base Register):基址寄存器,常用于在相对寻址(基址+偏移,见本文后续章节)中存储基址(基础访问地址)。也常用于四则运算。
    • CX(Count Register):计数寄存器,CX 寄存器在迭代的操作中会循环计数。
    • DX(Data Register):数据寄存器,也用于输入/输出操作。还与AX寄存器一起使用,用于涉及大数值的乘法和除法运算。

    现代CPU的AX,BX,CX,DX几个寄存器在功能并无区别,最常见的用途是存储操作数,函数参数和运算结果等信息。
    比如通常函数返回值默认都保存在AX中。

    8位寄存器

    AX,BX,CX,DX在8086中为16位寄存器,每个寄存器的高位和低位均可以作为8位寄存器访问。

    • AX寄存器可以分为两个独立的8位的AH和AL寄存器
    • BX寄存器可以分为两个独立的8位的BH和BL寄存器
    • CX寄存器可以分为两个独立的8位的CH和CL寄存器
    • DX寄存器可以分为两个独立的8位的DH和DL寄存器

    寄存器名称通常不区分大小写,汇编语言中通常ax,bx,cx,dx和AX,BX,CX,DX相同。

    x32构架

    x32架构中,通用寄存器都在16位版本的基础上扩展成为32位版本,名字加了E作为前缀。

    • EAX(低位为AX):通用寄存器
    • EBX(低位为BX):通用寄存器
    • ECX(低位为CX):通用寄存器
    • EDX(低位为DX):通用寄存器

    为了兼容16位模式程序,访问AX,BX,CX,DX相当于访问32位寄存器的低16位,32位寄存器的高16位不可单独访问。

    x64构架

    在x64架构中,通用寄存器都扩展成为64位版本,名字也进行了升级。

    • RAX, RBX, RCX, RDX
    • R8-R15:x64架构引入的8个新的通用寄存器

    为了兼容32位模式程序,使用上面的名字仍然是可以访问的,相当于访问64位寄存器的低32位。高位32位模式不可访问。

    1.1.2 指针寄存器(Pointer Register)

    • SP(Stack Pointer):栈指针,栈顶指针,只能访问栈顶。
    • BP(Base Pointer):基础指针,栈寄存器上的偏移量,用来定位栈上变量。用它可直接存取堆栈中的数据。

    指针寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。

    • x32构架下指针寄存器名称为ESP,EBP。是32位通用寄存器。低位可以用SP,BP访问。
    • x64构架下指针寄存器名称为RSP,RBP。是64位通用寄存器。低位可以用ESP,EBP访问。

    1.1.3 索引(变址)寄存器

    • SI(Source Index):源索引寄存器。变址寄存器。常用于在变址寻址(基址+变址,见本文后续章节)中存储变址,也常用来拷贝源字符串。
    • DI(Destination Index):目的索引寄存器。目标变址寄存器。常用于在变址寻址(基址+变址,见本文后续章节)中存储变址。也常用来复制到目标字符串。

    SI和DI功能和BX相同,可以用于间接寻址。主要用于存放存储单元在段内的偏移量。但是SI、DI不可分割成8位寄存器。

    SI和DI两个经常搭配一起使用,执行字符串的复制等操作。有的系统默认优先把SI,DI作为函数参数。

    • x32构架下指针寄存器名称为ESI,EDI。低位地址分别对应SI和DI。
    • x64构架下指针寄存器名称为RSI,RDI。低位地址分别对应ESI和EDI。

    1.2 段寄存器

    在16为构架中,16位的指针只能访问64k的内存,为了访问更多的内存,使用段寄存器和指针配合访问内存地址。(x32,x64都采用段寄存器+指针地址方式访问内存)。

    x86构架cpu,所有内存地址都是段地址+偏移方式引用。cpu内部根据段地址和偏移地址计算物理地址。
    16位系统中物理地址=段地址*16+偏移地址 通常写作段寄存器:偏移

    • CS(Code Segment):代码段寄存器。CS:IP表示要执行代码的内存地址。
    • DS(Data Segment):数据段寄存器。DS:偏移量是数据的内存地址。
    • SS(Stack Segment):栈段寄存器。SS:SP是栈顶内存地址。
    • ES(Extra Segment):扩展段寄存器。扩展的数据段寄存器。

    计算机启动后会自动找到地址CS:IP地址的指令代码运行,运行后IP自动偏移下一个指令。
    数据地址默认段寄存器为DS。栈默认段寄存器为SS。

    x32和x64构架段寄存器名称未变,但是扩展了两个寄存器。

    • FS(Extra Segment):数据段寄存器。扩展的数据段寄存器。
    • GS(Extra Segment):数据段寄存器。扩展的数据段寄存器。

    1.3 控制寄存器

    • IP(Instruction Pointer):指令指针。是存放下次将要执行的指令在代码段的偏移量。即CS:IP执行下一条要执行的命令。

    • 32位CPU把指令指针扩展到32位,并记作EIP。EIP的低16位与IP作用相同。

    • 64位CPU把指令指针扩展到64位,并记作RIP。RIP的低16位与EIP作用相同。

    在具有预取指令功能的系统中,下次要执行的指令通常已被预取到指令队列中,除非发生转移情况。

    2. 寄存器寻址

    • cpu执行的指令只有一种寻址方式,即CS:IP。(x32上地址为CS:EIP,x64上地址为CS:RIP
    • 数据也就是指令的操作数有七种寻址方式。
      • 立即寻址:立即数
      • 寄存器寻址:寄存器中的数
      • 内存寻址(根据段地址和给定地址找到数据)
        • 直接寻址:直接指定地址
        • 间接寻址:寄存器中指定地址
        • 相对寻址:寄存器中地址+偏移量
        • 变址寻址:寄存器中地址+变址寄存器中地址
        • 相对变址寻址:寄存器中地址+变址寄存器中地址+偏移量

    2.1 立即数

    常数实际上是直接放在代码中的,会在加载指令的时候,自动找到。

    mov AX,80h   ; 80h就被称为立即数
    

    2.2 寄存器寻址

    数据存储在寄存器中,直接用寄存器名称调用。

    mov AX,BX
    

    寄存器寻址速度非常快。数据在寄存器中,所以不存在段地址。

    2.3 内存寻址

    2.3.1 直接寻址(指令中硬编码地址)

    操作数存放在内存中,地址在指令中直接给出。

    mov AX,[123H]
    

    数据段的段寄存器默认为DS。

    如果要指定访问其它段内的数据,可在指令中用段前缀的方式显式地书写出来。

    mov BX,ES:[123H]
    

    2.3.2 间接寻址(地址指针)

    操作数在内存中,地址用SI、DI、BX和BP等寄存器之一来指定。

    mov BX,[di]
    mov AX,[si]
    

    地址用SI、DI和BX等指定时,缺省的段寄存器为DS;
    地址用BP来指定时,缺省的段寄存器为SS(即:堆栈段)。

    2.3.3 相对寻址(基址+偏移)

    操作数在内存中,地址是一个基址寄存器(BX、BP)或变址寄存器(SI、DI)的内容和一个偏移量之和。

    mov BX,[si+100H]
    

    若地址用SI、DI、BX等加偏移量计算,缺省的段寄存器为DS;
    若地址用BP加偏移量计算,缺省的段寄存器为SS。

    2.3.4 变址寻址(基址+变址)

    操作数在内存中,地址是一个基址寄存器(BX、BP)和一个变址寄存器(SI、DI)的内容之和。

    mov BX,[BX+SI]
    
    • 基址寄存器为BX,缺省的段寄存器为DS。
    • 基址寄存器为BP,缺省的段寄存器为SS。

    2.3.5 相对变址寻址(基址+变址+偏移)

    操作数在内存中,地址是一个基址寄存器(BX、BP)的值、一个变址寄存器(SI、DI)的值和一个偏移量之和。

    mov AX,[BX+si+200H]   ;mov AX,200h[BX][si]或者mov AX,200h[si][BX]也是对的,多种写法
    
    • 基址寄存器为BX,缺省的段寄存器为DS。
    • 基址寄存器为BP,缺省的段寄存器为SS。


    持续更新及修订中。

    未经允许请勿转载。

    展开全文
  • 4.4 数据的寻址方式4.4.1 指令和数据...AX表示16位寄存器,AH、AL表示其高低字节,可单独使用。 4.4.3 立即寻址 操作数就在指令中,紧跟在操作码后面,作为指令一部分存放在内存的代码段中,该操作数为立即数,这种寻址

    4.4.1 指令和数据的寻址方式

    寻址方式:确定本条指令的数据地址或下一条要执行的指令地址的方法。
    在这里插入图片描述

    4.4.2 数据寻址方式说明

    目的操作数和源操作数均可采用不同的寻址方式;
    两个操作数的类型必须一致。
    AX表示16位寄存器,AH、AL表示其高低字节,可单独使用。

    4.4.3 立即寻址

    操作数就在指令中,紧跟在操作码后面,作为指令一部分存放在内存的代码段中,该操作数为立即数,这种寻址方式称为立即寻址方式。数据通常采用补码的形式存放。常用于给寄存器赋初值(作用);
    在这里插入图片描述
    举例: MOV AX , 34EAH;
    在这里插入图片描述
    注意
    ①立即数可以送到寄存器、一个存储单元(8位)、两个连续的存储单元(16位)中去;
    立即数只能作源操作数,不能作目的操作数;
    ③以A~F打头的数字,前面必须加数字0
    如下指令
    MOV AL,3400H ×,前后格式不匹配
    MOV AX,34H √,等价于 MOV AX,0034H
    MOV 87H,BX ×,立即数不能作为目的操作数
    MOV AX,F98AH ×,应为 MOV AX,0F98AH

    设16位计算机中,存储器宽度为16位,一条指令占据一个机器字。
    已知操作码为6位,目的操作数为寄存器编号,占4位;
    源操作数寻址方式为 立即数寻址 ,以补码整数形式给出,
    则该指令立即数寻址方式的数值范围是多少?
    

    在这里插入图片描述
    操作码占6位,目的操作数据占4位,那么立即数(源操作数)占6位,按补码的形式,第一位为符号位,所以数值范围为 -32~31 。

    立即寻址方式的
    优点:指令已经提供操作数,无需再次访问存储器。提供操作数最快
    缺点
    ①操作数为指令一部分,不能修改,适用于给某一寄存器或存储单元赋初值等操作。
    ②指令中A的位数限制了这类指令所表述的立即数的范围。、

    4.4.4 直接寻址

    存储单元有效地址EA(即:操作数的有效地址)直接由指令给出。
    作用:实现对存储单元的读/写操作。
    特点:
    访问存储器次数较少;
    操作数地址在指令中,灵活性较差。
    操作数A的位数限制了操作数的寻址范围。

    4.4.5 (存储器)间接寻址

    操作数所在内存单元的地址通过存储器间接给出。
    优点:实现简便,对编程带来较大的灵活性,当操作数地址改变时,只需修改间接地址指示器的单元内容,而不必修改指令,原指令的功能照样实现。这给编程带来很大方便。
    多次访问内存,增加了指令的执行时间;占用主存储器单元多。

    4.4.6 寄存器寻址

    操作数包含在寄存器中,寄存器的名称由指令指定。
    常用于寄存器之间传递数据。优势是速度快。注意源操作数的长度必须与目的操作数一致

    4.4.7 寄存器间接寻址

    操作数所在内存单元的地址通过寄存器间接给出。
    作用:有效地址可以存放在寄存器中。

    4.4.8 相对地址

    操作数的有效地址是程序计数器PC的内容与n位位移量
    位移量的概念:在寄存器间接寻址给出的偏移地址上,加上一个相对偏移量。位移量是一个带符号的补码机器数。
    可有效缩短地址的长度 。
    兼具灵活性,只与PC相对位置有关,与绝对地址无关。

    4.4.9 相对基址寻址

    这种寻址方式下,EA是由两部分组成的,基址寄存器BX或BP的内容加上偏移量DISP。

    4.4.10 相对变址寻址

    这种寻址方式下,EA是由两部分组成的,变址寄存器的内容加上偏移量DISP。

    与基址寻址类似。基址寻址,往往变化的是形式地址;变址寻址,往往形式地址不变,变化的是变址寄存器。

    4.4.11 相对基址变址寻址

    这种寻址方式下,EA是由三部分组成的,基址寄存器BX或BP的内容加上变址寄存器的内容,以及位移量的和。

    展开全文
  • 直接寻址,指令中直接放地址: MOV A, 50H 把internal ram上,地址为80H单元里的数据送进A,假设80H地址里放的数据是01,那么最后A里的数据就是01 ...寄存器寻址,数据存于寄存器中 MOV A, R0 把R0中的数据放入A中 ...

    立即数寻址,指令中放的是数据
    MOV A, #01H
    把数据01H放入A中

    直接寻址,指令中直接放地址:
    MOV A, 50H
    把internal ram上,地址为80H单元里的数据送进A,假设80H地址里放的数据是01,那么最后A里的数据就是01

    间接寻址,地址存于寄存器中
    MOV A,@R0
    R0中存放的是地址值,把这个地址值中的数据放入A

    寄存器寻址,数据存于寄存器中
    MOV A, R0
    把R0中的数据放入A中

    在这里插入图片描述
    在这里插入图片描述
    图片内容转载自:http://jyhshin3.blogspot.com/search/label/8051

    展开全文
  • 51单片机寄存器详解

    2018-07-25 10:12:24
    51单片机寄存器详解,对通用51单片机内部寄存器资源进行了详细的介绍,可以作为学习51单片机的辅助参考手册
  • 寄存器间接寻址(register indirect addressing) 操作数在存储器中,其有效地址EA存放在某个寄存器中。寄存器的使用在16位寻址和32位寻址时不一样。 (1)16位寻址 寄存器 有效地址存放在SI, DI, BX, BP中。 如果...
  • 51单片机常用寄存器速查表,方便初学者查询不同的寄存器, 51单片机常用寄存器速查表,方便初学者查询不同的寄存器
  • 具体操作时的寻址 简单的说就是如何给他地址,是直接给呢还是用寄存器 直接寻址方式(direct addressing) []里没有寄存器 寄存器间接寻址方式(register indirect) []只有一个寄存器 寄存器相对寻址方式(register ...
  • 寻址方式

    2022-04-09 19:12:51
    软考,寻址方式,立即寻址方式,直接寻址方式,间接寻址方式,寄存器寻址方式,寄存器间接寻址方式
  • 文章目录指令格式指令中的(目标 / 源)操作数来源一、立即数寻址二、寄存器寻址三、存储器寻址3.1 直接寻址3.2 寄存器间接寻址3.3 基址寻址3.4 变址寻址3.5 基址变址寻址3.6 带位移的基址加变址寻址方式3.7 小结---...
  • 寻址空间寄存器组R0~R7,累加器ACC,寄存器B,数据指针DPTR,进位Cy等,其R0~R7由操作码低三位的8种组合表示,A,B,C,DPTR则隐含在操作码中。指令中含有操作数的直接地址,该地址指出了参与操作的数据所在的字节地址...
  • 简单说一下寄存器寻址

    千次阅读 2021-03-21 09:00:13
    对于初学的朋友来说,寄存器寻址的几个常见的方式,理解起来还是比较麻烦的。现在尽量给大家说明白一点。 所谓寻址,就是要找存放某个东西的位置。 以下用日常生活中的情形来打比方,虽然不是很精准,但还是...
  • 寄存器寻址入门

    2021-07-29 21:22:34
    寄存器寻址指令的地址码部分给出某一个通用寄存器的编号Ri,这个指定的寄存器中存放着操作数.其寻址过程如图5.3所示, 图中的IR表示指令寄存器,它的内容是从主存中取出的指令.操作数S与寄存器Ri的关系为: 这种...
  • 七种寻址方式(寄存器间接寻址方式)

    万次阅读 2018-01-22 19:12:09
    操作数在存储器中,操作数的有效地址用SI、DI、BX和BP等四个寄存器之一来指定,称这种寻址方式为寄存器间接寻址方式。该寻址方式物理地址的计算方法如下: 寄存器间接寻址方式读取存储单元的原理如图所示。 ...
  • 以指令中指定寄存器的内容作为地址,而该地址单元的内容才是操作数,是一种二次寻址方式,所以称作间接寻址。)根据地址找到所需要的操作数,并完成相应的操作。此类指令为单字节指令,操作码的最低位表示采用。个...
  • 寻址范围的概念怎么理解? 例如,地址线20根,数据线16根,按字节寻址为什么是1MB,而不是2MB? 按字寻址为什么是512KB,而不是1MB? 提问如后者的考生思维方式基本都是在算寻址范围时马上将数据线的位数算进去。 ...
  • 这就很尴尬,因为这个原因,CPU使用地址加法器,让自己的输出从16位变成了20为,从而使CPU的寻址达到最大化,地址加法器的做法是取1个16位寄存器,将每个bit值,依次放到16跟地址总线中,这个寄存器里的值,就叫做段...
  • 计算机只容许使用bx、si、di、bp寄存器做间接和相对寻址 其中bx为基址存储器,si、di为变址存储器   内存寻址方式:确定访问内存存储单元偏移地址的方式称为寻址方式。 直接寻址:[偏移地址] 寄存器间接寻址:...
  • 一、立即寻址方式 操作数作为指令的一部分而直接写在指令中,这种操作数称为立即数,这种寻址方式也就称为立即数寻址方式。 立即数可以是8位、16位或32位,该数值紧跟在操作码之后。如果立即数为16位或32位,...
  • 51手记之寄存器手记之寄存器&寻址寻址篇刚开始练51时就用C语言,现在想再加强一下汇编,所以不得不对单片机的硬件结构,特别是地址空间的分配方面详细的做一下了解了。 于是决定拿起课本北航的《智能化测量控制...
  • 寄存器间接寻址

    千次阅读 2021-01-06 14:34:58
    某指令采用寄存器间接寻址访问内存操作数,则在它执行时需要访问内存2次。
  • FreeModbus保持寄存器

    千次阅读 2019-04-08 21:39:22
    保持寄存器的访问属性为读写 对保持寄存器的操作包括:读保持寄存器(0x03)、写单个保持寄存器(0x06)、写多个保持寄存器(0x10)、读写多个保持...因此,寻址寄存器1-16 为0-15。 将响应报文中的寄存器数据...
  • ARM指令的寻址方式-寄存器寻址.pdf 学习资料 复习资料 教学资源
  • 单片机要如何寻址

    2021-05-24 09:37:07
    当前,单片机种类很多...对于单片机指令的学习,寻址方式的学习是其中的一个重点和难点,寻址方式的正确理解不仅对汇编编程至关重要,而且有助于对于单片机内核结构(如RISC和CISC的区别)、存储结构的更深刻理解。但...
  • MCS-51单片机规定工作寄存器的R0、R1做为间接寻址寄存器。用于寻址内部或外部数据存储器的256个单元。为什么会是256个单元呢?我们知道,R0或者R1都是一个8位的寄存器,所以它的寻址空间就是2的八次方=256。例:MOV ...
  • ARM指令的寻址方式-寄存器间接寻址.pdf 学习资料 复习资料 教学资源

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 69,950
精华内容 27,980
关键字:

寻址寄存器