汇编指令的基本知识

1  指令

1.1  定义:指令由操作码和操作数两部分组成;

a 操作码:

操作码说明计算机要执行那种操作,它是指令中不可缺少的组成部分。

每种指令的操作码:用一个唯一的助记符表示(指令功能的英文缩写);对应着机器指令的一个二进制编码。

b 操作数:

操作数是  指令执行的参与者,即各种操作的对象。

指令中的操作数:可以是一个具体的数值;可以是存放数据的寄存器;还可以是指明数据在主存位置的存储器地址。

1.2  格式: 操作码   操作数1,操作数2 ;注释

a  操作数1:称为目的操作数dest,它不仅可以作为指令操作的一个对象,还可以用来存放指令操作的结果。

b  操作数2:称为源操作数src,  它表示参与指令操作的一个对象。

c  分号后的内容是对指令的解释

1.3  表达

r8: 任意一个8位通用寄存器   (AH   AL   BH   BL    CH  CL  DH  DL)

r16:任意一个16位通用寄存器(AX   BX   CX   DX    SI   DI   BP   SP)

r32:任意一个32位通用寄存器(EAX   EBX  ECX  EDX  ESI   EDI  EBP  EDI)

reg:通用寄存器

 

seg:段寄存器(CS    DS   ES    SS)

 

m8: 一个8位存储器操作数内存单元

m16:一个16位存储器操作数内存单元

m32:一个32位存储器操作数内存单元

mem:内存单元

 

i8:  一个8位立即数

i16:一个16位立即数

i32:一个32位立即数

imm:立即数

 

dest:目的操作数(操作数1)

src:  源操作数(操作数2)

1.4  多种表达方式

同一寻址方式可以写成不同的形式:

MOV  AX,[BX][SI]    ;等同于  MOV AX,[BX+SI]

MOV  AX,12[BX]   ;等同于  MOV AX,[BX+12]

MOV  AX,12[BX][SI];等同于  MOV AX,12[BX+SI]或 MOV AX, [BX+SI+12]

2   寻址方式

2.1   立即数寻址

指令中的操作数直接存放在机器代码中,紧跟在操作码之后,通常用于对通用寄存器或内存单元赋值

2.2  寄存器寻址

指令中的操作数直接存放在CPU的内部寄存器reg中,在指令执行过程中,会减少读/写存储器单元的次数,所以,使用寄存器寻址方式的指令具有较快的执行速度。

2.3  存储器寻址

指令中给出操作数的主存地址信息(偏移地址,称之为有效地址EA),而段地址在默认的或用段超越前缀指定的段寄存器中

8086设计了多种存储器寻址方式:

a 直接寻址方式

b 寄存器间接寻址方式

c 寄存器相对寻址方式

d 基址变址寻址方式

e 相对基址变址寻址方式

2.4  直接寻址

有效地址在指令中直接给出,默认的段地址在DS段寄存器,可使用段超越前缀改变

2.5  寄存器间接寻址

有效地址存放在基址寄存器BX或变址寄存器SI,DI中,默认的段地址在DS段寄存器,可使用段超越前缀改变

2.6  寄存器相对寻址

有效地址是寄存器内容与有符号8位或16位位移量之和,寄存器可以是BX、BP或SI、DI

段地址对应BX/SI/DI寄存器默认是DS,对应BP寄存器默认是SS,可用段超越前缀改变

2.7  基址变址寻址

有效地址由基址寄存器(BX或BP)的内容加上变址寄存器(SI或DI)的内容构成

段地址对应BX基址寄存器默认是DS,对应BP基址寄存器默认是SS,可用段超越前缀改变

2.8  相对基址变址寻址

有效地址是基址寄存器(BX或BP)、变址寄存器(SI或DI)与一个8位或16位位移量之和

段地址对应BX基址寄存器默认是DS,对应BP基址寄存器默认是SS,可用段超越前缀改变

3  栈

堆栈是一个先进后出FILO的主存区域,位于堆栈段中;SS段寄存器记录其段地址

堆栈只有一个出口,即当前栈顶,栈顶是地址较小的一端(低端),栈底不变

用堆栈指针寄存器SP指定

3.1   基本操作

只有两种基本操作:进栈和出栈,对应的指令:PUSH和POP

PUSH:进栈指令先使堆栈指针SP减2,然后把一个字  操作数存入堆栈顶部,

原型:PUSH  r16/m16/seg

POP:出栈指令把栈顶的一个字 传送至指定的目的操作数,然后堆栈指针SP加2

原型:POP  r16/m16/seg

3.2  特点

a 堆栈操作的单位是  :字,进栈和出栈只对 字量

b 字量数据从栈顶压入和弹出时,都是低地址字节送低字节,高地址字节送高字节

c  堆栈操作遵循先进后出原则,但可用存储器寻址方式随机存取堆栈中的数据

d  堆栈常用来:临时存放数据,传递参数,保存和恢复寄存器

 

posted @ 2019-05-21 21:16  vita_forest  阅读(921)  评论(0编辑  收藏  举报