指令的寻址方式

什么是寻址方式

汇编指令由操做码字段操做数字段构成。spa

对于双操做指令,第一个操做数称为目的操做数,表示操做后的结果;第二个操做数称为源操做数,表示来源操做数。二者以逗号分隔。如:设计

寻址方式,通俗地说就是寻找操做数地址的方法。指针

寻址方式的数量表明了微机系统对存储器管理能力的强弱,合理地使用寻址方式能够扩大访存空间,缩短指令长度,知足各类程序设计须要。code

与数据有关的寻址方式划分为三类:当即寻址方式,寄存器寻址方式,存储器寻址方式。blog

七种与数据有关的寻址方式

要求掌握下列七种与数据有关的寻址方式。其中后五种属于存储器寻址方式。内存

  • 当即寻址方式(Immediate addressing)
  • 寄存器寻址方式(Register addressing)
  • 直接寻址方式(Direct addressing)
  • 寄存器间接寻址方式(Register indirect addressing)
  • 寄存器相对寻址方式(Register relative addressing)
  • 基址变址寻址方式(Based indexed addressing)
  • 相对基址变址寻址方式(Relative based indexed addressing)

选择寻址方式有两条原则:第一实用,第二有效。最终都应达到运行速度快、指令代码短的高效率目标程序的目的。当即寻址和寄存器寻址不管从指令长度和指令执行时间都比存储器寻址要好,可是也要根据具体状况选用。学会使用寻址方式是理解指令做用的关键。程序设计

1. 当即寻址方式

所要找的操做数直接写在指令中,这种操做数叫当即数。在808六、80286中当即数是8位或16位的,在80386以上能够是32位的当即数。当即寻址方式用来表示常数class

在DEBUG下数据都是十六进制表示的,所以不须要用H标注,同时要把十进制变为十六进制才行。效率

在DEBUG下执行:sed

-A
MOV AX,3060
MOV AL,5
MOV BL,FF
MOV BX,A46D 
MOV CX,17

 接着用T命令单步执行,观察各寄存器的值。

注意:执行T命令以前,指令指针寄存器IP的值要用R IP 修改为第一条指令的偏移地址,这样T命令才能从第一条指令开始执行。 

2. 寄存器寻址方式

    在寄存器寻址方式中,操做数在寄存器中,在指令中指定寄存器名便可。 

MOV BX,1234
MOV AX,BX

3. 直接寻址方式

    操做数存放在内存中。操做数的偏移地址(也称为有效地址EA)直接写在指令中,EA加上DS的基地址才是数据存放的物理地址。

(1)存储器读操做

MOV AX,DS:[2000H]

(2)存储器写操做

MOV DS:[4000H],AX

4. 寄存器间接寻址方式

    操做数存放在内存中。指令形式如: MOV AX,[BX]

5. 寄存器相对寻址方式

    操做数存放在内存中。指令形式如: MOV AX,[BX+1200H]

6. 基址变址寻址方式

    操做数存放在内存中。指令形式如: MOV AX,[BX+SI]

7. 相对基址变址寻址方式

    操做数存放在内存中。指令形式如: MOV AX,[BX+SI+1200H]

实验示例

根据题目要求,写出相应的汇编指令:

  1. AX、BX寄存器分别赋值为0008H0006H
  2. AX和BX的内容相加,结果在AX中
  3. 用寄存器间接寻址将相加的结果保存到6号单元
MOV AX,0008H
MOV BX,0006H
ADD AX,BX
MOV [BX],AX
HLT                   ;停机指令
相关文章
相关标签/搜索