《最新微机原理课件PPT课件.ppt》由会员分享,可在线阅读,更多相关《最新微机原理课件PPT课件.ppt(134页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、微机原理课件微机原理课件 书名:微型计算机原理及接口技术 出版社:中国科学技术大学出版社 作者:周荷琴,吴秀清 版本:第四版 元件级总线:连接计算机系统中两个主要部件的总线元件级总线采用三总线:地址总线、数据总线、控制总线地址总线:用于CPU向存储器或I/O端口传送地址数据总线:CPU与存储器及外设交换数据的通路控制总线:用来传送控制信息 局部总线:CPU总线、元件级总线局部总线用于多处理器系统 总线标准:国际上正式公布或推荐的系统各个模块互连的标准总线标准规定:插座的尺寸、引线的数目、信号的含义和时序 单片机单板机、嵌入式系统(SOC)第二章 8086系统结构第一节 8086CPU的结构第二
2、节 8086CPU引脚功能第三节 8086/8088存储器组织第四节 8086系统配置第一节 8086CPU的结构执行部件(EU)和总线接口部件(BIU)寄存器结构执行部件(EU)和总线接口部件(BIU)8086CPU的内部结构由两部分组成:总线接口部件BIU、执行部件(EU),采用流水线工作方式总线接口部件BIU:负责取指令;存、取操作数执行部件(EU):负责分析指令、执行指令 通用寄存器操作数 ALU标志段寄存器指令指针地址生成和总线控制指令队列EUBIU BIU 总线接口部件组成:段寄存器 16位 CS SS DS ES 指令指针(IP)存放指令的偏移地址 地址形成逻辑 完成逻辑地址到物
3、理地址转换 指令队列 采用FIFO结构,预取指令 总线控制逻辑 发出总线控制信号 任务:把段寄存器和IP相加形成20BIT有效地址 16*CS+IP 取指令 8086 如果队列中有2字节以上空格,EU不要求总线,则BIU预取指令 8088 如果队列中有1字节以上空格,EU不要求总线,则BIU预取指令 EU要求总线周期,有EU提供信号和地址来源,BIU进入总线,存取数据 EU执行部件组成:ALU算术逻辑运算单元 PSW标志寄存器 存放运算结果特征 寄存器组 存放中间结果 EU控制器 取指令控制、时序控制任务:从队列中取指令控制访问M和I/O 由EU通知BIU提供信号和地址来源内部:根据指令要求对
4、寄存器和标志管理寄存器结构通用寄存器指针和变址寄存器段寄存器指令指针标志寄存器 通用寄存器组EAX AX AH ALEBX BX BH BLECX CX CH CLEDX DX DH DL 可8位、16位使用 用于存放数据或地址专用功能 BX基址寄存器 AX累加器 CX计数器 AX,DX用于乘、除 指针和变址寄存器 SP 堆栈指针 BP 基址寄存器 SI 源变址寄存器 DI 目的变址寄存器用于堆栈操作 用于变址操作这四个寄存器只能按16位操作用于堆栈和变址操作计算操作数的有效地址ESPEBPESIEDI 段寄存器 存放每一段的起始地址CS 代码段寄存器SS 堆栈段寄存器DS 数据段寄存器ES
5、附加段寄存器用于存放程序 CS*16+IP取指用于存放堆栈 SS*16+SP堆栈用于存放数据 DS*16+SP,BP,SI用于存放数据 ES*16+BP,DI 指令指针IP每执行一条指令,IP自动加1IP指向偏移地址,有效地址16*CS+IP程序员不能直接修改IP,(通过转移、调用、中断、中断返回)标志寄存器PSW标志寄存器用来存放运算结果的特征6位状态位3位控制位 状态位:CF进位标志:若最高位产生进位或借位,则CF置1若最高位无进位或借位,则CF清0PF奇偶标志:若运算结果中“1”的个数为偶数个,PF置1若运算结果中“1”的个数为奇数个,PF清0AF辅助进位标志:第3位向第4位有进位或借位
6、 AF置1第3位向第4位无进位或借位 AF清0ZF 零标志:若运算结果为0,则ZF为1,否则ZF为0SF符号标志:若运算结果为正,SF为0若运算结果为负,SF为1OF溢出标志:若运算结果产生溢出OF为1,否则OF为0 控制位:DF方向标志TF 陷阱标志 若TF=1,CPU出单步工作方式,每执行一条指令,产生一次单步中断IF中断标志 当IF=1时,允许中断,当IF=0时,禁止中断 DF=0,地址指针自动增加(由低到高)DF=1,地址指针自动减少(由高到低)第二节 8086CPU引脚功能80868086芯片共计芯片共计4040个引脚,主要分成三类:地址线个引脚,主要分成三类:地址线数据线和控制线。
7、外加电源。数据线和控制线。外加电源。CPUCPU芯片的引脚完芯片的引脚完全反映了该芯片的内部功能以及和外界部件的交全反映了该芯片的内部功能以及和外界部件的交互方式。学习这部分内容着重考察互方式。学习这部分内容着重考察CPUCPU内部的功内部的功能模块以及输入输出需求,掌握引脚的功能定义。能模块以及输入输出需求,掌握引脚的功能定义。学习要求学习要求:信号名称信号名称 信号含义信号含义 有效电平有效电平 输入输入/输出输出 状态(两态状态(两态/三态)三态)信号来源信号来源一、一、8086 8086 CPUCPU引脚及功能引脚及功能地址总线和数据总线 *AD15AD0:地址/数据总线 双向 三态
8、注:8086/8088地址线,数据线分时使用 总线的第一周期作地址线(16bit宽A15A0)其余周期 作数据线 (8086 16bit/8088 8bit)*A19A16/S6S3:地址/状态 三态 输出 注:这四条线分时使用复用 总线的第一周期作地址线A19A16 (与A15A0构成20bit)其余周期 作状态线 S6S3 注:8086访问存储器,使用20条地址线 8086访问I/O,使用16条地址线 S6S3:状态线S6:为低电平 S5指示中断允许IF状态S4 S3指示哪一个段寄存器 S4 S3 段寄存器 0 0 ES 0 1 SS 1 0 CS或非存储器操作 1 1 DS 控制总线 控
9、制总线是传送控制信号的一组信号线,有 输入,输出。*MN/MX线:最小/最大方式控制线 若MN/MX=1,8086处于最小方式 若MN/MX=0,8086处于最大方式8086具有两种系统配置方式:最小模式和最大模式,分具有两种系统配置方式:最小模式和最大模式,分别对应单机系统和多机系统。别对应单机系统和多机系统。最小模式:由最小模式:由8086提供全部控制信号提供全部控制信号最大模式:由专用总线控制器最大模式:由专用总线控制器8288提供总线控制信号提供总线控制信号在不同模式在不同模式 8086的有些引脚不完全相同的有些引脚不完全相同 脚 最大 最小 脚 最大 最小28 S2 IO/M 27
10、S1 DT/R26 S0 DEN 30 RQ/GT0 HOLD24 QS1 INTA 31 RQ/GT1 HLDA25 QS0 ALE 29 LOCK WR受MN/MX影响的控制信号*S2S0:总线周期状态信号 S2 S1 S0 操作类型 0 0 0 中断响应 0 0 1 读I/O端口 0 1 0 写I/O端口 0 1 1 暂停 1 0 0 取指 1 0 1 读存储器 1 1 0 写存储器 1 1 1 无效 最小方式:*IO/M 存储器/输入输出请求信号*DT/R 数据发送/接受端*DEN 数据允许端*RQ/GT0*RQ/GT1在最大方式下:这两条信号为总线的请求和回答信号、两信号功能相同、R
11、Q/GT0 优先、双向 /RQ /GT 释放 在T4或下一个T1输出/GT 在最小方式*HOLD 总线请求信号、输入、高电平有效*HLDA 总线响应信号、输出、高电平有效 最大方式:QS1 QS0 为指令队列状态信号、输出、高电平有效 QS1 QS0 队列状态 0 0 无操作 0 1 取指令队列第一字节 1 0 队列空 1 1 取指令队列后续字节 最小方式:INTA 中断响应信号、输出、低电平有效ALE 地址锁存允许信号、输出、高电平有效 LOCK 最大方式有效、总线优先封锁信号 三态、输出、低电平有效WR 最小方式有效、写信号、三态、输出、低电平有效不受MN/MX影响的控制信号*RD读信号
12、三态 输出、低电平有效*READY 准备就绪信号、输出、高电平有效*INTR 中断请求信号、输入、高电平有效*NMI 非屏蔽中断请求信号、输入、正沿触发*TEST 测试信号、输入、低电平有效*RESET 复位信号、输入、高电平有效 复位后,8086CPU的状态:寄存器 状态 PSW 0000H CS FFFFH DS 0000H SS 0000H ES 0000H IP 0000H 指令队列 清空 其它CLK:时钟信号,由8284时钟产生VCC:电源 5V(5%)VSS:地二、8086与8088引脚不同数据线(8086:AD15AD0,8088:AD7AD0)存储器/输入输出控制线不同(808
13、6:M/IO,8088 M/IO)BHE/S7不同(BHE是总线高允许)第三节 8086/8088存储器组织一、存储器分段管理一、存储器分段管理二、物理地址的计算方法二、物理地址的计算方法三、逻辑地址来源三、逻辑地址来源四、四、8086/8088存储器分体结构存储器分体结构五、堆栈的概念五、堆栈的概念一、存储器分段管理一、存储器分段管理20根地址线可寻址根地址线可寻址1MB地址空间,而实际寄存器地址空间,而实际寄存器是是16位,只能寻址位,只能寻址64KB空间。于是采用分段管理空间。于是采用分段管理方式,每个段不超过方式,每个段不超过64KB。段之间可连续,可分段之间可连续,可分离,可重叠。离
14、,可重叠。段的首地址有限制,必须能被段的首地址有限制,必须能被16整除。即低四位全为整除。即低四位全为0。1 Paragraph=16 Bytes 每个存储单元由段地址和偏移地址组成每个存储单元由段地址和偏移地址组成 二、物理地址的计算方法二、物理地址的计算方法CPU内部寄存器是内部寄存器是16位,给出的地址也是位,给出的地址也是16位,不位,不能直接用于能直接用于20位地址空间的寻址,因此必须寻求一种位地址空间的寻址,因此必须寻求一种将将16位逻辑地址转换成位逻辑地址转换成20位物理地址的方法。位物理地址的方法。逻辑地址逻辑地址:段基址和偏移地址组成,无符号:段基址和偏移地址组成,无符号16
15、位二进位二进制数,是程序设计是采用的地址。制数,是程序设计是采用的地址。物理地址物理地址:存储器绝对地址。:存储器绝对地址。物理地址物理地址=16*段地址段地址+偏移地址偏移地址三、逻辑地址来源三、逻辑地址来源常用搭配关系:常用搭配关系:(CS,IP),(DS,SI/DI/BX),(SS,SP/BP)等等。等等。四、四、8086/8088存储器分体结构存储器分体结构8086奇地址512K*8 D7D0偶地址512K*8 D7D0D15D8 D7D0SEL A0A18SEL A0A18A1A19A0BHE 8088 A19A01M*8 D7D0D7D0A0A19五、堆栈的概念五、堆栈的概念专用存
16、储区域,暂时保存数据。专用存储区域,暂时保存数据。“后进先出后进先出”(LIFO)SS段基址,段基址,SP栈顶单元地址栈顶单元地址堆栈生长方向:由高地址区向低地址区增长。堆栈生长方向:由高地址区向低地址区增长。用途:中断,子程序调用,暂存或交换数据。用途:中断,子程序调用,暂存或交换数据。例如:SS=C000H,SP=1000H,则C0000HC1000HSP栈底64k第四节 8086系统配置8086具有两种系统配置方式:最小模式和最大模具有两种系统配置方式:最小模式和最大模式,分别对应单机系统和多机系统式,分别对应单机系统和多机系统。注意学习一般的计算机系统的基本配置方式,配注意学习一般的计
17、算机系统的基本配置方式,配置的策略,建立微型机系统的基本配置模型。置的策略,建立微型机系统的基本配置模型。一、基本总线接口部件地址锁存器地址锁存器8282/8283数据总线缓冲器数据总线缓冲器8286/8287时钟发生器时钟发生器8284总线控制器总线控制器8288总线裁决器总线裁决器82891.地址锁存器地址锁存器8282/82838282(不反相)和(不反相)和8283(反相)具有三(反相)具有三态输出的锁存缓冲器,用于锁存、缓冲、态输出的锁存缓冲器,用于锁存、缓冲、多路输出多路输出8282的逻辑图的逻辑图8086系统中,系统中,8282(8283)用于地址锁)用于地址锁存器存器连接:连接
18、:ALESTB OE接地接地 DIAD DOA(地址)地址)D QCLKDI0 STBOEDO0DI1 DI2 DI7DO1DO2DO72、数据总线缓冲器数据总线缓冲器8286/82878286(不反相)(不反相)8287(反相)具有(反相)具有8路双向缓路双向缓冲电路,可实现冲电路,可实现8位数据的双向传送,位数据的双向传送,8286/8287具有很强总线驱动能力,可作为总具有很强总线驱动能力,可作为总线驱动器线驱动器8286逻辑图逻辑图8086系统中,系统中,8286(8287)为总线驱动器)为总线驱动器连接:连接:TDT/R OEDEN AAD BD(数据)数据)A1 A2 A7A0或或
19、B0B1B2B7OET3、时钟发生器时钟发生器8284提供整个提供整个CPU芯片的时钟控制信号,是实现精确控制芯片的时钟控制信号,是实现精确控制的必要条件。的必要条件。三大功能模块:三大功能模块:时钟信号发生器时钟信号发生器 OSC:14.318MHz CLK:4.77MHz,占空比占空比1/3,供,供CPU PCLK:2.385MHz,占空比占空比1/2,供外设供外设复位生成电路复位生成电路就绪控制电路就绪控制电路 4、总线控制器总线控制器8288由于由于8086系统配置为多处理器系统,有多个具有自主性系统配置为多处理器系统,有多个具有自主性的总线控制设备,原先的一些引脚用来传送其他控制信的
20、总线控制设备,原先的一些引脚用来传送其他控制信号,因此需要增加独立的总线控制器来输出总线控制命号,因此需要增加独立的总线控制器来输出总线控制命令。令。引脚功能:引脚功能:总线状态信号总线状态信号控制输入信号控制输入信号总线命令信号总线命令信号总线控制信号总线控制信号两种工作方式:两种工作方式:I/O总线方式:局部总线方式总线方式:局部总线方式系统总线方式系统总线方式5、总线裁决器总线裁决器8289当系统中存在多个对总线具有主控权的设备时,每个主当系统中存在多个对总线具有主控权的设备时,每个主控设备需要增设控设备需要增设8289来对总线进行合理分配,将总线使来对总线进行合理分配,将总线使用权赋给
21、优先权最高的设备。用权赋给优先权最高的设备。引脚功能:引脚功能:状态信号:状态信号:8086CPU输出输出控制信号控制信号多总线命令信号多总线命令信号系统信号系统信号二、最大方式和最小方式基本配置最小配置:最小配置:1片片8284、3片片8282、2片片8286最大配置:除最小配置,外加最大配置:除最小配置,外加8288、8289第三章 8086寻址和指令系统8086指令系统具有灵活的指令格式、很强指令系统具有灵活的指令格式、很强的寻址能力、能处理多种数据类型的寻址能力、能处理多种数据类型本章讨论本章讨论8086寻址能力,指令格式,指令寻址能力,指令格式,指令系统系统第一节 8086寻址能力寻
22、址:寻址:指令寻找操作数的方法指令寻找操作数的方法8086 的寻址方法有:的寻址方法有:立即寻址、存储器寻址、串操作寻址立即寻址、存储器寻址、串操作寻址I/O端口寻址、程序转移寻址端口寻址、程序转移寻址 立即寻址:指令中直接给出操作数的数值。立即寻址:指令中直接给出操作数的数值。如:如:MOV AL,26H MOV CX,2A50H立即寻址速度快,一般用于给寄存器或存储器赋立即寻址速度快,一般用于给寄存器或存储器赋初值初值 寄存器寻址:操作数存放在指令规定的寄寄存器寻址:操作数存放在指令规定的寄存器中。存器中。如:如:MOV DX,AX寄存器寻址机器码字节最短,执行速度最快寄存器寻址机器码字节
23、最短,执行速度最快 直接寻址:指令直接给出操作数的偏移地直接寻址:指令直接给出操作数的偏移地址。(存储器寻址方式)址。(存储器寻址方式)直接寻址方式:直接寻址方式:MOV AX,2000H段超越前缀:段超越前缀:MOV AX,ES:500符号地址:符号地址:AREA1 DW 100 MOV AX,AREA1 寄存器间接寻址:操作数的有效地址寄存器间接寻址:操作数的有效地址EA存存放在基址或变址寄存器。放在基址或变址寄存器。EA=(BX)(SI)(DI)(BP)注:以注:以BX,SI,DI为偏移地址,默认段为偏移地址,默认段DS 以以BP为偏移地址,默认段为偏移地址,默认段SS如:如:MOV A
24、L,BX 寄存器相对寻址:操作数的有效地址寄存器相对寻址:操作数的有效地址EA是是8位或位或16位的偏移量加基址或变址寄存器位的偏移量加基址或变址寄存器EA=(BX)(SI)8位偏移量位偏移量 (DI)16位偏移量位偏移量 (BP)+BP 默认段默认段SSBX、SI、DI默认段默认段DS 如:如:MOV BX,COUNTSI 基址变址寻址:操作数的有效地址基址变址寻址:操作数的有效地址EA是基址存是基址存器(器(BX或或BP)加变址寄存器(加变址寄存器(SI或或DI)。)。EA=(BX)(SI)(BP)(DI)+BP 默认段默认段SSBX 默认段默认段DS 如:如:MOV AX,BXSI MO
25、V AX,BX+SI 相对基址变址寻址:操作数的有效地址相对基址变址寻址:操作数的有效地址EA是是8位位或或16位的偏移量加基址寄存器(位的偏移量加基址寄存器(BX或或BP)和变和变址寄存器(址寄存器(SI或或DI)。)。EA=(BX)(SI)8位偏移量位偏移量 (BP)(DI)16为偏移量为偏移量 +BP 默认段默认段SSBX 默认段默认段DS 如:如:MOV AX,MASKBXSI MOV AX,MASK+BX+SI+其它:其它:隐含寻址隐含寻址I/O端口寻址端口寻址一条指令几种寻址方式一条指令几种寻址方式转移类寻址转移类寻址 I/O端口寻址端口寻址直接端口寻址:直接端口寻址:指令中直接给
26、出外设端口地址指令中直接给出外设端口地址 如:如:IN AL,63H OUT 64H,AL间接端口寻址:间接端口寻址:指令指令DX寄存器为外设端口地址寄存器为外设端口地址 如:如:MOV DX,213H IN AL,DX注:直接端口寻址范围(注:直接端口寻址范围(0FFH)间接端口寻址范围(间接端口寻址范围(0FFFFH)转移指令寻址方式转移指令寻址方式段内直接寻址段内直接寻址 立即短转移立即短转移 JMP SHORT PROG_S (8位立即位立即数数)立即近转移立即近转移 JMP NEAR PTR PRON_N(16位立即数)位立即数)段内间接寻址段内间接寻址 以存储器或寄存器作为转移目标
27、以存储器或寄存器作为转移目标地址地址 寄存器:寄存器:JMP BX 存储器:存储器:JMP WORD PTR BX段间直接寻址段间直接寻址 JMP FAR PTR PROG _F段间间接寻址段间间接寻址 JMP DWORD PTRBX Ffff0-0a00=ff5f0h,ds=ff5fh2010:0102=20100+0102=20202h5000:001e=50000+001e=5001eh3217:0e0f=32170+0e0f=3307fh10e0:002a=10e00+002a=10e2ah第二节第二节 指令机器码表示指令机器码表示8086采用变长指令格式,指令长度有采用变长指令格式,
28、指令长度有16字节不等字节不等 第一字节:第一字节:操作码操作码 第二字节:第二字节:操作数寻址方式操作数寻址方式 后面:后面:无字节无字节 2字节有效地址字节有效地址EA 12字节偏移量、字节偏移量、12字节立即数字节立即数 12字节偏移量、字节偏移量、2字节的段地址字节的段地址 Op code单字节 操作数隐含 Op code Reg 单字节 寄存器方式Op code 11 Reg R/M Op code mod Reg R/M Op code mod Reg R/M 位低 位高 Op code 11 Reg R/M 数低 数高 Op code mod Reg R/M 位低 位高 数低 数
29、高 寄存器至寄存器寄存器至存储器寄存器至存储器立即数至寄存器立即数至存储器第三节 8086指令系统指令系统是汇编语言程序设计基础汇编语言不如高级语言容易掌握学习要点:功能、寻址方式、对PSW影响8086指令系统分6类:数据传送、算术运算、逻辑和移位、字符串处理、转移类指令、处理机控制类。一、数据传送指令1、通用传送指令指令名称 操作码 操作数 例传送字或字节 MOV 目标,源 MOV ARRAYSI,AL把字压入堆栈 PUSH 源 PUSH AX把字弹出堆栈 POP 目标 POP AX 交换字节或字 XCHG 目标,源 XCHG AX,BX字节翻译 XLAT 译码表 XLAT ASCII-TA
30、B MOV指令完成把1字节或1字内容从源操作数传送到目的操作数 格式:MOV 目标,源立即数存储器段寄存器通用寄存器立即数不能做目的操作数无存储器间直接传送不能给CS、IP直接赋值不能用立即数对段寄存器赋值例:MOV AL,B MOV DX,OFFSET ARRAY MOV AL,AREA1 MOV AREA2,AL PUSH 进栈指令 格式:PUSH 源若BX=2500H DS=2130H SP=0040H SS=2000H执行 PUSH BX PUSH DS 执行后 SP=003CH 2000:0000 30 21 00 25 2000:0040栈底减1SP源操作数可以是通用寄存器、段寄存
31、器、存储器。压栈时必须是字先压高字节、再压低字节,且SP减1 POP 出栈指令 格式:POP 目的若:SP=003CH SS=2000H执行 POP DS POP BX 执行后 SP=0040HDS=2130HBX=2500H 2000:0000 30 21 00 25 2000:0040栈底加1SP目的操作数可以是通用寄存器、段寄存器、存储器。弹栈时必须是字先弹低字节、再弹高字节,且SP加1 2000:003C XCHG 交换指令 格式:XCHG 目的,源 例:XCHG AX,BX+200H 注:源、目的可以是寄存 若:AX=2000H,DS=3000H 器,可以是存储器,BX=1800H,
32、(31A00H)=1995H 但不能都是存储器。执行后:AX=1995H (31A00H)=2000H XLAT 指令 格式:XLAT 或XLAT 表该指令采用隐含寻址表有效地址EA=BX+AL,查表后内容送AL例:把09的十进制数转换成七段码TABLE DB 40H,79H,24H,30H,19H DB 12H,02H,78H,00H,18H MOV AL,5 MOV BX,OFFSET TABLE XLAT TABLE 2、输入/输出指令 IN 累加器,端口 OUT 端口,累加器如果端口地址在0000H00FFH,可用直接或间接寻址如果端口地址不在0000H00FFH,只能用间接寻址例:I
33、N AX,21H(直接)MOV DX,210H(间接)IN AL,DX IN AL,210H ()名称 操作码 操作数 举例 装入有效地址 LEA 目,源 LEA BX,DI指针装入DS LDS 目,源 LDS BX,TABLESI指针装入ES LES 目,源 LES DI,ARRAYBX这三条指令用于传送地址码,源操作数必须是存储器,目的操作数除段寄存器的16位寄存器。例:LEA BX,6DI 若:DI=0100H,DS=2000H,(20106H)=1234H,(20108H)=5678H则:LEA BX,6DI BX=0106H LDS BX,6DI BX=1234H DS=5678H
34、3、地址目标传送指令 4、标志传送指令LAHF 标志装入AH 将标志SF,ZF,AF,PF,CF送AH的7,6,4,2,0SAHF AH内容装入标志 将AH的7,6,4,2,0送标志SF,ZF,AF,PF,CFPUSHF 压标志POPF 弹标志 传送指令对标志影响:除 POPF SAHF 两条指令,其余指令均不影 响标志二、算术运算指令8086算术运算指令共有20条,分4组8086的4组指令为加法、减法、乘法、除法8086可处理四种类型的数:无符号、带符号、压缩BCD码、非压缩BCD码8086四种类型数的解释 二进制 十六进制 无符号数 带符号数 非压缩BCD 压缩BCD 00000111 0
35、7 7 7 7 7 10001001 89 137 -119 无效 89 11000101 C5 197 -59 无效 无效 1、加法指令 ADD 目的,源 目的源+目的 ADC 目的,源 目的源+目的+CF INC 目的 目的目的+1 AAA DAA说明:源操作数为立即数、通用寄存器、存储器 目的 通用寄存器、存储器 源、目不能都是存储器 算术运算指令影响标志算术运算指令影响标志 例:ADD AL,18H ADC BL,AL ADC AX,DX ADD AL,COSTBX INC BL INC CX INC BYTE PTRBX INC WORD PTRBX AAA 为加法的ASCII 调整
36、指令,适用非压缩BCD 码调整原则:若AL低4位9或AF=1 则ALAL+6,AL高4位清0,AF 1 CF 1,AH AH+1 否则:将AL高4位清0例:AX=9 BL=5,求两数之和(AL=39H,BL=35H)ADD AL,BL ;AL=0EH AAA ;AX=0104H,非压缩BCD码14 DAA加法的十进制调整指令,适用压缩BCD码调整原则:若AL低4位9或AF=1 则ALAL+6,进行低字节调整 若AL高4位9或CF=1 则ALAL+60,进行高字节调整,使CF=1例1、AL=38(BCD)BL=15(BCD),求两数之和 ADD AL,BL ;AL=4BH DAA ;AL=53H
37、(BCD)CF 0例2、AL=88(BCD)BL=49(BCD),求两数之和 ADD AL,BL ;AL=0D1H DAA ;AL=37H,CF=1 使用AAA、DAA指令注意:仅对AL调整,运算必须是字节,且结果存在AL中参加运算的数必须合法,即压缩或非压缩BCD码紧跟在ADD、ADC、INC指令后面 2、减法指令 SUB 目的,源 目的目的-源 SBB 目的,源 目的目的-源-CF DEC 目的 目的目的-1 NEG 目的 目的0-目的 CMP 目的,源 源-目的 AAS DAS说明:源操作数为立即数、通用寄存器、存储器 目的 通用寄存器、存储器 源、目不能都是存储器 算术运算指令影响标志
38、算术运算指令影响标志 3、乘法指令 MUL 源 IMUL 源 AAM说明:*乘法指令只给出一个源操作数,另一源操作数,目的操作数采用隐含寻址 *乘法指令可字节与字节乘,可字与字乘 字节乘:AX AL*源 字乘:DX AX AX*源 *源操作数可选寄存器、存储器(说明字还是字节)*乘法影响标志CF,OF 例1:MUL DL MUL CX MUL BYTE PTRSI MUL WORD PTRBX例2:AL=55H,BL=14H MUL BL 执行后AX=06A4H CF=1,OF=1例3:AL=-28H,BL=59H IMUL BL 执行后AX=F98CH,CF=1,OF=1 乘法的ASCII调
39、整:AAM 把AL/10商在AH,余数在AL例:MOV AL,09H MOV BL,06H MUL BL ;AL=36H AAM ;AH=05H,AL=04H 4、除法指令 DIV 源 IDIV 源 AAD说明:*除法指令只给出一个源操作数,另一源操作数,目的操作数采用隐含寻址 *除法可完成字节或字除,取决于源操作数 *字节除 商AL,余数AH AX/源(字节)字除 商AX,余数DX DXAX/源(字)*源操作数可选寄存器、存储器(说明字还是字节)*除法指令对标志无影响,但超过范围,产生中断CBWCWD 例1:完成两个无符号数7A86H,04H相除 MOV AX,7A86H MOV DX,0
40、MOV BL,04H MOV AX,7A86H DIV BL MOV BX,04H 超过范围,产生除法中断 DIV BX 例2:-38/3的商和余数 MOV AX,-38 MOV AL,-38 MOV CH,03H MOV CH,03H IDIV CH CBW IDIV CH 符号扩展:CBW AL 符号扩展 AXCWD AX 符号扩展 DX,AX 除法的ASCII调整:AAD ALAH*10+AL,AH 0在做除法前先除例:完成非压缩BCD码37除5 MOV AX,0307H MOV BL,05H AAD ;AL=25H DIV BL ;AL=7(商)AH=2(余数)三、逻辑运算与移位指令逻
41、辑运算指令 名称 操作码 操作数 功能 非 NOT 目的 目的 目的 与 AND 目的,源 目的 目的源 或 OR 目的,源 目的 目的源异或 XOR 目的,源 目的 目的源测试 TEST 目的,源 目的源 与指令用来清除或保留操作数中某些位或指令用来保留或使操作数某些位置1异或指令可使某些位取反,某些位不变测试指令完成的功能是与,但不回送结果逻辑运算指令对标志影响:NOT 指令不影响标志,其余指令根据结果置 SF,ZF,PF、CF与OF 清0、AF 不确定。移位与循环指令 逻辑左移 SHL 目的,计数值 算术左移 SAL 目的,计数值 逻辑右移 SHR 目的,计数值 算术右移 SAR 目的,
42、计数值 循环左移 ROL 目的,计数值 循环右移 ROR 目的,计数值 带进位循环左移 RCL 目的,计数值 带进位循环右移 RCR 目的,计数值 SHL/SAL SHRSARROLRORRCLRCR00MMMCFCFCFCFCFCFCF 移位:逻辑左移 无符号乘2 逻辑右移 无符号除2 算术左移 带符号乘2 算术右移 带符号除2循环指令用于按位检测,又能恢复原值场所8086循环和移位指令一次可移1位,也可移多位(CL)操作数形式:目的操作数 可选用存储器、寄存器 计数值 选1或CL对标志影响:AF无定义、PF,SF,ZF根据结果定、OF 移一位,根据结果定;移多位,不 确定 例1:MOV A
43、L,10000101B MOV CL,03H ;右移三位=除8 SHR AL,CL ;AL=10H=16例2:MOV AL,10000000B MOV CL,03H SAR AL,CL ;AL=F0H=-16 用移位指令和循环指令可完成多精度数移位例1:完成 AX,BX左移一位 SHL BX,1 RCL AX,1例2:完成AX,BX 右移一位(无符号数)SHR AX,1 RCR BX,1 四、字符串处理指令传送字节串或字串字节串或字串比较字节串或字串扫描取字节串或字串存字节串或字串MOVS 目的,源MOVSB/MOVSWCMPS 目的,源CMPSB/CMPSWSCAS 目的 SCASB/SCA
44、SWLODS 源 LODSB/LODSWSTOS 目的 STOSB/STOSW 字符串指令有五种:传送、比较、扫描、取和存字符串指令采用隐含寻址,指令中用到寄存器和标志 寄存器/标志 用途 SI 源字符串的偏移量 DI 目的字符串的偏移量 CX 重复计数器 AL/AX DF ZF SCAS 作为扫描值 LODS 作为目的操作数 STOS 作为源操作数=0 SI,DI自动增量 CLD =1 SI,DI自动减量 STD 扫描/比较结束符 传送指令:从源区目的区 DS:(SI)ES:(DI)字节 SI1 SI DI1 DI 字 SI2 SI DI2 DI串比较:源串和目的串比较 DS:(SI)-ES
45、:(DI)相等 1 ZF,不相等 0ZF字节 SI1 SI DI1 DI 字 SI2 SI DI2 DI串扫描:用于扫描某个关键字 字节 AL-ES:(DI)DI1DI 相等 1 ZF,不相等 0ZF 字 AX-ES:(DI)DI2DI 相等 1 ZF,不相等 0ZF 存入串指令:把累加器内容存入指定附加段 字节 ALES:(DI)DI1DI 字 AXES:(DI)DI2DI 取串指令:把数据段内容送累加器 字节 DS:(SI)AL SI1SI 字 DS:(SI)AX SI2SI 重复 REP 重复,直至CX=0 等于/为零重复 REPE/REPZ ZF=1重复串操作,直至CX=0不等/不为零
46、重复 REPNE/REPNZ ZF=0重复串操作,直至CX=0 例1:要求把程序段以SRC-MESS为偏移地址的字符串HELLO传送到附加段以NEW-LOC的单元中。例2:比较两个字符串,首址分别为PASSWORD,IN-WORD 若输入字符串相同,程序开始运行,否则,程序驱动扬声器发声DATA SEGMENTPASSWORD DB 750430LIIN-WORD DB 750424LECOUNT EQU 8DATA ENDSCODE SEGMENT ASSUME DS:DATA,ES:DATA LEA SI,PASSWORD LEA DI,IN-WORD MOV CX,COUNT CLD R
47、EPZ CMPS JNE SOUND OK:SOUND:CODE ENDS 在某一字符串中搜寻是否有字符A,若有,则把搜索次数记下来,送BX寄存器。若没有查到,则将BX 的内容清0,设字符串起始地址为0 MOV DI,OFFSET STRING MOV CX,COUNT MOV AL,A CLD REPNE SCASB JZ FIND MOV DI,0FIND:MOV BX,DI 五、控制转移类指令控制转移类指令用于控制程序的走向8086的控制转移指令有无条件转移、条件转移、长转移、短转移。8086的转移指令有28条,分4组 1、条件转移指令1)直接标志转移(10条)JC CF=1 JNC C
48、F=0 JZ/JE ZF=1 JNZ/JNE ZF=0 JS SF=1 JNS SF=0 JO OF=1 JNO OF=0 JP/JPE PF=1 奇 JNP/JPO PF=0 偶 求AL,BL 两数之和、若有进位,则AH 置1,否则AH 清0 ADD AL,BL JC NEXT MOV AH,0 JMP EXITNEXT:MOV AH,1EXIT:2)间接标志转移(8条)无符号数JA/JNBE CF ZF=0 高于/不低于等于 JAE/JNB CF=0 高于等于/不低于 JB/JNAE CF=1 低于/不高于等于 JBE/JNA CF ZF=1 低于等于/不高于 带符号数JG/JNLE (S
49、F OF)ZF=0 大于/不小于等于 JGE/JNL SF OF=0 大于等于/不小于 JL/JNGE SF OF=1 小于/不大于等于 JLE/JNG (SF OF)ZF=1 小于等于/不大于 设某个学生的英语成绩已在AL寄存器,若低于60分,则打印F(FAIL),若高于或等于85,则打印G(GOOD),当60分和84分之间,打印P(PASS)CMP AL,60 JB FAIL CMP AL,85 JAE GOOD MOV AL,P JMP PRINT MOV AL,F JMP PRINT MOV AL,G FAIL:GOOD:PRINT:在以首址为TABLE 的10个内存字节单元中存放10
50、个带符号数,要求统计正数、负数和零的个数,并把结果存放在PLUS、NEGT、ZERO单元DB 01H,80H,0F5H,32H,86H DB 74H,49H,0AFH,25H,40H DB 0 DB 0 DB 0 MOV CX,10 MOV BX,0 CMP TABLEBX,0 JGE GRET_EQ INC NEGT JMP NEXT JG P_INC INC ZERO JMP NEXTPLUS:NEGT:ZERO:AGAIN:GRET_EQ:INC PLUS INC BX DEC CX JNZ AGAINP_INC:NEXT:TABLE:2、无条件转移和过程调用1)JMP 无条件转移段内直