
第三节8086/8088的指令系统概述一一数据传送指令三算术运算指令四逻辑运算指令五控制转移指令六处理机控制指令七.串操作指令
第三节 8086/8088的指令系统 一. 概述 二. 数据传送指令 三. 算术运算指令 四. 逻辑运算指令 五. 控制转移指令 六. 处理机控制指令 七. 串操作指令

一.概述1.指令助记符表2.学习指令的要点3.利用DEBUG程序,学习指令系统4.指令中操作数的表示5.书写指令注意事项
一.概述 1. 指令助记符表 2. 学习指令的要点 3. 利用DEBUG程序,学习指令系统 4. 指令中操作数的表示 5. 书写指令注意事项

1.指令助记符表指令类型助记符数据传通用传送MOV, PUSH, POP,XCHG, XLAT地址传送LEA, LDS, LES标志传送PUSHE,POPF,LAHE,SAHF送IN, OUT输入输出加法ADD,ADC, INC, AAA,DAA减法SUB, SBB, DEC, NEG, CMP, AAS, DAS算术乘法MUL,IMUL,AAM运算除法DIV, IDIV, AAD符号扩展CBW, CWD逻辑运算AND, TEST, OR, XOR,NOT逻辑移位SHL, SAL, SHR, SAR操作循环移位ROL,ROR,RCL,RCR
指令类型 助记符 通用传送 MOV, PUSH, POP, XCHG, XLAT 地址传送 LEA, LDS, LES 标志传送 PUSHF, POPF, LAHF, SAHF 数 据 传 送 输入输出 IN, OUT 加法 ADD, ADC, INC, AAA, DAA 减法 SUB, SBB, DEC, NEG, CMP, AAS, DAS 乘法 MUL, IMUL, AAM 除法 DIV, IDIV, AAD 算术 运算 符号扩展 CBW, CWD 逻辑运算 AND, TEST, OR, XOR, NOT 移位 SHL, SAL, SHR, SAR 逻辑 操作 循环移位 ROL, ROR, RCL, RCR 1. 指令助记符表

指令类型助记符串串操作MOVS.CMPS.SCAS.LODS.STOS处理重复控制REPREPE/REPZ.REPNE/REPNZJMIP无条件转移JE/JZ,JNE/JNZ,JS,JNS,JO,JNO控制转移JP. JNP. JC. JNC, JCXZ条件转移JAJNBE.JAEJNB.JB/JNAE.JBE/JNAJG/JNLE.JGE/JNL.JL/JNGE.JLE/JNG循环控制LOOPLOOPE/LOOPZ.LOOPNE/LOOPNZCALL,RET过程调用中断指令INT. INTO, IRETCLC, STC, CMC,CLD, STD, CLI, STI处理机控制NOP, HLT, WAIT, ESC, LOCK
指令类型 助记符 串 串操作 MOVS,CMPS,SCAS,LODS,STOS 处理 重复控制 REP,REPE/REPZ,REPNE/REPNZ 无条件转移 JMP 条件转移 JE/JZ, JNE/JNZ, JS, JNS, JO, JNO JP, JNP, JC, JNC, JCXZ JA/JNBE, JAE/JNB, JB/JNAE, JBE/JNA JG/JNLE, JGE/JNL, JL/JNGE, JLE/JNG 循环控制 LOOP, LOOPE/LOOPZ, LOOPNE/LOOPNZ 过程调用 CALL, RET 控 制 转 移 中断指令 INT, INTO, IRET 处理机控制 CLC, STC, CMC,CLD, STD, CLI, STI NOP, HLT, WAIT, ESC, LOCK

2.学习指令的要点从以下几个方面来掌握一条指令:指令的助记符指令的格式:操作数的个数、类型执行的操作:指令执行后的结果包括:哪些寄存器、内存单元的值发生了变化对标志位有无影响,哪些受影响特点及注意事项只介绍常用的指令,其他需要时可自学
2. 学习指令的要点 从以下几个方面来掌握一条指令: ⚫ 指令的助记符 ⚫ 指令的格式:操作数的个数、类型 ⚫ 执行的操作:指令执行后的结果 包括: 哪些寄存器、内存单元的值发生了变化 对标志位有无影响,哪些受影响 ⚫ 特点及注意事项 只介绍常用的指令,其他需要时可自学

3.利用DEBUG学习寻址方式、指令系统(示例)D:>DEBUG 进入DEBUG-AN汇编指令126C:0100MOVBX.2000126C:0103MOV[BX],CS126C:0105-R查看指令执行前寄存器的内容AX-0000BX=0000CX=0000DX=0000SP-FFEEBP=0000SI=0000DI-0000DS=126C ES=126C SS-126CCS-126C JIP-0100NVUPEIPLNZNAPONCMOV126C:0100B83412AX,1234-D DS:2000 L20 K查看指令执行前内存单元的内容126C:2000 000 44 CD 21 88 16 34 DB-F6 C2 80 74 33 A0 33 D4.D.!..4....t3.3.126C:2010 24 0C 7509A051DC0A-06 4DDC74 19 7A21A8S.u..0...M.t.z-TR单步执行指令AX-0000CX=0000BX=2000DX=0000SP=FFEEBP=0000SI-0000DI=0000DS=-126C ES=126C SS=126CCS-126CIP=0103NVUPEIPLNZNAPONCMOV126C:01038C0F[BX],CSDS:2000=4400-TA;单步执行指令AX-0000BX-2000CX=0000DX-0000SP-FFEEBP=0000SI=0000DI=0000DS=126CES=126CSS=126CCS=126CIP=0105NVUPEIPLNZNAPONC126C:01050475ADDAL,75-DDS:2000L102查看指令执行后内存单元的内容126C:2000 6C 12 CD 2188 16 34 DB-F6 C2 80 74 33A0 33 D4 1.....4....t3.3.-Qα
3. 利用DEBUG学习寻址方式、指令系统(示例) D:\>DEBUG ;进入DEBUG -A ;汇编指令 126C:0100 MOV BX, 2000 126C:0103 MOV [BX], CS 126C:0105 -R ;查看指令执行前寄存器的内容 AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=126C ES=126C SS=126C CS=126C IP=0100 NV UP EI PL NZ NA PO NC 126C:0100 B83412 MOV AX,1234 -D DS:2000 L20 ;查看指令执行前内存单元的内容 126C:2000 00 44 CD 21 88 16 34 DB-F6 C2 80 74 33 A0 33 D4 .D.!.4.t3.3. 126C:2010 24 0C 75 09 A0 51 DC 0A-06 4D DC 74 19 7A 21 A8 $.u.Q.M.t.z!. -T ;单步执行指令 AX=0000 BX=2000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=126C ES=126C SS=126C CS=126C IP=0103 NV UP EI PL NZ NA PO NC 126C:0103 8C0F MOV [BX],CS DS:2000=4400 -T ;单步执行指令 AX=0000 BX=2000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=126C ES=126C SS=126C CS=126C IP=0105 NV UP EI PL NZ NA PO NC 126C:0105 0475 ADD AL,75 -D DS:2000 L10 ;查看指令执行后内存单元的内容 126C:2000 6C 12 CD 21 88 16 34 DB-F6 C2 80 74 33 A0 33 D4 l.!.4.t3.3. -Q

4.指令中操作数的表示符号表示内容data立即数操作数通用寄存器操作数reg8 位:AH、AL、BH、BL、CH、CL、DH、DL16位:AX、BX、CX、DX、BP、SP、SI、DI段寄存器CS、DS、SS、ESsegregmem存储器操作数(5种寻址方式)或【]源操作数srcdst目的操作数()寄存器、存储器、端口的内容oprd1两操作数oprd2
4. 指令中操作数的表示 符号 表示内容 data 立即数操作数 reg 通用寄存器操作数 8 位:AH、AL、BH、BL、CH、CL、DH、DL 16 位:AX、BX、CX、DX、BP、SP、SI、DI segreg 段寄存器 CS、DS、SS、ES mem 或 [ ] 存储器操作数(5 种寻址方式) src 源操作数 dst 目的操作数 ( ) 寄存器、存储器、端口的内容 oprd1 oprd2 两操作数

5.书写指令注意事项:不区分字母的大小写。下列写法表示同一条指令:MOV AX.1ABDH1abdhmovax,不添加指令系统没有的指令,即不自创助记符写成将MOV AL,0MOVE AL.0写成JMP lableJUMP lable
5. 书写指令注意事项: ⚫不区分字母的大小写。 下列写法表示同一条指令: MOV AX, 1ABDH mov ax, 1abdh ⚫不添加指令系统没有的指令,即不自创助记符。 将 MOV AL , 0 写成 MOVE AL,0 JMP lable 写成 JUMP lable

注意操作数的范围对字节操作指令 0~FFH0 ~ 255对字操作指令0 ~ FFFFH 0 ~ 65535MOVAL 260MOVAX ,70000MOVAL,1FFHAL,MOV2ABCDH
⚫ 注意操作数的范围 对字节操作指令 0 ~ FFH 0 ~ 255 对字操作指令 0 ~ FFFFH 0 ~ 65535 MOV AL , 260 MOV AX ,70000 MOV AL, 1FFH MOV AL, 2ABCDH

对无操作数指令,不添加操作数。STC AL对单操作数指令,操作数不能是立即数XIMUL 6
⚫ 对无操作数指令,不添加操作数。 STC AL ⚫ 对单操作数指令,操作数不能是立即数。 IMUL 6