微机原理与接口技术——第三章

汇编语言指令的一般格式:
指令助记符 操作数列表;注释

寻址方式:

  1. 立即数寻址 :mov BL,12H ; mov AX,1020H
  2. 寄存器寻址 : INC CL mov DS,AX
  3. 存储器 a.直接寻址 mov AX,[2000H] b.寄存器间接寻址 EA = [寄存器] c.寄存器相对寻址 EA = [基址寄存器或变址寄存器]+位移量:mov AX,[SI+24]或写成 mov AX,24 [SI]
  4. 基址加变址寻址:EA = [基址寄存器]+[变址寄存器] 例:mov AX,[BX+SI]
  5. 带位移的基址加变址寻址: EA = [基址寄存器]+[变址寄存器]+位移量 例:mov AX,[BX+SI+SOME]
  6. 比例变址寻址: EA = [变址寄存器] x 比例因子+位移量 : mov EAX,ARRAY[ESI x 4]
  7. 基址加比例变址寻址:EA = [基址寄存器]+[变址寄存器]x比例因子 :mov EDX,[EAX x 2][EBX]
  8. 带位移的基址加比例寻址:EA = [基址寄存器]+[变址寄存器]x比例因子+位移量

指令系统:

约定:为了清楚表达每条指令所能配合使用的操作数,约定以下符号:
r8——任意一个8位通用寄存器AH/AL/BH/BL/CH/CL/DH/DL
r16——任意一个16通用寄存器AX/BX/CX/DX/SI/DI/BP/SP
reg——代表r8或r16
seg——段寄存器CS/DS/ES/SS
m8——一个8位存储器操作数单元(包括所有主存寻址方式)
m16——一个16位存储器操作数单元(包括所有主存寻址方式)
mem——代表m8或m16
i8——一个8位立即数
i16——一个16位立即数
imm——代表i8或i16
dest——目的操作数
src——源操作数

8086的指令系统可分成6个功能组,他们是①数据传送类指令②算术运算类指令③位操作类指令④串操作类指令⑤控制转移类指令⑥处理机控制类指令
一、数据传送类指令
数据传送类指令又分为:
1、通用数据传送指令三条
传送指令:MOV dest,src ;dest←src
交换指令:XCHG reg,reg/mem ;reg←reg/mem,也可表达为:XCHG reg/mem.reg
换码指令:XLAT label 或 XLAT ;al←ds:[bx+al]
2、堆栈操作指令
进栈指令:PUSH reg/mem/seg ;SP←sp-2,SS:[Sp]←reg/mem/seg
出栈指令:POP reg/mem/seg ;reg/seg/mem←SS:[SP],Sp←SP+2
3、标志寄存器传送指令
标志送AH指令:LAHF ;AH←FLAGS的低字节
AH送标志指令:SAHF ;FLAGS的低字节←AH
标志进栈指令:PUSHF ;SP←SP-2,SS:[SP]←FLAGS
标志出栈指令:POPF ;FLAGS←SS:[SP],SP←SP+2
4、地址传送指令
有效地址传送指令:LEA r16,mem ;r16←mem的有效地址EA
指针传送指令 :LDS r16,mem ;r16←mem,DS←mem+2
指针传送指令 :LES r16,mem ;r16←mem,ES←mem+2
5、输入输出指令
输入指令:IN
输出指令:OUT
二、算术运算类指令
1、加法指令
加法指令:ADD
带进位加法指令:ADC
增量指令:INC
2、减法指令
减法指令:SUB
带借位减法指令:SBB
减量指令:DEC
求补指令:NEG
比较指令:CMP
3、乘法指令
无符号数乘法指令:MUL
有符号数乘法指令:IMUL
4、除法指令
无符号数除法指令:DIV
有符号数除法指令:IDIV
5、符号扩展指令
字节转换为字指令:CBW
字转换为双字指令:CWD
6、十进制调整指令
(1)压缩BCD码调整指令
加法的十进制数调整指令:DAA
减法的十进制数调整指令:DAS
(2)非压缩BCD码调整指令
加法的非压缩BCD码调整指令:AAA
减法的非压缩BCD码调整指令:AAS
乘法的非压缩BCD码调整指令:AAM
除法的非压缩BCD码调整指令:AAD
三、位操作类指令
1、逻辑运算指令
逻辑与指令:AND
逻辑或指令:OR
逻辑异或指令:XOR
逻辑非指令:NOT
测试指令:TEST
2、移位指令
(1)逻辑移位指令
逻辑左移:SHL
逻辑右移:SHR
(2)算术移位指令
算术左移:SAL
算术右依:SAR
3、循环移位指令
(1)不带进位循环移位指令
不带进位循环左移:ROL
不带进位循环右移:ROR
(2)带进位循环移位指令
带进位循环左移:RCL
带进位循环右移:RCR
四、串操作指令
1、串传送指令
字节串传送指令:MOVSB
字串传送指令 :MOVSW
2、串存储指令
字节串存储指令:STOSB
字串存储指令 :STOSW
3、串读取指令
字节串读取指令:LODSB
字串读取指令 :LODSW
4、串比较指令
字节串比较指令:CMPSB
字串比较指令 :CMPSW
5、串扫描指令
字节串扫描指令:SCASB
字串扫描指令 :SCASW
6、重复前缀指令
REP
REPZ
REPNZ
五、控制转移类指令
1、无条件转移指令
JMP
2、条件转移指令
JZ/JE、JNZ/JNE、JS、JNS、JP/JPE、JNP/JPO、JO、JNO、JC/JB/JNAE、JNC/JNB/JAE、JBE/JNA、
JNBE/JA、JL/JNGE、JNL/JGE、JLE/JNG、JNLE/JG
3、循环指令
LOOP
LOOPZ/LOOPE
LOOPNZ/LOOPNE
4、子程序指令
子程序调用指令 CALL
子程序返回指令 RET
5、中断指令
INT i8
IRET
INTO
6、系统功能调用
六、处理机控制类指令
1、标志位操作指令
(1)进位标志操作指令
CLC
STC
CMC
(2)方向标志操作指令
CLD
STD
(3)中断标志操作指令
CLI
STI
2、CPU状态控制指令
控操作指令:NOP
段超越前缀指令:SEG:
封锁前缀指令:LOCK
暂停指令:HLT
交权指令:ESC
等待指令:WAIT

posted @ 2016-09-22 21:01  PI_M  阅读(880)  评论(0)    收藏  举报