第五章 寻址方式和基本指令系统
汇编语言有汇编指令、伪指令、宏指令
汇编指令由 操作码+操作数1+操作数2 组成,操作数字段由寄存器、内存单元地址、端口地址和立即数(一个十进制数,例如’5’)
双操作数指令\单操作数\无操作数
push AX,AX必须是2个字节 单操作数
NOP:空操作指令,什么操作也不做
CLC:进位标志CF清零
HAL:停机指令
两个指标:指令执行时间,指令占用空间
寻址方式
立即数寻址方式:所要找的操作数直接写在指令中,这种操作数叫立即数.指令中有立即数的寻址方式叫立即寻址.这个立即数在代码段地址CS里
注意:立即寻址只能用于源操作数字段;立即数的数据类型必须与目的操作数的类型一致,都是字或字节
**寄存器寻址方式:**寄存器可以是8位,16位.CPU在寄存器中得到数据不用访问内存
**存储器寻址方式:**CPU必须经过系统总线访问存储器,存储器的地址以逻辑地址形式表示,因此这一类寻址方式在指令中要表示出有效地址EA.双操作数不允许都是存储单元
(1)直接寻址方式
操作数存放在内存中,指令形如:MOV AX, DS:[2000H] 有效地址EA=2000H直接写在指令里,如果没有DS标记,默认是DS
存储器读/写操作
写操作:把MOV指令的目的操作数变为存储单元,源操作数为CPU的存储器
读操作:把MOV指令的源操作数变为存储单元,目的操作数为CPU的存储器
符号地址
为存储单元定义一个名字,改名字就是符号地址.符号地址可以加括号也可以是不加括号.
段超越:操作数在其他段地址中
(2)寄存器间接寻址方式
MOV AX ,[BX]
操作数的EA在基址寄存器BX,BP或变址寄存器SI、DI中,操作数的段地址在数据段DS[BX +SI/DI]或堆栈段SS[BP+SI/DI]中,也可以用段超越
(3)寄存器相对寻址方式
操作数存放在内存中。指令形如:MOV AX,[BX +1234H]
MOV AX,COUNT[DI] 注释:前面的COUNT是一个符号地址,如果是BP的话要用段地址SS
(4)基址变址寻址方式
MOV AX,[BX+SI]
操作数的EA是一个基址寄存器和一个变址寄存器的内容之和
DS【BX+SI、BX+DI】 SS【BP+SI,BP+DI】========?
(5)相对基址变址寻址方式
MOV AX,[BX+SI+1243H]