精华内容
下载资源
问答
  • 寄存器相对寻址和基址寻址
    万次阅读 多人点赞
    2019-01-19 17:58:44

    计算机只容许使用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

     

     

     

     

    更多相关内容
  • 汇编语言基础:寄存器和寻址方式

    千次阅读 2022-06-06 08:31:45
    寄存器分类AX、BX、CX、DX 一般用来存放数据,所以被称为数据...SIDI功能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。


    持续更新及修订中。

    未经允许请勿转载。

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

    堆栈寻址

    在这里插入图片描述

    在这里插入图片描述

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

    比较

    在这里插入图片描述

    展开全文
  • 文章目录指令格式指令中的(目标 / 源)操作数来源一、立即数寻址二、寄存器寻址三、存储器寻址3.1 直接寻址3.2 寄存器间接寻址3.3 基址寻址3.4 变址寻址3.5 基址变址寻址3.6 带位移的基址加变址寻址方式3.7 小结---...

    指令格式

    在这里插入图片描述

    指令中的(目标 / 源)操作数来源

    立即数:四位十六进制,如1234H
    寄存器:操作手在寄存器中
    存储器:操作数有“[ ]”

    七种叫法:

    1. 立即寻址方式
    2. 寄存器寻址方式
    3. 直接寻址方式
    4. 寄存器间接寻址方式
    5. 寄存器相对寻址方式
    6. 基址加变址寻址方式
    7. 相对基址加变址寻址方式

    一、立即数寻址

    把一个数直接在指令里面给出来,然后把这个数赋值给目标操作数。如:把 1234H 这个数赋值给DX【数据寄存器】
    在这里插入图片描述

    但是,一般这种寻址方式我们只会在赋初值的时候才会用。



    二、寄存器寻址

    就是我们不直接在指令里面给出源操作数,而是把这个源操作数放在一个寄存器里面,通过寄存器来赋值。

    例如:把通用寄存器 BX 里面存放的数据赋值给 AX。(源寄存器和目标寄存器的大小一定要相同)
    在这里插入图片描述



    三、存储器寻址

    3.1 直接寻址

    直接寻址的意思是,我们直接在指令里面给出源操作数的偏移地址,例如:
    在这里插入图片描述

    这里,我们就给出了源操作数的偏移地址是 3000H,那么段地址去哪了?

    在没有特殊声明时,默认数据都在数据段 DS,如果数据是在其他段,例如附加段 ES,那么需要通过段超越的方式:
    在这里插入图片描述

    下图所示过程执行的是指令: MOV AL , [2000H]
    在这里插入图片描述
    直接寻址看起来简单易懂,但是有一个大问题:假设我们要计算1+2+⋯+100,假设 1 位于存储器的第100个单元,如果采用直接寻址的方式,我们首先:要写出第一个地址,赋值、再写第二个地址,赋值、再相加、继续写地址,赋值、、、、这样一来,这个简单的问题都快需要几百行指令了,这显然十分麻烦,因此也有了下面的寄存器间接寻址。



    3.2 寄存器间接寻址

    这里是通过把偏移地址放在寄存器中的寻址方式。用于存放数据在内存中的偏移地址的,只能有 4 个通用寄存器:BX, BP, SI, DI

    BX:基址寄存器
    BP:基址指针
    SI:源变址寄存器
    DI:目的变址寄存器

    如果存放偏移地址的是寄存器:BX, SI, DI, 那么默认的段就是数据段 DS;
    如果存放偏移地址的是寄存器:BP,那么默认的段就是堆栈段 SS


    例子:
    在这里插入图片描述
    这就说明数据的偏移地址存放在 BX 里面,由于没有使用段超越,所以段默认是数据段 DS。但是这个例子里面取完数据赋值是有讲究的:

    因为我们知道:16位 CPU 它这个内存单元一个就是 8位的,我们通过 [BX] 所访问到的就是一个存储单元,也就是说,我们只取出了1个数,这个数是 8 位的。但是想要赋值的寄存器 AX 是 16位的,因此这时,我们还需要再往下多取一个8位二进制数,作为高位,存放在 AH。

    下图所示的过程执行的是指令: MOV AX , [ BX]
    在这里插入图片描述



    3.3 基址寻址 (寄存器相对寻址?)

    采用基址寻址时,我们的偏移地址是这样表示的:[基址寄存器] + 偏移量

    这里,偏移量是一个常数,而能够存放基址的,只有 BP 和 BX

    • 在使用 BX【基址寄存器】 时,默认的段就是数据段DS;
    • 在使用 BP 【基址指针】时,默认的段就是堆栈段 SS

    例子:
    在这里插入图片描述

    下图所示过程展示的是指令:MOV AL , [ BX + 5]
    在这里插入图片描述



    3.4 变址寻址(寄存器相对寻址?)

    上面我们采用的偏移地址表示是 [基址寄存器] + 偏移量,而在变址寻址中,我们偏移地址的表示就是:[变址寄存器] + 偏移量。

    在16位变址寻址中,变址寄存器只能是SI 、 DI,且它们都是默认段是 DS

    变址寻址主要的目的是为了一维数组的操作,因为我们知道,要想访问一维数组,需要有表头,还要有数组内数据和表头的距离。那么我们常常用那个常数偏移量代表表头,有寄存器的变化代表数组内元素距表头的距离。

    例子:
    在这里插入图片描述



    3.5 基址变址寻址

    类似的,在这种寻址方式下,我们的偏移地址就表示成:[基址寄存器] + [变址寄存器]

    基址+变址的目的是为了用于二重循环和对二维数组的操作。例如:
    在这里插入图片描述

    说明:在这种寻址模式下,哪个段主要取决于基址寄存器

    下图展示的是指令: MOV AX , [ BX + SI ]
    在这里插入图片描述



    3.6 带位移的基址加变址寻址方式

    一样地,这里偏移地址的表示方式是:[基址寄存器]+[变址寄存器]+偏移量]
    例如:
    在这里插入图片描述



    3.7 小结

    在这里插入图片描述



    ---------------------------------------------------------------------------------

    寻址方式中容易出现的错误

    在这里插入图片描述



    另类写法

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



    练习题

    第1题

    在这里插入图片描述

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

    第2题

    在这里插入图片描述

    展开全文
  • 直接寻址和立即寻址的区别 立即寻址:是把一个“常数”送到指定位置。 直接寻址:是把一个“变量”送到指定位置。 间接寻址 指令中给出的地址是操作数地址的地址。 寄存器寻址 指定的寄存器中存放着操作
  • 操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)或变址寄存器(SI、D I)的内容指令中的8位/16位偏移量之。其有效地址的计算公式如公式所示。 在不使用段超越前缀的情况下,有下列规定:    若...
  • 基址寻址和变址寻址区别(白话版)

    千次阅读 多人点赞 2021-03-24 17:45:31
    其实基址寻址和变址寻址都是相对寻址中的一种。计算模板都可以概括为:A=B+C(A是逻辑地址)。而且寄存器里面对这两种寻址方式都设计了专门的寄存器。基址寻址叫基址寄存器,变址寻址叫变址寄存器寄存器里面的内容就...
  • []只有一个寄存器和一个数字 基址变址寻址方式(based indexed…) []只有两个寄存器 注意[]里只能放BX,BP,SI,DI四个寄存器其他寄存器不能放,而且将BX,BP作为基地址寄存器,SI,DI作为变址寄存器,[]最多只能放一个...
  • 寄存器相对寻址方式

    千次阅读 2016-08-27 10:35:54
    操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)或变址寄存器(SI、D I)的内容指令中的8位/16位偏移量之。其有效地址的计算公式如公式所示。 在不使用段超越前缀的情况下,有下列规定:    若有效...
  • 4.4 数据的寻址方式4.4.1 指令数据的寻址方式4.4.2 数据寻址方式说明4.4.3 立即寻址4.4.4 直接寻址 4.4.1 指令数据的寻址方式 寻址方式:确定本条指令的数据地址或下一条要执行的指令地址的方法。 4.4.2 数据...
  • 基址寻址和变址寻址

    千次阅读 2021-10-20 20:51:55
    基址寻址能实现程序的“动态定位”,由操作系统或管理程序决定其内容,基址就是程序代码的起始地址,因此每当程序代码地址变动,只需要把基址寄存器中的地址改成程序的起始地址即可,而不需要修改指令中的地址码。...
  • 10种指令的寻址方式
  • 相对转移指令操作码所在地址称为源地址,转移后的地址称为目的地址。内容为基地址,指令的第二字节为偏移量。中内容可动态变化,可动态寻址。位地址,为操作数的存储...位),两者相加,为。相对转移指令字节数(...
  • 间接寻址和寄存器寻址的比较间接寻址优点 扩大了操作数的寻址范围 便于编制程序,方便地完成子程序的返回 缺点 访存次数多,执行时间长 寄存器寻址优点 无须访存,减少执行时间 指令字短,节省存储空间 基址...
  • 一、立即寻址方式 操作数作为指令的一部分而直接写在指令中,这种操作数称为立即数,这种寻址方式也就称为立即数寻址方式。 立即数可以是8位、16位或32位,该数值紧跟在操作码之后。如果立即数为16位或32位,那么...
  • 详细解释基址寻址和变址寻址区别

    万次阅读 多人点赞 2020-06-16 21:49:16
    基址寻址 定义:指令中给出一个寄存器一个形式地址,寄存器的内容为基准地址,形式地址是...基址寻址中的基址寄存器内容通常由操作系统或管理程序确定,程序执行过程中值不可变。其偏移量可变。主要是面向系统的。
  • 关键字:、立即寻址、寄存器寻址、存储器操作数寻址方式【直接寻址、寄存器间接寻址、基址寻址、变址寻址、基址加变址寻址】、标志寄存器
  • 标志寄存器 ZF:zero falg零标志位,判断运算结果是否为0,ZF=1,意味着运算结果为0,ZF=0,意味着运算结果为1 PF:奇偶标志位,判断运算结果1的个数是否为偶数 SF:sign flag符号标志位,判断运算结果是否为负,对象是有...
  • 基址寻址与变址寻址的区别

    万次阅读 多人点赞 2018-12-21 09:31:01
    基址寻址与变址寻址都类似于相对寻址,它们的有效地址EA = 基址+指令字中形式地址A。 1、基址寻址 计算公式:EA = (BR) + A 有效地址是将CPU中基址寄存器BR的内容加上指令字中形式地址A。BR的内容由操作系统决定...
  • 常见的寻址方式有立即寻址、直接寻址、间接寻址、寄存器寻址、寄存器间接寻址、相对寻址和变址寻址等。在立即寻址方式中,操作数包含在指令中;在直接寻址方式中,操作数存放在内存单元中;在寄存器寻址方式中,操作...
  • 1. 指令格式 1.1 指令的基本概念 1.2 指令的分类 ...2.1 指令寻址和数据寻址 2.1.1 指令寻址(通过PC) 2.1.2 数据寻址 2.1.2.1 直接寻址 2.1.2.2 间接寻址 2.1.2.3 寄存器寻址 2.1.2.4 寄存器间接寻址 2.1.2.5
  • 1、寄存器寻址:前面提到 了内部RAM中的00H-1FH地址单元作 为工作寄存器使用。一共是有32各地址单元,分成四组,每组有8个寄存器,命名为R0-R7,每次可以使用其中的一 组。当使用R0-R7来表示操作数时,就属于寄存器...
  • 寄存器的七种寻址方式

    千次阅读 2020-04-08 23:00:24
    立即寻址方式: 操作数作为指令的一部分而直接写在指令中...把在指令中指出所使用寄存器(即:寄存器的助忆符)的寻址方式称为寄存器寻址方式。由于指令所需的操作数已存储在寄存器中,或操作的结果存入寄存器,这样,...
  • 文章目录一:基址寻址(1)基本概念(2)基址寻址的作用二:变址寻址(1)基本概念(2)变址寄存器的作用(3)基址&变址复合寻址三:相对寻址(1)基本概念(2)相对寻址作用 本小节承接上一节:(计算机组成原理...
  • 8086中寻址方式详解

    2022-02-27 11:29:55
    存储器寻址方式是什么? 寻址方式给我们提供了“在存储器中找到/存放操作数的方法“,即告知我们”如何寻找到存取操作数(数据)的存储器内存单元“。...基址寄存器:BX(基址寄存器)、BP(基址指针寄存器) 这两
  • 基址寻址与变址寻址

    万次阅读 多人点赞 2018-01-04 14:06:56
    基址寻址与变址寻址
  • 存储器寻址方式:( 直接寻址方式,寄存器间接寻址方式,变址和基址寻址方式,基址变址寻址方式) 串操作寻址方式 I/O端口寻址方式8086采用的是变字长指令格式,指令长度为1~6个字节,第一个字节包含操作码,第二...
  • 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...
  • 寄存器寻址

    万次阅读 多人点赞 2017-04-05 20:24:06
    一、寄存器 总共有14个16位寄存器,8个8位寄存器。   ...通用寄存器: ... BH(8位) BL(8位) BX(16位) (BX又称基址寄存器,唯一作为存储器指针使用寄存器)  CH(8位) CL(8位) CX(16位) (计数器,CX

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,406
精华内容 6,162
热门标签
关键字:

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