精华内容
下载资源
问答
  • 2、指令寻址与数据寻址指令寻址思维导图顺序寻址跳跃寻址数据寻址直接寻址间接寻址寄存器寻址寄存器间接寻址隐含寻址立即寻址总结偏移寻址基址寻址变址寻址相对寻址堆栈寻址比较 指令寻址 思维导图 顺序寻址 由于...

    指令寻址

    思维导图

    在这里插入图片描述

    顺序寻址

    在这里插入图片描述

    由于主存按字编址,所以指令地址每次+1;0-1-2-3-4-5-6-7-8

    在这里插入图片描述

    由于指令字长=2B,主存按字节编址,所以每条指令间隔地址为2;此时PC+1实际上是加了俩个地址;

    在这里插入图片描述

    由于采用变长指令字结构,所以指令字长不确定;当读取指令时,先通过操作码判断是几地址指令,然后在将剩余的操作数取出。此时每条地址指令间隔不定。

    跳跃寻址

    在这里插入图片描述

    数据寻址

    在这里插入图片描述

    直接寻址

    在这里插入图片描述

    间接寻址

    在这里插入图片描述

    寄存器寻址

    在这里插入图片描述

    寄存器间接寻址

    在这里插入图片描述

    隐含寻址

    在这里插入图片描述

    立即寻址

    在这里插入图片描述

    总结

    在这里插入图片描述

    偏移寻址

    在这里插入图片描述

    基址寻址

    在这里插入图片描述

    1、用专用的基址寄存器保存程序首地址;或者用通用寄存器指明程序首地址(需要在逻辑地址中取几位指明用哪个通用寄存器作为基址寄存器);
    2、物理地址 = 逻辑地址 + 基址地址

    在这里插入图片描述

    变址寻址

    在这里插入图片描述

    与基址寻址的区别:
    1、基址寄存器只能由操作系统管理用户不能管理;而变址寄存器用户可以管理
    2、变址寄存器中的内容作为偏移量,形式地址作为基地址;(与基址寻址刚好相反)

    在这里插入图片描述
    PS:基址&变址复合寻址
    在这里插入图片描述

    相对寻址

    在这里插入图片描述
    在这里插入图片描述

    1、当程序内代码片段移动时,跳转指令采用直接寻址会出现错误;若采用相对寻址,则不论怎么移动都只与PC有关。
    2、实际位置与PC指针与偏移量有关
    3、硬件如何实现数的“比较”?
    在这里插入图片描述

    堆栈寻址

    在这里插入图片描述

    在这里插入图片描述

    硬堆栈:不需要访存
    软堆栈:每次访问都需要进行访存

    比较

    在这里插入图片描述

    展开全文
  • 间接寻址寄存器寻址的比较间接寻址优点 扩大了操作数的寻址范围 便于编制程序,方便地完成子程序的返回 缺点 访存次数多,执行时间长 寄存器寻址优点 无须访存,减少执行时间 指令字短,节省存储空间 基址...

    间接寻址和寄存器寻址的比较

    间接寻址

    优点

    扩大了操作数的寻址范围
    便于编制程序,方便地完成子程序的返回

    缺点

    访存次数多,执行时间长

    寄存器寻址

    优点

    无须访存,减少执行时间
    指令字短,节省存储空间

    基址寻址与变址寻址的比较

    基址寻址主要用于为程序或数据分配存储空间,故基址寄存器的内容通常由操作系统或管理程序确定,在程序运行过程中,值是不可变的,而指令字中的地址码是可变的。

    变址寻址中,变址寄存器的内容是用户自己设定的,在程序运行过程中是可变的,而指令字中的地址码是不可变的。编制寻址主要用于处理数组等问题,并且特别适合编制循环程序。

    展开全文
  • 计算机只容许使用bx、si、di、bp寄存器做间接和相对寻址 其中bx为基址存储器,si、di为变址存储器   内存寻址方式:确定访问内存存储单元偏移地址的方式称为寻址方式。 直接寻址:[偏移地址] 寄存器间接寻址:...

    计算机只容许使用bx、si、di、bp寄存器做间接和相对寻址

    其中bx为基址存储器,si、di为变址存储器

     

    内存寻址方式:确定访问内存存储单元偏移地址的方式称为寻址方式。

    直接寻址:[偏移地址]

    寄存器间接寻址:[基址寄存器/变址寄存器]

    寄存器相对寻址:[基址寄存器/变址寄存器+偏移量值]

    基址变址寻址:[基址寄存器+变址寄存器]

    相对基址变址寻址:[基址寄存器+变址寄存器+偏移量值]

    注意:

    a 格式上的注意,正确区分寻址方式

    b 五种寻址中,均可以使用段前缀     //ds:[0001H]

    c masm编译器编译时,代码中的直接寻址必须采用段前缀的形式

     

    指针寄存器包括堆栈寄存器SP(stack pointer)和基数指针寄存器BP(base pointer),变值寄存器包括源变址寄存器SI(source index)和目的变值寄存器DI(destination index)。这4个寄存器都是16位寄存器,这些寄存器在运算过程中也可以用来存放操作数(只能以字为单位),但经常的用途是在段内寻址时提供偏移地址SP,BP一般与段寄存器SS联用,以确定堆栈寄存器中某一单元的地址,SP用以指示栈顶的偏移地址而BP可作为堆栈区中的一个基地址,用以确定在堆栈中的操作数地址。SI,DI一般与段寄存器DS联用,以确定数据段中某一存储单元的地址,SI,DI具有自动增量和自动减量的功能,这一点使在串操作指令中用做变址非常方便,SI作为隐含的源变址DS联用,DI作为隐含的目的变址和ES连用,从而达到在数据段和附加段中寻址的目的。

     

    BX+SI
    BX+DI
    BP+SI
    BP+DI

     

    1. 直接寻址

    偏移地址值直接出现在执行代码中。

    mov 寄存器,[偏移地址]
    mov [偏移地址],寄存器

     

    2. 寄存器间接寻址

    偏移地址通过寄存器取得使用

    mov 寄存器,[寄存器]
    mov [寄存器],寄存器

    实例:

    assume cs:daima
    daima segment
        mov ax,2000H
        mov ds,ax
    
        mov ax,1122H
        mov cx,3344H
    
        mov bx,0000H
        mov [bx],ax    ;将ax值放入ds 2000:0000
    
        mov bx,0002H
        mov [bx],cx    ;将cx值放入ds 2000:0002
    
        mov ax,4c00H
        int 21H
    daima ends
    end

     

    3. 寄存器相对寻址

    偏移地址值通过[寄存器+偏移量值]的形式运算后获得。

    mov 寄存器,[寄存器+偏移量值]
    mov 寄存器,ds:[寄存器+偏移量值]
    mov [寄存器+偏移量值],寄存器
    mov ds:[寄存器+偏移量值],寄存器

    实例1:

    assume cs:code,ds:data
    data segment
    	db 'abc'
    data ends
    
    code segment
    start:
        mov ax,data
        mov ds,ax
    
        mov bx,0000H
        mov ah,[bx+0000H]
    
        mov al,[bx+0001H]
     
        mov ax,4c00H
        int 21H
    code ends
    end start

    实例2: 

    ;交换ds中偏移地址1和4,2和5,3和6的数据
    assume cs:code,ds:data
    data segment
    	db 'abcdef'
    data ends
    
    code segment
    start:
        mov ax,data
        mov ds,ax
    
        mov bx,0000H
    
        mov cx,3
        A:
            mov ah,ds:[bx]
            mov al,ds:[bx+0003H]
            mov [bx+0003H],ah
            mov [bx],al
            inc bx
        loop A
     
        mov ax,4c00H
        int 21H
    code ends
    end start

    实例3: 

    assume cs:code,ds:data
    data segment
    	db 'abc'
        db 0H,0H,0H
    data ends
    
    code segment
    start:
        mov ax,data
        mov ds,ax
    
    	mov si,0000H
    	mov di,0003H
    
        mov cx,3
        A:
            mov ah,[si]
            mov [di],ah
    
            inc si
            inc di
        loop A
    
        mov ax,4c00H
        int 21H
    code ends
    end start

     

    4. 基址变址寻址方式

    偏移地址值通过[基址寄存器+变址存储器]的形式运算后获得。

    格式:

    mov 寄存器,[基址寄存器+变址寄存器]
    mov [基址寄存器+变址寄存器],寄存器

    例如:

    mov ax,[bx+si]
    mov ax.[bx+di]
    ;不可以这样
    mov ax,[si+di]

    实例:

    ;累计相加偏移地址0002H 3次。
    assume cs:code,ds:data
    data segment
    	db 1H,1H,2H
    data ends
    
    code segment
    start:
        mov ax,data
        mov ds,ax
    
        mov ah,00H
    
        mov bx,0000H
        mov si,0002H
    
        mov cx.3
        A:
            mov al,[bx+si]
            add ah,al
    
            inc bx
            dec si
        loop A
     
        mov ax,4c00H
        int 21H
    code ends
    end start

     

    5. 相对基址变址寻址

    偏移地址值通过[基址寄存器+变址寄存器+偏移量值]的形式运算后获得。

    格式:

    mov 寄存器,[基址寄存器+变址寄存器+偏移量值]
    mov [基址寄存器+变址寄存器+偏移量值],寄存器

    实例:

    ;取出1H、3H放入ah、al
    assume cs:code,ds:data
    data segment
    	db 0H,0H,0H,1H,2H,3H
    data ends
    
    code segment
    start:
        mov ax,data
        mov ds,ax
    
        mov bx,0000H
    
        mov si,0001H
        mov ah,[bx+si+0002H]
    
        mov di,0003H
        mov al,[bx+di+0002H]
     
        mov ax,4c00H
        int 21H
    code ends
    end start

     

     

     

     

    展开全文
  • 直接寻址,指令中直接放地址: 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

    展开全文
  • 存储器寻址方式:( 直接寻址方式,寄存器间接寻址方式,变址和基址寻址方式,基址变址寻址方式) 串操作寻址方式 I/O端口寻址方式8086采用的是变字长指令格式,指令长度为1~6个字节,第一个字节包含操作码,第二...
  • 寄存器间接寻址(register indirect addressing) 操作数在存储器中,其有效地址EA存放在某个寄存器中。寄存器的使用在16位寻址和32位寻址时不一样。 (1)16位寻址 寄存器 有效地址存放在SI, DI, BX, BP中。 如果...
  • 七种寻址方式(立即寻址寄存器寻址)

    万次阅读 多人点赞 2016-10-04 10:24:34
    七种寻址方式(立即寻址寄存器寻址) 一、立即寻址方式 操作数作为指令的一部分而直接写在指令中,这种操作数称为立即数,这种寻址方式也就称为立即数寻址方式。 立即数可以是8位、16位或32位,该数值...
  • 数据寻址的方式 总而言之,数据寻址就是通过地址查找操作数的方法 立即数寻址 寄存器寻址寄存器的就是寄存器寻址 简单快捷 还有段寄存器比如说,ds,cs,ss 存储器寻址 ...
  • 寻址模式寄存器

    2019-10-01 07:00:10
    一、寄存器 总共同拥有14个16位寄存器,8个8位寄存器 通用寄存器: 数据寄存器: AH(8位) AL(8位) AX(16位) (AX和AL又称累加器) BH(8位) BL(8位) BX(16位) (BX又称基址寄存器,唯一作为存储器指针使用寄存器) ...
  • 关于间接寻址分为存储器间接寻址和地址寄存器间接寻址,本文主要针对地址寄存器间接寻址进行详细讲解,关于存储器间接寻址可参见前面文章,链接如下:#详解西门子间接寻址之存储器间接寻址【地址寄存器间接寻址】在...
  • [汇编语言]立即数寻址寄存器寻址

    千次阅读 2018-11-25 19:41:45
    1. 什么是立即数? 操作数从指令代码中得到,即立即数(Immediate),也可以说就是指令的一部分了, 例如: MOV EAX 33221100H ;机器代码为 B8 00 11 22 33 ;操作码为 B8 ...立即数寻址方式只用于源操作...
  • 寄存器寻址方式

    2019-11-19 22:29:13
    微机系统有七种基本的寻址方式:立即寻址方式、寄存器寻址方式、直接寻址方式、寄存器间接寻址方式、寄存器相对寻址方式、基址加变址寻址方式、相对基址加变址寻址方式等。其中,后五种寻址方式是确定内存单元有效...
  • 寄存器寻址有以下几种模式,我按照书上用表格列出来 类型 格式 操作数值 名称 立即数 $ImmImmImm ImmImmImm 立即数寻址 寄存器 rar_ara​ R[ra]R[r_a]R[ra​] 寄存器寻址 ...
  • 概念: 寻址——找操作数 1,给出操作数; 2,直接按照给出数据为地址,寻址; 3,以给出数据为地址找到数据,再以找到的数据为地址,寻需要的操作数;     先读百度百科《寻址方式》:   ...
  • 寄存器寻址

    千次阅读 2017-04-05 20:24:06
    一、寄存器 总共有14个16位寄存器,8个8位寄存器。   通用寄存器:  数据寄存器:  AH(8位) AL(8位) AX(16位) (AX和AL又称累加器)  BH(8位) BL(8位) BX(16位) (BX又称基址寄存器,唯一作为存储器...
  • 课程分7个部分,循序渐进地介绍寄存器、内存、程序结构、模块化程序设计、中断等内容,课程重视对学习方法的指导和引导,提倡和支持用实践的方式开展学习,目标是培养学习者的自学能力和实践能力,以此支持对最新的...
  • 关于间接寻址分为存储器间接寻址和地址寄存器间接寻址,本文主要针对地址寄存器间接寻址进行详细讲解,关于存储器间接寻址可参见前面文章,链接如下:#详解西门子间接寻址之存储器间接寻址【地址寄存器间接寻址】在...
  • 众所周知,对于8086汇编语言,有几大寻址方式,不过我觉得这个好墨迹,会用就可以了,为什么命名这么多,这次只说本质,不说命名,至于命名,还是得知道,毕竟是大部分人公认的,不能反抗这点哦,但是你知道,不代表...
  • 寄存器 eax:32位长==4字节(0~31) ax:16位长==2字节(0~15) al:8位长==1字节 (0~7) ...如果是寄存器外面加了‘[ ]’,则就是寄存器间接寻址 如果是变量名,那就是直接寻址 指令操作合法性 以mov指令,为例子(其余

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,184
精华内容 1,673
关键字:

寻址寄存器