汇编:操作数寻址方式 您所在的位置:网站首页 汇编语言db指令的地址如何确定 汇编:操作数寻址方式

汇编:操作数寻址方式

2024-07-18 05:29| 来源: 网络整理| 查看: 265

1、通用寄存器的一般用途

一、操作数包含在指令中--立即数寻址

       操作数从指令代码中立即得到,即立即数(Immediate),用常量形式直接表达,因此操作数存储在 代码段(CS)中。

       例:MOV  AX, 1100H

    注 意!

    只能用于源操作数  () 

         MOV  40H, AL    (AL不能给一个常数值)

    源操作数和目的操作数的字长必须一致

         MOV  AH, 3064H  (AX为16位寄存器,AH和AL分别为AX的高八位和低八位,而操作数3064H有16位)

二、操作数在存储器中 --存储器寻址  1.直接寻址

       例:MOV CX,[1000H];

    (1)指令中直接包含了操作数的有效地址EA,在指令操作码之后;

    (2)默认段地址在DS寄存器中,即操作数的实际地址(物理地址)是DS:EA

       DS:EA的意思是物理地址 = DS*16+EA。

       若DS = 2000H,则物理地址 = 2000H*16 + 1000H = 21000H。

 2.寄存器间接寻址

(1)操作数的有效地址EA存放在基址寄存器或变址寄存器。不能放在AX\CX\DX中;

(2)可以方便地对数组的元素或字符串的字符进行操作;

(3)寄存器间接寻址没有说明存储单元类型;

操作数的段地址(数据处于哪个段,代码段、数据段…)取决于选择哪一个间址寄存器:物理地址 = 段地址*16 + 简直寄存器地址。

例:MOV  AX,[BX];其中(DS)=2000H,(BX)=0100H;

则源操作数的物理地址为:2000H*16+0100H = 20100H(该地址和20101H两个地址一起存储着16位的字,20101H存储高8位,20100H存储低8位)。

 3.寄存器相对寻址 有效地址是寄存器内容与位移量之和;适用于数组、字符串、表格的操作。

     例:MOV BX,1100+[BX](或者写成MOV BX,1100[BX]) ; (DS)=2000H,(BX)=0100H,

       物理地址 = 2000H*16 + 0100H = 20100H。

 4.基址变址寻址

       有效地址是基址寄存器和变址寄存器之和;

    注意:必须是一个基址寄存器和一个变址寄存器的组合

       MOV   AX,  [BX][BP](BX: 基址寄存器;BP: 基址指针寄存器)

       MOV   AX,  [SI][DI](SI: 源变址寄存器;DI: 目的变址寄存器)

    例:MOV AX,[BX][SI];

   物理地址 = 段地址*16 + BX + SI;

 5.相对基址变址寻址

例:MOV AX,MASK[BX][SI];(或者MOV AX, [BX+SI+MASK]或 MOV AX, MASK[BX+SI])

物理地址 = 段地址*16 + BX + SI + MASK;

三、总结 1.汇编语言 SI DI BX BP SS DS 是什么

        SI: 16位寄存器,源变址寄存器

        DI: 16为寄存器,目的变址寄存器

        BX: 16位寄存器(可分成2个8位寄存器BH,BL),基址寄存器

        BP: 16位寄存器,基址指针寄存器

        SS : 16位段寄存器,作用是存放当前堆栈段的段地址,一般和SP连用

        DS: 16为段寄存器, 作用是存放当前数据段的段地址

2.怎样根据这些求物理地址

        有个公式: 物理地址 = 基础地址 + 偏移地址 = CS*10H(基础地址)+ IP(偏移地址)

        CS: 16位段寄存器,存放当前代码段的段地址

        IP: 存放下一条要执行的指令的偏移地址

有问题欢迎交流!!!!

      



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有