当前位置: 首页 > >

第3章80868088指令系统-PPT精选_图文

发布时间:

第3章 8086/8088指令系统 mov ax,12h call display Jmp 1234h 1 主要内容: ?指令系统的一般概念 ?对操作数的寻址方式 ?六大类指令的操作原理: 操作码的含义 指令对操作数的要求 指令执行的结果 2 3.1 概述 指令——控制计算机完成指定操作的命令 机器指令——指令的二进制代码形式。例如:CD21H 汇编指令——助记符形式的指令。例如:INT 21H 指令系统——CPU所有指令及其使用规则的集合 8088/8086指令系统: (1)指令向后兼容(x86系列) (2)应用广泛,资料易于寻找 3 指令按功能分为六大类(92种) (1)数据传送类; (2)算术运算类; (3)逻辑运算和移位; (4)串操作; (5)控制转移类; (6)处理器控制。 4 3.1.1 指令的基本构成 目的 源 说明要执行的 操作对象,可以 是什么操作 有0个、1个或2个 5 指令举例: MOV AX , BX 操作码 操作数 ADD AX,[SI+6] INC [BX] HLT 6 部分8088常用指令 指令类型 助记符 数 数据传送 MOV,PUSH/POP,XCHG等 据 传 地址传送 LEA,LDS,LES 送 输入输出 IN,OUT 算 加法 ADD,ADC,INC 术 运 减法 SUB,SBB,DEC,NEG,CMP 算 乘/除法 MUL,IMUL,DIV,IDIV 逻辑 AND,OR,NOT,XOR,TEST 移位 SHL/SHR/SAR,ROL/ROR,RCL/RCR 串操作 MOVS,CMPS,SCAS,LODS,STOS 控制转移 JMP,JXX,LOOP,CALL/RET,INT/IRET 7 8088/8086的操作数分为3类 1、立即数(常数) 取值范围如下表: 8位 无符号数 00H-FFH(0-255) 16位 0000H-FFFFH(0-65535) 带符号数 80H-7FH(-128~127) 8000H-7FFFH(-32768~32767) MOV AX,0FA00H ;正确 MOV 8000H,DX ;错误 8 2、寄存器操作数 放在8个通用寄存器或4个段寄存器中的操作数 AX 16位 AH AL BX 16位 BH BL CX 16位 CH CL DX 16位 DH DL 9 SI DI 只能存放字操作数 BP SP CS DS 段寄存器存放 当前操作数的 ES 段基地址 SS 不允许将立即数传送到段寄存器 10 3、存储器操作数 存储器操作数 类型 存储单元个数 字节 1 字 2 双字 4 一般不允许两个操作数同时为存储器操作数 11 存储单元的物理地址 = 段基地址 + 偏移地址 ?若指令中没有指明所涉及的段寄存器,CPU就 采用默认的段寄存器来确定操作数所在的段。 ?表3.3 段寄存器使用的一些基本约定 存储器操作数的偏移地址(也称有效地址)可以通过 不同的寻址方式由指令给出。 例如,若(BX)=2000H, (SI)=0A00H, (DI)=2A00H,则以下指令 的结果是一样的: MOV AL, [2A00H] MOV AL, [BX+0A00H] MOV AL, [BX][SI] MOV AL, [DI] 12 3.1.2 指令的执行时间 一条指令的执行时间=∑ 单位用时钟周期数表示 取指令 取操作数 执行指令 传送结果 表3.4 常用指令执行时间 结论: 1)尽量使用寄存器作为操作数 2)若有可能,用移位代替乘除法 3)尽量使用简单的寻址方式 13 3.2 8086的寻址方式 寻址方式——寻找操作数的方法 ? 寻找操作数的地址(一般指源操作数) ? 寻找要执行的下一条指令的地址 在8086指令系统中,说明操作数所在地址的 寻址方式可分为8种: ①立即寻址 ⑤ 寄存器相对寻址 ②直接寻址 ⑥基址-变址寻址 ③寄存器寻址 ⑦相对的基址-变址寻址 ④寄存器间接寻址 ⑧隐含寻址 14 3.1.2 立即寻址 ? 操作数(为一常数)直接由指令给出 (此操作数称为立即数) ? 立即寻址只能用于源操作数 ? 例: MOV AX, 1C8FH MOV BYTE PTR[2A00H], 8FH 错误例: × MOV 2A00H, AX ; 错误! 15 指令操作例:MOV AX,3102H ; AX 执行后,(AH) = 31H,(AL) = 02H 3102H 立即寻址指令在存 储器中的存放形式 AX AH AL 存储器 操作码 立 即 数 低8位 高8位 代 码 段 MOV操作码 代 02H 码 段 31H 16 3.2.2 直接寻址 ? 指令中直接给出操作数的16位偏移地址 偏移地址也称为有效地址(EA, Effective Address) ? 默认的段寄存器为DS,但也可以显式地指定其他 段寄存器——称为段超越前缀 ? 偏移地址也可用符号地址来表示,如ADDR、VAR ? 例: MOV AX , [2A00H] MOV DX , ES: [2A00H] MOV SI , TABLE_PTR 17 指令操作例:MOV AX,[3102H] AL (3102H) , AH (3103H) 如果(DS)=2000H, (23012H) = CDH, (23013H) = ABH 则操作数的物理地址为: 20000H+3102H = 23102H 存储器 指令执行后:(AX) = ABCDH AH AL MOV操作码 代 02H 31H 码 段 .. 23102H CDH 数 据 ABH 段 18 3.2.3 寄存器寻址 ? 操作数放在某个寄存器中



友情链接: 传奇百科网 招聘百科网 非凡百科网 游艇百科网 口红百科网 创业百科网 软木百科网