您的位置:首页 > 其它

汇编语言 知识点回顾

2012-06-25 22:29 106 查看
1.什么叫 零地址指令 一地址指令 二地址指令?

指令中的地址码字段用来指出操作数的地址。根据一条指令中所含操作数地址的数量。可分为三地址指令、双地址指令、单地址指令和零地址指令。

零地址指令只有操作码,没有操作数。这种指令有两种情况:一是无需操作数,另一种是操作数为默认的(隐含的),默认为操作数在寄存器中,指令可直接访问寄存器。


零地址指令,如 NOP, CLR

一地址指令,如 INC R1

二地址指令,如 ADD R1, R2

三地址指令,如 ADD R1, R2, R3

2.什么叫寻址方式?

寻址方式就是寻找操作数操作数地址的方式。

8086提供了与操作数有关和与I/O端口地址有关的两类寻址方式。与操作数有关的寻址方式有七种,分别是立即寻址,寄存器寻址,直接寻址,寄存器间接寻址,寄存器相对寻址,基址加变址寻址,相对基址加变址寻址;与I/0端口有关的寻址方式有直接端口寻址和间接端口寻址方式。另外还有隐含寻址,即把要寻找的地址包含在操作码中。

3.写出与数据有关的7种寻址方式,并举例说明


与操作数有关的寻址方式


编辑本段立即数寻址方式

  操作数直接存放在指令中,紧跟在操作码之后的寻址方式就是立即数寻址方式,这种寻址方式的操作码后面的字节内容就是操作数本身,不需要在其他地址单元去取。

  例如:

  MOV AX,2345H

  MOV AL,0EH




编辑本段寄存器寻址

  指令所要的操作数已存储在某寄存器中,或把目标操作数存入寄存器。把在指令中指出所使用寄存器(即:寄存器的助忆符)的寻址方式称为寄存器寻址方式。 

  例如:

  MOV AX,BX

  ADD AX,BX


编辑本段存储器寻址方式

  8086指令系统提供了以下5种针对存储器的寻址方式。

  直接寻址、寄存器间接寻址、寄存器相对寻址、基址加变址寻址和相对基址加变址寻址。用于说明操作数所在存储单元的地址。由于总线接口单元BIU能根据需要自动引用段寄存器得到段值,所以这五种方式也就是确定存放操作数的存储单元有效地址EA的方法。有效地址EA是一个16位的无符号数,在利用这五种方法计算有效地址时,所得的结果认为是一个无符号数。

  (1).直接寻址:

  指令中给出的地址码即为操作数的有效地址,就是直接寻址方式

  例子: MOV AX,[2000H] -->2000H为存放操作数单元号的符号地址

  MOV AX,2000H -->2000H为源操作数,立即数

  上面两者是不等效的


(2).寄存器间接寻址方式:

  操作数在存储器中,操作数的有效地址用SI,DI,BX和BP 四个寄存器之一来指定

  例子: MOV AX,[BX]

  计算公式: 物理地址=16d*(DS)+(BX)

  物理地址=16d*(DS)+(SI)

  物理地址=16d*(DS)+(DI)

  物理地址=16d*(SS)+(BP)


(3).寄存器相对寻址方式:

  你就想成:你要找的"门户号(家)"其实就在你家的楼上或者楼下,你要找到它,就 必须知道它在你楼上几楼,或者在楼下几楼!就OK了!

  例子: MOV AX,COUNT[SI]

  MOV AX,[COUNT+SI]

  其中 COUNT为位移量的符号地址

  计算公式: 物理地址=16d*(DS)+(BX)+8位位移量

  物理地址=16d*(DS)+(BX)+16位位移量

  物理地址=16d*(DS)+(BX)+16位位移量

  物理地址=16d*(SS)+(BP)+8位偏移量


(4).基址变址寻址方式:

  你就想成:你要找的"门户号(家)"是跟住在同一栋楼的不同"单元号",你要找到它,就必须知道它是该栋的哪个"单元号",并且住在几楼!那样你就可以找到它了 !

  例子: MOV AX,[BX][DI]

  MOV AX,[BX+DI]

  计算公式: 物理地址=16d*(DS)+(BX)+(SI)

  物理地址=16d*(DS)+(BX)+(DI)

  物理地址=16d*(SS)+(BP)+(SI)

  物理地址=16d*(SS)+(BP)+(DI)


(5).相对基址变址寻址方式:

  你就想成:你要找的"门户号(家)"是跟住在同一栋楼的不同"单元号",它比你高几层楼或者低几层楼,然后用的你目前的楼数+/-就可以得出你要找的住在几楼了!

  例子: MOV AX,MASK[BX][SI]

  MOV AX,MASK[BX+SI]

  MOV AX,[MASK+BX+SI]

  以上三个例子是等效的!!

  计算公式: 物理地址=16d*(DS)+(BX)+(SI)+8位位移量

  物理地址=16d*(DS)+(BX)+(DI)+16位位移量

  物理地址=16d*(SS)+(BP)+(SI)+8位位移量

  物理地址=16d*(SS)+(BP)+(DI)+16位位移量

4.寄存器间接寻址,可以使用哪些寄存器作为间址寄存器?



MOV AX,[BX]

操作数的EA在基址寄存器BX,BP或者变址寄存器SI,DI中,而操作数的段地址在数据段DS,或堆栈段SS中。

如果有效地址由BX,SI,DI指出,则默认为数据段,而用BP指出则对应于堆栈段。

5.立即寻址方式和寄存器寻址方式的操作数有物理地址么?



除立即寻址和寄存器寻址外,无论是哪种寻址方式,关键在于如何求出物理地址,基址或者段值+变址或者偏移量

对于立即寻址和寄存器寻址,相当于直接给出了操作数。所以没有物理地址

7.什么是段超越?段超越前缀代表什么?

段超越前缀用来改变默认段寻址,通常内址寻址是数据段或者堆栈段,但你可以在指令前面加上段超越前缀,就可以访问到其它段内的数据。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: