精华内容
下载资源
问答
  • 计算机只容许使用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

     

     

     

     

    展开全文
  • 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、硬件如何实现数的“比较”?
    在这里插入图片描述

    堆栈寻址

    在这里插入图片描述

    在这里插入图片描述

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

    比较

    在这里插入图片描述

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

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

    间接寻址

    优点

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

    缺点

    访存次数多,执行时间长

    寄存器寻址

    优点

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

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

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

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

    展开全文
  • 寄存器相对寻址方式

    千次阅读 2016-08-27 10:35:54
    操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)或变址寄存器(SI、D I)的内容指令中的8位/16位偏移量之。其有效地址的计算公式如公式所示。 在不使用段超越前缀的情况下,有下列规定:    若有效...

    操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)或变址寄存器(SI、D

    I)的内容和指令中的8位/16位偏移量之和。其有效地址的计算公式如公式所示。

    在不使用段超越前缀的情况下,有下列规定:
     
        若有效地址用SI、DI和BX等之一来指定,则其缺省的段寄存器为DS;
     
        若有效地址用BP来指定,则其缺省的段寄存器为SS。
     
    指令中给出的8位/16位偏移量用补码表示。在计算有效地址时,如果偏移量是8位,则进行符号扩展成16位。当所得的有效地址超过0FFFFH,则取其64K的模。

    例:假设指令:MOV BX, [SI+100H],在执行它时,(DS)=1000H,(SI)=2345H,内存单元12445H的内容为2715H,问该指令执行后,BX的值是什么?

    解:根据寄存器相对寻址方式的规则,在执行本例指令时,源操作数的有效地址EA为:
     
    EA=(SI)+100H=2345H+100H=2445H
     
    该操作数的物理地址应由DS和EA的值形成,即:
     
    PA=(DS)*16+EA=1000H*16+2445H=12445H。

    所以,该指令的执行效果是:把从物理地址为12445H开始的一个字的值传送给BX。

    其执行过程如图所示。

    展开全文
  • 存储器寻址方式:( 直接寻址方式,寄存器间接寻址方式,变址和基址寻址方式,基址变址寻址方式) 串操作寻址方式 I/O端口寻址方式8086采用的是变字长指令格式,指令长度为1~6个字节,第一个字节包含操作码,第二...
  • 操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)或变址寄存器(SI、D I)的内容指令中的8位/16位偏移量之。其有效地址的计算公式如公式所示。 在不使用段超越前缀的情况下,有下列规定:    若...
  • 寄存器寻址方式

    2019-11-19 22:29:13
    微机系统有七种基本的寻址方式:立即寻址方式、寄存器寻址方式、直接寻址方式、寄存器间接寻址方式、寄存器相对寻址方式、基址加变址寻址方式、相对基址加变址寻址方式等。其中,后五种寻址方式是确定内存单元有效...
  • 80386 寄存器和寻址

    2018-11-06 15:26:53
    ebx是基址 [ebx+100h] 这就是地址 也可以[ebx+esi(ebi)+100h]作为源变址 目的变址 ecx 计数 loop 连用 ebp 是栈底 esp 是栈顶 段寄存器 变成了这样 RPL是特权分段 TI=0找GDT TI=1找LDT 首先CS...
  • 1. 内存寻址方式:  确定访问内存存储单元偏移地址方式,称为寻址方式。  名称 格式 直接寻址 [偏移量值] ...寄存器相对寻址 [基址寄存器/变址寄存器+偏移量值] 基址变址寻址 [基址寄存器...
  • 寄存器寻址

    千次阅读 2015-07-22 15:06:59
    2个变址指针寄存器(SIDI) 2个指针寄存器(SPBP) ,32位CPU增加2个16位的段寄存器:FSGS。 4个段寄存器(ES、CS、SSDS) 1个指令指针寄存器(IP) 1个标志寄存器(Flags) AX――累加器(Accumulator),...
  • 几个寄存器寻址方式

    2020-12-29 21:49:34
    sa:[bx+idata]寄存器相对寻址 sa:[bp+idata] 寄存器相对寻址 sa:[si+idata] 寄存器相对寻址 sa:[di+idata] 寄存器相对寻址 sa:[bx+si]基址变址寻址 sa:[bx+di] 基址变址寻址 sa:[bp+si] 基址变址寻址 sa:[bp+di] ...
  • 十四.寄存器和寻址

    2014-12-04 00:18:30
    其中usrsys的寄存器很类似 3.通用寄存器: (1)不分组寄存器0--7 (2)分组寄存器:8--14 (3)PC指针:r15 4状态寄存器:只有在异常模式下,才会既有cpsr又有spsr,usrsys模式下只有cpsr,为的是...
  • 寄存器区别:  1. 寄存器变成32位的。  2.多了一些系统程序用的寄存器:系统地址寄存器、控制寄存器、调试寄存器、测试寄存器。... 3....基址寄存器和 变址寄存器更灵活,常数偏移量可为 32位。
  • 1.汇编语言-寄存器寻址方式。 @1.寄存器作用 @2.寻址方式判断 2.汇编语言-8086指令、典型函数调用约定 @1 8086常用运算指令 @2 8086跳转指令 @3 常见函数调用约定 3.汇编语言-识别高级语言中的汇编代码 @1...
  • 计算机中程序是由按一定顺序排列的一系列指令,通常一条指令包括两方面的内容:操作码操作数,操作码决定要完成的操作,告诉计算机要干什么;操作数指参加运算的数据及其所在的单元地址。整条指令以二进制编码的...
  • 1 寄存器:1)数据寄存器:AX,BX,CX,DX2)段寄存器 DS CS SS ES FS GS DS 数据段(BX,SI,DI) CS 代码段(IP) SS 堆栈段(SP) ES,FS,GS 附加段3) 变址(指示)寄存器:SI(源变址寄存器),DI (目标变址寄存器)4) ...
  • 8086汇编笔记:寄存器和寻址

    千次阅读 2012-03-13 17:39:57
    不愿啃老本,终于开始看书了,读书时汇编虽然很喜欢,可是那时候很浮躁,很多东西也似懂非懂,没有搞清楚,“没有那个闲心看机器语言搞清楚机器的运行”。这两周都在看,一点一点,终于把很多东西想清楚了,真的很...
  • 但也有一些指令规定只能用其中某些寄存器做某种用途,例如除法指令idivl要求被除数在eax寄存器中,edx寄存器必须是0,而除数可以在任意寄存器中,计算结果的商数保存在eax寄存器中,而原来的被除数被覆盖掉,余数...
  • 冯诺依曼计算机,将计算机分为5大...用汇编语言编程就是在立即数,寄存器,内存在打交道。 寄存器有8个,EAX,EBX,ECX,EDX,EDI,ESI,EBP,ESP。 内存有不同的寻址方式,下面会详细说明。 movb 复制字节数据。 ..
  • 前言 ´・ᴗ・` 微机系统的构成 外设 CPU结构 执行单元 BIU 寄存器 存储器组织结构 寻址方式 总结 ´◡`
  • 最近学8086汇编,被各种各样的寄存器和寻搞疯了,总结一下
  • 1.寄存器寻址 操作数的值在寄存器中,指令中的地址码字段给出的是寄存器编号,寄存器的内容是操作数,指令执行时直接取出寄存器值操作。 例如指令: MOVR1,R2;R1←R2 SUBR0,R1,R2;R0←R1- R2 2.立即寻址 ...
  • 寄存器寻址、一些问题的解释。

    千次阅读 2014-07-23 19:52:47
    1、寄存器是中央处理器内的组成部份。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据位址。在中央处理器的控制部件中,... (2)存于寄存器内的地址可用来指向内存的某个位置,即寻址; (3)可以用来读
  • 寄存器和堆栈寻址

    千次阅读 2013-09-16 15:19:49
    寄存器寻址:LDMIA,LDMIB,STMIA,STMIB,LDMDA,LDMDB,STMDA,STMDB; 堆栈寻址:LDMFA,LDMFD,STMFA,STMFD,LDMEA,LDMED,STMEA,STMED; 弄清堆栈寻址的SP的变化:LDMFA,LDMFD,STMFA,STMFD,LDMEA...
  • 一、段寄存器及使用 1、存储器分段 (1)物理地址相关 内存(逻辑存储器):CPU能通过CPU总线直接寻址访问的存储器 这里的内存不特指计算机安装的内存条,而是指所有能被cpu直接寻址访问的存储器。包括内存...
  • 相对基址加变址寻址方式与其它寻址方式之间的变形关系 源操作数 指令的变形 源操作数的寻址方式 只有偏移量 MOV AX, [100H] 直接寻址方式 只有一个寄存器 MOV AX, [BX] 或 MOV AX, [SI] 寄存器间接寻址...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,282
精华内容 5,312
关键字:

寄存器相对寻址和基址寻址