主要内容: 1、8086/8088指令格式 2、8086/8088指令系统的寻址方式 3、8086/8088指令系统
重点: - 8086指令格式和寻址方式(也是考点) - 数据传送、算术运算、位操作、串操作、控制转移以及处理器控制等六大类指令
计算机是通过执行指令来处理各种数据的,因此,一条指令即要指出如何处理数据,同时还应指出数据的来源、操作结果的去向。一般来说指令是由操作码、寻址方,操作数组成。
2.目的操作数:即可读取又可写入(存放操作结果)的操作数。
ADD AX , BX 操作码 目的操作数 源操作数还可以分为:
1.数据操作数2.地址操作数这类操作数是与数据有关的操作数,即指令中要操作的对象是数据。数据操作数又可分为立即数操作数、寄存器操作数、存储器操作数和I/O操作数。
立即数操作数: 指令中要操作的数据在指令中 寄存器操作数: 指令中要操作的数据存放在指定的寄存器中。 存储器操作数: 指令中要操作的数据存放在指定的存储器中。 I/O操作数 : 指令中要操作的数据来自或送到I/O端口。这类操作数是与程序转移地址有关的操作数,即指令中要操作的对象不是数据,而是要转移的目的地址。 地址操作数也可分为立即数操作数、寄存器操作数和存储器操作数,即要转移的目的地址包含在指令中,或存放在寄存器中,或存放在存储器单元之中
所谓寻址方式就是寻找操作数存放地址(位置)的方法。在8086/8088系统中,操作数又可分为两大类:数据操作数和地址操作数。因此,寻址方式也分为数据寻址方式和地址寻址方式两大类。
例如:MOV AL, 80H MOV AX, 1234H
2)寄存器寻址方式例如:MOV AX, CX
3)存储器寻址方式存储器寻址方式的操作数存放在存储器单元中。因此,要存取操作数就必须知道其存储器的单元地址。在指令中可以直接给出或间接给出操作数的地址,以达到存取操作数的目的。 指令中给出的地址只是操作数的有效地址(EA),若要从存储器中存取操作数还须得到实际的地址(物理地址)。物理地址=段基址左移四位+有效地址 有效地址可以由以下三种地址分量组成: ● 位移量(Displacement):它是存放在指令中的一个8位或16位的数,但它不是立即数,而是一个地址。 ● 基址(Base Address):它是存放在基址寄存器BX或BP中的内容。 ● 变址(Index Addess):它是存放在变址寄存器SI或DI中的内容。 1. 直接寻址方式 : MOV AL, [1064] ( 段超越 ES:[1064H] ) 2. 寄存器间接寻址 :MOV AX, [SI] 3. 寄存器相对寻址:MOV CL, [BX+1064H] 4. 基址加变址寻址方式: 5. 基址加变址相对寻址:MOV [BX+DI+1234H], AH
地址的寻址方式其实是程序转移地址的寻址方式,也就是找出程序转移的地址号,而不是操作数。 转移地址可以在段内,也可以跨段转移(称段间转移)。寻求转移地址的方法有以下四种: 1. 段内直接寻址: 2. 段内间接寻址方式: 3. 段间直接寻址方式: 4. 段间间接寻址方式:
练习题: 指出下列指令中源操作数的寻址方式,若为储存器寻址方式,写出其逻辑地址: 1. mov bx,2000h 立即数寻址 2. mov bx,[si] 寄存器间接寻址 2. add ax, [bx+si+10h] 基址加变址相对寻址 3. mov ax, data 段内直接寻址(有疑问??) 3. in al,dx io端口间接寻址 4. mov bx, offset var
实现CPU中的寄存器与存储器或I/O端口之间原始数据、中间结果、最终结果以及其他有关信息的传送。它可分为以下四组:
通用数据传送指令:MOV PUSH POP XCHG XLAT输入输出指令:IN OUT地址传送指令:LEA LDS LES 标志传送指令:LAHF SAHF PUSHF POPF此指令的功能是将存放源操作数的16位偏移地址(即有效地址EA)送到一个16位的通用寄存器中。即源操作数必须是一个存储器操作数,目的操作数必须是一个寄存器操作数
8086/8088的算术运算指令共20条,除符号扩展指令(CBW,CWD)外,其余指令都影响状态标志位。
CMP dst, src (dst) - (src) ;前减后 指令类型指令格式操作功能AAA非压缩型BCD码加法调整指令十进制调整指令DAA压缩型BCD码加法调整指令AAS非压缩型BCD码减法调整指令DAS压缩型BCD码减法调整指令AAM非压缩型BCD码乘法调整指令AAD非压缩型BCD码除法调整指令逻辑运算指令:
AND OR NOT XOR TEST移位指令:
SHL SAL SHR SAR循环移位指令:
ROL ROR RCL RCR需要用到时查询该指令即可 !!!
⑴ 判断单个标志
ZF: JZ(JE), JNZ(JNE) SF: JS, JNS OF: JO, JNO PF: JP, JNP CF: JC, JNC(2) 判断CX寄存器
JCXZ : CX=0判断CX是否等于零,不等于零则循环
