微机原理与应用教师备课教案本(理论课程)参考模板范本_第1页
微机原理与应用教师备课教案本(理论课程)参考模板范本_第2页
微机原理与应用教师备课教案本(理论课程)参考模板范本_第3页
微机原理与应用教师备课教案本(理论课程)参考模板范本_第4页
微机原理与应用教师备课教案本(理论课程)参考模板范本_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

教师备课教案本(理论课程)学院:课程名称:微机原理与应用教师姓名:×××授课时间:电子科技大学××学院

教师授课计划*课程名称微机原理与应用学分3课程类型1、普通教育必修课();2、学科基础必修课();3、专业方向课();4、学科基础选修课();5、素质教育选修课();6、专业选修课()。学时分配总学时:48;课堂讲授:48学时;实践(验)课学时授课起止周1-12授课班级15自动化、电气班级人数83/119/84授课总次数*24教材名称微计算机原理与应用作者马争、刘磊、彭芳出版时间2013章节基本内容计划学时第1章①计算机的基本结构和工作原理②典型微处理器系统结构及工作原理③数据类型2第2章①微处理器的性能指标②8086的寄存器结构③8086的引脚特性④8086的时钟和总线周期⑤8086的工作方式⑥8086的总线操作时序⑦8086的存储器组织、I/O端口组织6第3章①寻址方式②8086指令系统③中断及中断指令④PCDOS系统功能调用与基本I/O子程序调用10第4章①汇编语言程序规范②伪指令及其应用③程序的基本结构及基本程序设计6第5章①半导体存储器的分类及特点②随机存储器与只读存储器③主存储器系统的设计4第6章①微机与外设间的输入/输出接口②输入/输出的控制方式③DMA控制器4第7章①8086的中断机构②外部中断③中断的优先权管理④可编程中断控制器8259A6第8章①并行接口芯片8255A②串行通信接口③可编程定时器/计数器825310考核要求(根据课程实际情况,不做要求的项目可不写):1、平时成绩的构成比例和考核方式;2、期中成绩的构成比例和考核方式;3、期末成绩的构成比例和考核方式;4、实验成绩的构成比例和考核方式。*注:1、教师首次授课时应将本计划告知学生;2、理论课程教案一般以2节课或3节课为一个单元编写,“授课总次数”即单元总数。填表日期:2017教案1时间安排第1周,总第1次课章节名称第1章概述教学目的1. 了解微计算机系统的组成2. 了解现代微机系统的组成3. 掌握IA-32结构的数据类型4.微型计算机中数的编码和字符的表示教学重点与难点重点:计算机的基本结构及工作原理;微型计算机中数的编码和字符的表示难点:典型微处理器的工作原理,微型计算机中数的编码和字符的表示。教学内容与过程设计教学内容与过程设计[课前导入:课程简介,学习本课程的意义和作用,如何掌握本课程的内容。][进入课程学习:首先回顾计算机和微处理器的发展历史。]1.1计算机和微型计算机的发展概况1.1.1计算机的发展第一代电子计算机称为电子管计算机。第二代计算机称为晶体管计算机,其主要逻辑元件采用的是晶体管。第三代计算机的内存储器采用了半导体存储器,可靠性和存取速度有了明显的改善。第四代计算机以采用大规模和超大规模集成电路为标志。关于第五代计算机人们正在进行着多方面的探索。1.1.2微型计算机的发展第一阶段(1971~1973):典型的微型机以Intel4004和Intel4040为基础。第二阶段(1974~1977):以8位微处理器为基础。第三阶段(1978~1981):以16位和准32位微处理器为基础。第四阶段(20世纪80年代):IBM公司推出开放式的IBMPC第五阶段(20世纪90年代开始):RISC(精简指令集计算机)技术的问世使微型机的体系结构发生了重大变革。[接着了解计算机的基本结构和它的基本工作原理]1·2计算机的基本结构和工作原理1.2.1计算机的基本结构计算结果计算结果或可识别信息程序原始数据或各种信息运算器存储器控制器输出设备输入设备计算机的工作原理计算机中的信息:数据和控制命令例:21×12−117÷13Step1:将解题步骤和数据输入存储器中;Step2:计算机开始顺序执行指令;取21、12到运算器相乘,结果暂存入存储器;取117、13相除,结果也放入存储器暂存;最后将暂存的两个结果在运算器中相减。[数字计算机的工作原理是由冯.诺依曼提出的]补充:冯.诺依曼体系结构[了解几个基本概念]几个基本概念介绍:微处理器(CPU)微计算机微处理器系统[基本原理了解后,再来看看微机的组成]1·3微型计算机的基本组成1.3.1硬件系统[引导学生了解现代微机的硬件构成]1.微计算机主板2.外围设备3.电源、机箱1.3.2软件系统[介绍现有的软件分类]1.系统软件2.程序设计语言3.语言处理程序4.服务性程序5.中间件6.应用软件1.3.3微机系统结构的特殊性软件的固化总线结构[从微处理器系统结构讲到典型微处理器和存储器的内部结构,最后看看程序是怎么执行的]1.5微计算机实例[根据图讲解286主板与P4主板的结构。]P4主板与286主板有以下不同:CPU及其插座BIOS和CMOSRAM芯片内存储器插槽:DDR与DIMM芯片组:是“南桥”和“北桥”的统称产生各种时钟频率的电路外频与前端总线频率(FSB)的区别:总线扩展槽串行接口并行接口其他插座1·6微型计算机中数的编码和字符的表示[主要讲解微机中数的编码]1.6.1常用的名词术语[在黑板上写明这几个单位的联系]位(Bit):指一个二进制位。字节(Byte):指相邻的8个二进制位。字:2个字节,16位。双字、四字、双四字:32位、64位、128位。1.6.2数的表示法1.进位进数制[根据表格讲解常用数制的基数、进位、可用数码]进位制数的表示:二进制数用B或b结尾八进制数用Q或q结尾十进制数可不用结尾字母,

也可用D或d结尾十六进制数用H或h结尾①数值的构成一个数值各位数字(数码)表示的值不仅与该数字有关,且与所在位置有关。位权:基数的i次方每个数位上的数字所表示的值=该数码×位权②K进制数转换为十进制数位权展开法[讲解【例】【思考】讨论]③十进制数转换为K进制数将整数部份和小数部份分开来算。整数部份:除以K取余数,直到商为0,余数从自下而上排列小数部份:以小数部分乘以K取积的整数,并将其自上而下排列,直到小数部份为0或规定精度为止[详细讲解例题]④八、十六进制与二进制相互转换法则:以小数点为界,每个八进制数对应三位二进制数,每个十六进制数对应四位二进制数。[详细讲解例题]⑤二进制数的简单运算算术运算(加减乘除)加法:逢2进10+0=00+1=11+0=11+1=10(进位)减法:借1当20-0=01-0=11-1=00-1=1(借位)乘法:加法+移位0*0=00*1=01*0=01*1=1除法:减法+移位0÷1=01÷1=1[详细讲解例题]二进制数的逻辑运算与运算:都是1时才为1 运算符:A&B或运算:都是0时才为0 运算符:A|B异或运算:相异为1 运算符:A^B非运算:0变1,1变0 运算符:~A[详细讲解例题][课堂练习1]2.机器数无符号数有符号数有符号数可有三种表示方法,分别叫做原码、反码和补码①原码原码表示的有符号数,最高位为符号位,数值位部分就是该数的绝对值。[详细讲解例题]②反码最高位规定为符号位,但数值部分对于正数是其绝对值,而对于负数则是其绝对值按位取反(即1变0,0变1)得到的。[详细讲解例题]补码对于正数来说同原码、反码一样,但负数的数值位部分为其绝对值按位取反后末位加1所得[详细讲解例题][课堂练习2]有符号数运算时的溢出问题溢出检测:结论:[课堂练习3]3.BCD码(十进制数的二进制编码)采用二进制数对每一位十进制数字进行编码的方法来表示一个十进制数压缩BCD码(组合式)非压缩BCD码(非组合式)BCD码的加减运算的问题:解决方法:作加6调整[详细介绍加6调整的3个规则]1.6.3字符的表示法七位二进制编码,ASCII码[讲解ASCII码表的查找方法]1.6.4数据在内存中的存放口诀:低对低,高对高[本课小节]本章小结微计算机的组成和工作原理典型微处理器的内部结构计算机中的编码表示和数据类型练习1:将十进制数89.625转换为十六进制数将十进制数89.375转换为二进制数练习2:设机器字长是8位,写出下列各数的原码和补码。①+1010101B②-1010101B③-35练习3:补码加法10111011十11110111的计算结果是?并判断是否溢出?课堂讨论和小节。教学后记**“教学后记”是授课完毕之后,教师对授课准备情况、授课过程及授课效果的回顾与总结,因此,教师应及时手写补充完整本部分内容。

教案2时间安排第1周,总第2次课章节名称第2章80x86微处理器教学目的①了解微处理器的主要性能;掌握8086的内部结构;掌握8086的寄存器结构。教学重点与难点重点:8086的内部结构及各部分的作用;8086的寄存器结构以及每个寄存器的用途。难点:地址产生器的作用。教学内容与过程设计教学内容与过程设计课前导入:回忆上节课所讲的8位微机系统的典型结构。[特别强调字长、访存空间的意义]2.1微处理器的主要性能指标字长它决定了一次传送的二进制数的位数。指令数指令是计算机完成某种操作的命令。运算速度是计算机完成任务的时间指标。访存空间由地址总线的条数决定。高速缓存大小为解决高速CPU和低速主存间的速度匹配问题,需在CPU与主存储器间建立高速缓存(cache)。虚拟存储空间是一种通过硬件和软件的综合来扩大用户可用存储空间的技术。是否能构成多处理器系统是否有协处理器接口。制造工艺补充:微机的几个先进技术2.28086/8088微处理器[首先根据下图重点细致的讲解8086的内部结构]2.2.18086的内部结构执行部件EU执行部件的功能就是负责从指令队列取指令并执行。总线接口部件(BIU)它的任务是执行总线周期,完成CPU与存储器和I/O设备之间信息的传送。地址产生器[重点讲解]用于产生20位的实际物理地址。2.2.28086的寄存器结构[从总体上介绍寄存器的结构,然后强调每个寄存器的作用]1、通用寄存器组数据寄存器指EU中的AX、BX、CX、DX4个16位寄存器,它们主要用来保存算术和逻辑运算的操作数和中间结果。地址指针和变址寄存器包括SP、BP、SI、DI4个16位寄存器,主要功能是对存储器操作数寻址时,形成20位物理地址的偏移地址部分。8086内存中存放的信息按特征通常分为:①程序指令信息,用以指示CPU应执行何种操作;②数据信息,程序执行中要处理的对象;③堆栈信息,存储需要压入堆栈的数据、状态信息、返回地址和中间结果。2.段寄存器用于存放当前程序所用的各段的起始(首)地址。代码段寄存器CS:存放当前执行程序所在段的基址。数据段寄存器DS:存放当前数据段的起始地址。堆栈段寄存器SS:堆栈操作所处理的操作数常存放在当前堆栈段中。附加段寄存器ES3.状态标志寄存器F状态标志位CF进位标志PF奇偶标志AF辅助进位标志ZF零标志SF符号标志;OF溢出标志其中,溢出标志位的讲解要插入溢出检测的问题。控制标志位DF方向标志:若DF=1,串地址为减量;DF=0,串地址为增量。IF中断允许标志:开中断标志位。TF陷阱标志:也称跟踪标志位。[做习题2-4]4.指令指针寄存器IPIP指向当前需要取出的指令地址的偏移量。当BIU从内存中取出指令字节后,IP自动加1。程序员不能直接访问IP的内容。[问题1][问题2]本课小结问题1:如何产生执行代码的指令的PA?问题2:如何产生某一操作数的PA?教学后记*

教案3时间安排第2周,总第3次课章节名称第2章微处理器体系结构教学目的理解8086最小和最大方式时共有引脚的意义。掌握8086的总线周期的概念。教学重点与难点重点:8086常用引脚的使用。难点:状态标志寄存器中9个标志位各自的意义;8086系统地址总线、数据总线、8条控制总线的用途。教学内容与过程设计教学内容与过程设计课前导入:回忆上节课所讲的8086内部结构,其中EU中有通用寄存器,BIU中有段寄存器,指令指针寄存器,这些我们统称位寄存器组织。2.2.38086的引脚特性[要掌握微处理器系统的设计,必须知道微处理器的各引脚定义]8086CPU有40条引脚,采用双列直插式(DIP)封装形式。8086有两种工作模式(由33号引脚MN/MX控制):①最小模式:是指系统中只有8086一个微处理器。33引脚接高电平。②最大模式:适用于组成中到大规模的8086系统,这样的系统通常包含有两个或多个微处理器。33引脚接低电平。共用的引脚说明:1.AD15~AD0地址/数据复用引脚(双向、三态)采用分时的方法先送地址后送数据的复用引脚。2.A16/S3~A19/S6地址/状态复用引脚(输出、三态)S6始终保持低电平;S5指示中断允许标志IF的状态;S4、S3状态结合起来指示当前正在使用的是哪个段寄存器。3.控制总线引脚BHE/S7高8位数据总线允许/状态复用信号线(输出,三态)BHE用来对以字节组织的存储器和IO实现高位和低位字节的选择,当BHE/S7引脚输出BHE信号时,表示高8位数据线D15~D8上的数据有效。RD读控制(输出,三态,低电平有效)此信号指出将要执行一个对存储器或I/O端口的读操作。NMI非屏蔽中断请求(输入,上升沿触发)此信号是一个由低到高的上升沿。NMI不受中断允许标志IF的影响,也不能用软件进行屏蔽,只要此信号一出现,CPU就在现行指令结束以后,执行对应的非屏蔽中断处理程序。INTR可屏蔽中断请求(输入,高电平有效)8086CPU在每条指令的最后一个时钟状态会对INTR信号进行采样,如CPU中的中断允许标志IF=1,并且又接收到INTR信号,那么,CPU就会在结束当前指令后,停止执行指令序列,响应中断请求,转去执行中断服务程序。IF=0,中断请求被屏蔽。READY准备就绪信号(输入,高电平有效)READY信号是由所访问的存储器或I/O设备发来的响应信号。READY信号有效时,表示存储器或I/O设备准备就绪,马上就可进行一次数据传输。TEST等待测试(输入,低电平有效)TEST信号是和指令WAIT结合起来使用的。RESET复位信号(输入,高电平有效)重点掌握复位后各寄存器的状态。CLK系统时钟(输入)时钟信号为CPU和总线控制逻辑电路提供定时手段。8086要求时钟信号的占空比为1:2,即1/3周期为高电平,2/3周期为低电平。4.电源线Vcc和地线GNDVcc线接入的电压为+5V±10%;8086有两条GND均应接地。5.其它控制线:24~31脚这些控制线的性能将根据方式控制线MN/MX所处状态而确定。[做习题2-11]2.2.58086/8088的总线操作时序1.几个概念[重点理解这几个概念之间的区别]指令周期:执行一条指令所需要的时间。不同的指令其指令周期不同。总线周期:CPU从存储器或输入输出端口存取一个字节所花的时间。T状态:一个最基本的总线周期由4个时钟周期组成,时钟周期是CPU的基本计量单位,由计算机主频决定(主频的倒数)。如:8086的主频为5MHz,1个时钟周期就是200ns。一个时钟周期就是一个T状态。总线时序:即CPU通过总线进行操作(读/写、释放总线、中断响应)时,总线上各信号之间在时间上配合关系,它是同CPU的操作功能有关的。2.总线操作按照数据传输方向来分,总线操作可分为读总线操作和写总线操作。-读总线操作是CPU从存储器或外设端口读取数据;-写总线操作是CPU将数据写入存储器或I/O端口。[理解每个T状态CPU的动作]一个典型的总线周期序列以一个总线读周期为例,说明总线操作的基本过程。①T1状态,CPU向多路复用总线发出地址信息,指出寻址的存储单元或外设端口的地址。②T2状态,CPU从总线上撤销地址,使总线的低16位置成高阻状态,为传输数据作准备。总线的最高4位(A19-A16)用来输出总线状态信息,这些状态信息用来表示中断允许状态、当前正在使用的段寄存器情况。③T3状态,多路总线的高4位继续提供状态信息,而低16位上出现由CPU写出的数据或者CPU从存储器或I/O端口读入的数据T3状态上升沿时刻测试READY引脚。若为低电平,意味着数据未准备好。在T3之后自动插入一个或几个Tw等待周期,直到READY变为有效高电平。④T4状态,总线周期结束。如果一个总线周期之后,不立即执行下一个总线周期,则系统处于空闲状态,执行空闲周期,空闲周期可包含一个或多个时钟周期。总线空操作是总线接口部件对执行部件的等待。本课小结假设前一条指令执行加法:那么,执行完这条指令后各标志是?P75习题2-42-11教学后记*

教案4时间安排第2周,总第4次课章节名称第2章微处理器体系结构教学目的理解8086最小工作方式下24~31引脚控制线功能的定义掌握8086最小方式下的典型结构。掌握8086的存储器的标准结构、分段的概念、实际地址与逻辑地址、堆栈的特点;掌握I/O端口的概念,I/O端口的编址方式。教学重点与难点重点:最小方式的特点。最小方式下的典型结构和常用控制引脚的定义。8086的存储器的标准结构、分段的概念、堆栈的使用。难点:最小方式下的典型结构和常用控制引脚的定义。存储器的分段存储概念,堆栈的使用。教学内容与过程设计教学内容与过程设计课前导入:回忆上节课所讲的8086最大最小方式的共用引脚。这节课开始讲解最小工作方式。在讲最小方式前,先讲解总线周期的概念。2.2.48086的工作方式1.最小工作方式所谓最小方式,就是在系统中只有8086一个微处理器。在这种系统中,所有的总线控制信号都直接由8086产生,因此,系统中的总线控制电路被减到最少。最小方式下,24~31引脚控制线功能的定义-M/IO存储器/输入输出控制信号(输出)最小模式下作为区分CPU进行存储器访问还是I/O访问的控制信号。-WR写控制信号(输出、低电平有效,三态)有效时,表示CPU当前正在进行对存储器或I/O的写操作。-HOLD总线保持请求信号(输入,高电平有效)当系统中CPU之外的另一个主模块要求占用总线时,通过此引脚向CPU发一个高电平的请求信号。-HLDA总线保持响应信号(输出,高电平有效)是与HOLD配合使用的联络信号。-INTA中断响应信号(输出,低电平有效)是在中断响应周期中由CPU对外设中断请求作出的响应,与INTR配合使用。-ALE地址锁存允许信号(输出,高电平有效)这是8086提供给地址锁存器8282/8283的控制信号(作STB)。-DT/R数据收发控制信号(输出,三态)系统在用8286/8287作为数据总线收发器时,DT/R#信号用来控制8286/8287的数据传送方向。-DEN数据允许信号(输出,低电平有效,三态)在用8286/8287作为数据总线收发器时,DEN#是8086提供给8286/8287的选通信号,接至其OE(OutputEnable——输出允许)端,表示CPU当前准备发送或接受一个数据。 最小方式下的典型结构8282/8283锁存器Intel公司的8282/8283是8位带锁存器的单向三态不反相/反相的缓冲器,用来锁存8086访问存储器或I/O端口时,于总线周期T1状态下发出的地址信号。8286/8287总线收发器当一个系统中所含的外设接口较多时,数据总线上需要有发送器和接收器来增加驱动能力。8284A时钟信号发生器8284A是Intel公司专为8086设计的时钟发生器,能①产生8086所需的频率恒定的系统时钟信号(即主频);②对外界输入的RDY信号和RES信号进行同步。[做习题2-17]2.2.8存储器组织[本课程的一个重要内容,需详细讲解1.存储器分段每段最长可达64K字节各段起始地址能被16整除。(低4位为0)各段之间可分开、部分或完全重叠、可首尾相接。根据各段的用途将其定义为CS、DS、ES、SS段。并用偏移地址表示被访问单元。常在CS中用IP表示偏移量,SS中用SP、BP,DS中用BX、SI、DI、数值。2.实际地址和物理地址实际地址:是存储单元的实际地址编码。逻辑地址:由段地址和偏移地址两部分组成。逻辑地址的表示格式为:段地址∶偏移地址。例如8000∶0100表示段地址为8000H,偏移地址为0100H。一个存储单元只有一个实际地址,一个实际地址可对应多个逻辑地址。3.堆栈堆栈是一个按照后进先出(LIFO)的原则存取数据的存储区域。一般把内存的一个区域作为堆栈。用(SS:SP)来指示当前数据的存放处。作用:为了在调用子程序(或转向中断服务程序)时,把断点及有关的寄存器、标志位及时正确地保存下来,并保证逐次正确返回。建栈8086通过赋值SS和SP建栈。建栈MOVAX,1050HMOVSS,AXMOVSP,000EH堆栈的最大容量为SP的初值。SP总是指向栈顶。进栈进栈操作:先SP减2,再内容进栈。进栈PUSHAX(设AX=1234H)PUSHBX(设BX=5CF8H)①SP-1→SP,AH送入SP;②SP-1→SP,AL送入SP;③SP-1→SP,BH送入SP;④SP-1→SP,BL送入SP;出栈先栈顶内容出栈,再修改SP,使SP加2。(字操作)POPCXPOPDS①SP+1→SP,(SP)→CL;②SP+1→SP,(SP)→CH;③SP+1→SP,(SP)→DL;④SP+1→SP,(SP)→DH;5.专用的和保留的存储单元8086/8088系统的规定:00000H~003FFH(共1KB):用来存放中断向量表。FFFF0H~FFFFFH(共16KB):用于系统复位启动,存放一条无条件转移指令,转到系统的初始化程序。2.2.7I/O端口组织8086CPU和外部设备之间是通过I/O芯片进行联系,达到相互间传输信息的目的。每个I/O芯片上都有一个端口或几个端口,一个端口往往对应于芯片上的一个寄存器或一组寄存器。微机系统要为每个端口分配一个地址。叫端口地址或端口号,各个端口号和存储器单元地址一样,应具有唯一性。8086的I/O端口有两种编址方法存储器映象的I/O将I/O端口地址置于1MB的存储器空间中,把它们看作存储器单元对待,此时,I/O端口地址空间是内存地址空间的一部分。采用独立编址的I/0此时,I/O端口地址空间与内存地址空间是独立的两个不同空间。8086就可以采用此种处理方式。本课小结本章小结练习:作业:本课小结教学后记*

教案5时间安排第3周,总第5次课章节名称第3章指令系统教学目的掌握8086指令的基本格式;掌握8086的寻址方式。教学重点与难点重点:8086的寻址方式。难点:8086各种寻址方式的区别及意义。教学内容与过程设计教学内容与过程设计课前导入:介绍第3章的作用。什么是指令系统计算机的指令系统就是指该计算机能够执行的全部指令的集合每种计算机都有它支持的指令集合3.1指令的基本格式操作码:指示计算机所要执行的操作类型,如传送、运算、移位、跳转等操作,在汇编语言中用助记符表示。操作数或操作数地址:指出指令执行操作所需要的操作数。一个具体的数值存放数据的寄存器指明数据在主存位置的存储器地址操作码操作数1,操作数2 ;注释每种指令的操作码:用一个唯一的助记符表示(指令功能的英文缩写)对应着机器指令的一个二进制编码操作数2,称为源操作数src,它表示参与指令操作的一个对象操作数1,称为目的操作数dst,它不仅可以作为指令操作的一个对象,还可以用来存放指令操作的结果3.2寻址方式[介绍寻址的目的是为了寻找操作数,根据操作数存放位置的不同又有多种寻址方式]1.固定寻址指指令的某一操作数固定在某一寄存器中。如单操作数指令,加法的调整指令AAA,其操作固定在AL中进行,且AL隐含在操作码中的。2.立即寻址指令中的操作数直接存放在机器代码中,紧跟在操作码之后(操作数作为指令的一部分存放在操作码之后的主存单元中)立即数寻址方式常用来给寄存器赋值[举例说明]MOVAX,1090H(若CS=1000H,IP=100H)3.寄存器寻址操作数存放在CPU的内部寄存器reg中。[举例说明]MOVAX,BX(若AX=1234H,BX=4567H)执行完后:4.存储器寻址指令中给出操作数的主存地址信息(偏移地址,称之为有效地址EA),而段地址在默认的或用段超越前缀指定的段寄存器中。⑴直接寻址方式有效地址在指令中直接给出默认的段地址在DS段寄存器,可使用段超越前缀改变MOVAX,[2000H];AX←DS:[2000H]MOVAX,ES:[2000H];AX←ES:[2000H]段超越前缀指令段超越的示例⑵寄存器间接寻址方式有效地址EA不直接放在指令中,而是通过基址寄存器BX、BP或变址寄存器SI、DI中的任一个寄存器的内容间接得到。MOVAX,ES:[DI] ;AX←ES:[DI]MOVAX,[BX](若DS=2000HBX=1000H)PA=16*(SS)+(BP)⑶寄存器相对寻址方式有效地址是寄存器内容与8位或16位位移量之和,寄存器可以是BX、BP或SI、DI段地址对应BX/SI/DI寄存器默认是DS,对应BP寄存器默认是SS;可用段超越前缀改变(BX)PA=16*(DS)+(SI)+8/16位位移量(DI)PA=16*(SS)+(BP)+8/16位位移量[举例说明]⑷基址变址寻址方式有效地址由基址寄存器(BX或BP)的内容加上变址寄存器(SI或DI)的内容构成:EA=BX/BP+SI/DI段地址对应BX基址寄存器默认是DS,对应BP基址寄存器默认是SS;可用段超越前缀改变[举例说明]⑸相对基址变址寻址方式有效地址是基址寄存器(BX/BP)、变址寄存器(SI/DI)与一个8位或16位位移量之和:EA=BX/BP+SI/DI+8/16位位移量段地址对应BX基址寄存器默认是DS,对应BP基址寄存器默认是SS;可用段超越前缀改变多种表达形式5.串操作的隐含寻址在执行串操作中,使用了隐含的变址寄存器寻址方式,即当执行串操作指令时,用源变址寄存器SI指向源串的第一个字或字节,用目的变址寄存器DI指向目的串的第一个字或字节,CPU将自动调整SI、DI,以顺序地寻址字节串或字串操作数。MOVSB;用于字节传送6.I/O端口寻址直接端口寻址直接端口寻址是在指令中直接给出要访问的端口地址,一般采用2位十六进制数表示,也可以用符号表示,可访问的端口范围为0~255。INAL,25H;表示从I/O端口地址为25H的端口中取数据送到寄存器AL中OUTPORT,AL;直接端口地址用符号表示寄存器间接端口寻址若访问的端口地址值大于255,则必须用I/O端口的间接寻址方式。它是把I/O端口的地址先送到DX中,用DX作为间接寻址寄存器。此种方式可访问的端口范围为0~65535。指令执行时间一条指令的执行时间是指取指令和执行指令所花的时间执行一条指令所花的总时间=指令的基本执行时间+计算EA的时间+执行总线读/写周期的时间[课堂练习]本课小结课堂练习设DS=1000H,BX=200H,SI=2H,(10200H)~(10205H)的内容为10H、2AH、3CH、46H、59H、6BH。

问:下列每条指令执行完成后,AX寄存器的内容是什么?

MOVAX,0200H

MOVAX,[200H]

MOVAX,BX

MOVAX,3[BX]

MOVAX,[BX+SI]作业:

P140习题3-2教学后记*

教案6时间安排第3周,总第6次课章节名称第3章80X86指令系统教学目的掌握8086数据传送类指令。教学重点与难点重点:数据传送指令的使用。难点:数据传送类指令的使用注意事项。教学内容与过程设计教学内容与过程设计课前导入:帮助记忆指令的寻址方式。再进入新课学习3.38086/8088指令系统学习指令的注意事项3.3.1数据传送类指令1.通用数据传送指令(1)传送指令MOV语句格式:MOVdst,src(src)→(dst)功能:将源操作数传送入目的地址,源地址内容不变。MOV指令传送功能非法传送种种(一)两个操作数的类型要一致绝大多数双操作数指令,除非特别说明,目的操作数与源操作数必须类型一致,否则为非法指令MOVAL,050AH;非法指令,050Ah为字,而AL为字节寄存器有明确的字节或字类型,有寄存器参与的指令其操作数类型就是寄存器的类型MOVES,AL;非法指令,AL为8位寄存器,ES为16位寄存器对于存储器单元与立即数同时作为操作数的情况,必须显式指明;byteptr指示字节类型,wordptr指示字类型如:MOVWORDPTR[SI],4501H(二)两个操作数不能都是存储器8086指令系统不允许两个操作数都是存储单元(除串操作指令),要实现这种传送,可通过寄存器间接实现movax,buffer1;ax←buffer1(将buffer1内容送ax)movbuffer2,ax;buffer2←ax;这里buffer1和buffer2是两个字变量;实际表示直接寻址方式(三)要小心段寄存器的操作不允许立即数传送给段寄存器MOVDS,100H;非法指令:立即数不能传送段寄存器不允许直接改变CS值MOVCS,[SI] ;不允许使用的指令不允许段寄存器之间的直接数据传送MOVDS,ES;非法指令:不允许段寄存器间传送[课堂练习](2)堆栈操作指令堆栈只有两种基本操作:进栈和出栈,对应两条指令PUSH和POP。PUSHSRC(目的隐含SP)POPDST(源隐含SP)使用注意事项8086堆栈都是对字操作,不允许对字节操作。PUSHAL每执行一条入栈指令,(SP)自动减2,高位数先入栈;出栈时,(SP)自动加2,低位数先出栈;8086的堆栈是向地址低的方向生长。CS寄存器可以入栈,但不能随意弹出一个数据到CS。在使用堆栈操作保存多个寄存器内容和恢复多个寄存器时,要按"先进后出"原则来组织入栈和出栈的顺序。具体来说,就是要注意:-要成对使用PUSH与POP指令,即PUSH、POP指令的个数应一致。-使用PUSH与POP指令的顺序,必须相反。(3)交换指令XCHG指令格式:XCHGOPR1,OPR2执行操作:OPR1与OPR2内容互换使用注意事项OPR1和OPR2不能同时为存储器操作数;XCHG[2000H],[BX+DI]任一个操作数都不能使用段寄存器,也不能使用立即数。 XCHGDS,BX XCHGAX,02FEH2.累加器专用指令ⅰ输入/输出指令(1)输入指令IN将外设数据传送给CPU内的AL/AXINAL,i8;字节输入:AL←I/O端口(i8直接寻址)INAX,DX;字输入:AX←I/O端口(DX间接寻址)(2)输出指令OUT将CPU内的AL/AX数据传送给外设OUTi8,AL;字节输出:I/O端口←AL(i8直接寻址)OUTDX,AX;字输出:I/O端口←AX(DX间接寻址)ⅱ换码指令XLAT将BX指定的缓冲区中、AL指定的位移处的一个字节数据取出赋给ALXLAT ;al←ds:[bx+al]换码指令执行前:在主存建立一个字节量表格,内含要转换成的目的代码表格首地址存放于BX,AL存放相对表格首地址的位移量换码指令执行后:将AL寄存器的内容转换为目标代码MOVBX,TABLEINAL,10XLATTABLEOUT10,AL换码指令没有显式的操作数,但使用了BX和AL;因为换码指令使用了隐含寻址方式——采用默认操作数本课小结练习:判断下列指令的对错:MOV[1000H],[2000H]MOVDS,300HMOVDS,ESMOVCS,AXMOVAX,CSMOVAX,BLMOVSS,21CEHMOVCX,DSMOVDL,0205HMOV[1002H],56H作业:P140习题3-3教学后记*教案7时间安排第4周,总第7次课章节名称第3章80X86指令系统教学目的掌握8086地址-目标传送指令,加法指令、减法指令教学重点与难点重点:掌握LEA,ADD,ADC,INC,SUB,SBB,DEC,CMP等指令。难点:这些指令的使用注意事项。教学内容与过程设计教学内容与过程设计课前导入:复习上节课所讲的指令,做练习P1413-6。3.地址-目标传送指令有效地址送寄存器LEA将存储器操作数的有效地址传送至指定的16位寄存器中LEAr,mem;r←mem的有效地址EA[举例说明]movbx,0400hmovsi,3chleabx,[bx+si+0f62h];BX=0400h+003ch+0f62h=139EH获得主存单元的有效地址;不是物理地址,也不是该单元的内容。指针送寄存器和DS的指令 LDSr,mem;r←mem,;DS←mem+2LDS指令将主存中mem指定的字送至r,并将mem的下一字送DS寄存器通常指定SI作为寄存器r[举例说明]LDSSI,[2130H]指令执行前:(DS)=3000H,指令执行后:(SI)=3C1FH(DS)=2000H⑶指针送寄存器和ES的指令LESr,mem;r←mem,;ES←mem+2LES指令将主存中mem指定的字送至r,并将mem的下一字送ES寄存器通常指定DI作为寄存器r4.标志传送指令(1)读取标志指令LAHFLAHF;AH←FLAGS的低字节(2)设置标志指令SAHFSAHF;FLAGS的低字节←AH(3)标志寄存器的出栈和入栈指令PUSHF;SP←SP-2;SS:[SP]←FLAGSPUSHF指令将标志寄存器的内容压入堆栈,同时栈顶指针SP减2POPF;FLAGS←SS:[SP];SP←SP+2POPF指令将栈顶字单元内容送标志寄存器,同时栈顶指针SP加23.3.2算术运算类指令1.加法类指令加法指令ADDADD指令将源与目的操作数相加,结果送到目的操作数ADD指令按状态标志的定义相应设置ADDr,im/r/mem ;r←r+im/r/memADDmem,im/r ;mem←mem+im/r[举例说明]MOVAX,5463H ;AX=5463HADDAX,F0F0H ;AX=4553HCF=1,ZF=0,SF=0,OF=0带进位加法指令ADCADC指令将源与目的操作数相加,再加上进位CF标志,结果送到目的操作数ADC指令按状态标志的定义相应设置ADC指令主要与ADD配合,实现多精度加法运算ADCr,im/r/mem;r←r+im/r/mem+CFADCmem,im/r ;mem←mem+im/r+CF[举例说明]movax,4652h ;ax=4652haddax,0f0f0h ;ax=3742h,movdx,0234h ;dx=0234hadcdx,0f0f0h ;dx=f325h,;DX.AX=02344652H+F0F0F0F0H加1指令INCINC指令对操作数加1(增量)INC指令不影响进位CF标志,按定义设置其他状态标志INCr/mem;r/mem←r/mem+1inccx、incbyteptr[bx]组合十进制加法调整指令DAADAA;AL←将AL的加和调整为压缩BCD码非组合十进制加法调整指令AAAAAA;AL←将AL的加和调整为非压缩BCD码;AH←AH+调整的进位2.减法类指令减法指令SUBSUB指令将目的操作数减去源操作数,结果送到目的操作数SUB指令按照定义相应设置状态标志SUBreg,im/reg/mem ;reg←reg-im/reg/memSUBmem,im/reg ;mem←mem-im/reg带借位的减法指令SBB[举例说明]movax,4652h ;ax=4652hsubax,0f0f0h ;ax=5562h,movdx,0234h ;dx=0234hsbbdx,0f0f0h ;dx=1143h,;DX.AX=02344652H-F0F0F0F0H=减1指令DECDECr/mem;r/mem←r/mem-1求补指令NEGNEGreg/mem;reg/mem←0-reg/mem比较指令CMPCMPreg,imm/reg/mem ;reg-imm/reg/memCMPmem,imm/reg ;mem-imm/regCMPAX,BX若ZF=1,则AX=BX对于无符号数,用CF判断CF=1,则AX<BXCF=0,则AX>BX对于带符号数,用SFXOROF判断SFXOROF=1,则AX<BXSFXOROF=0,则AX>BX组合十进制数减法调整指令DASDAS;AL←将AL的减差调整为压缩BCD码非组合十进制数减法调整指令AAS(SUBAL,i8/r8/m8)(SBBAL,i8/r8/m8)AAS;AL←将AL的减差调整为非压缩BCD码;AH←AH-调整的借位[做习题3-7]本课小结见教学内容的课堂练习P141习题3-7作业:P141习题3-81,33-9教学后记*教案8时间安排第4周,总第8次课章节名称第3章80X86指令系统教学目的掌握8086算术运算类乘法&除法指令,布尔型指令、移位指令的使用。教学重点与难点重点:乘法&除法类指令的用法、逻辑运算类指令、移位指令。难点:这些指令的使用注意事项。教学内容与过程设计教学内容与过程设计[作业讲解]课前导入:简单复习前面的算术运算类指令。3.乘法类指令无符号乘法指令MULsrc(乘数)带符号乘法指令IMULsrc(乘数)MULr8/m8;无符号字节乘法;AX←AL×r8/m8MULr16/m16;无符号字乘法;DX.AX←AX×r16/m16IMULr8/m8;有符号字节乘法;AX←AL×r8/m8IMULr16/m16;有符号字乘法;DX.AX←AX×r16/m16乘法指令的功能乘法指令对标志的影响非组合十进制数乘法调整指令AAM(MULr8/m8)AAM;AX←将AX的乘积调整为非压缩BCD码AAM指令跟在字节乘MUL之后,将乘积调整为非压缩BCD码4.除法类指令无符号数除法指令DIVsrc带符号数除法指令IDIVsrcDIVr8/m8 ;无符号字节除法:AL←AX÷r8/m8的商,Ah←AX÷r8/m8的余数DIVr16/m16 ;无符号字除法:;AX←DX.AX÷r16/m16的商,DX←DX.AX÷r16/m16的余数IDIVr8/m8 ;有符号字节除法:AL←AX÷r8/m8的商,Ah←AX÷r8/m8的余数IDIVr16/m16 ;有符号字除法:;AX←DX.AX÷r16/m16的商,DX←DX.AX÷r16/m16AAD;AX←将AX中非压缩BCD码扩展成二进制数(DIVr8/m8)非组合十进制除法调整指令AADCBW ;AL的符号扩展至AH;如AL的最高有效位是0,则AH=00H;AL的最高有效位为1,则AH=FFH。AL不变CWD ;AX的符号扩展至DX;如AX的最高有效位是0,则DX=00;AX的最高有效位为1,则DX=FFFFH。AX不变符号扩展指令的使用:利用符号扩展指令得到除法指令所需要的倍长于除数的被除数。对无符号数除法应该采用直接使高8位或高16位清0的方法,获得倍长的被除数。3.3.3逻辑运算与移位类指令1.布尔型指令逻辑与指令AND对两个操作数执行逻辑与运算,结果送到目的操作数。逻辑或指令OR对两个操作数执行逻辑或运算,结果送到目的操作数逻辑异或指令XOR对两个操作数执行逻辑异或运算,结果送到目的操作数逻辑非指令NOT对一个操作数执行逻辑非运算逻辑指令运用AND指令可用于复位某些位(同0相与),不影响其他位:将BL中D3和D0位清0,其他位不变andbl,11110110BOR指令可用于置位某些位(同1相或),不影响其他位:将BL中D3和D0位置1,其他位不变orbl,00001001BXOR指令可用于求反某些位(同1相异或),不影响其他位:将BL中D3和D0位求反,其他不变xorbl,00001001B测试指令TEST对两个操作数执行逻辑与运算,结果不回送到目的操作数。使用:TEST指令通常用于检测一些条件是否满足,但又不希望改变原操作数的情况2.移位类指令SALreg/mem,1/CL;算术左移,最高位进入CF,最低位补0SHLreg/mem,1/CL;逻辑左移,最高位进入CF,最低位补0SARreg/mem,1/CL;算术右移,最低位进入CF,最高位不变SHRreg/mem,1/CL;逻辑右移,最低位进入CF,最高位补0移位对标志位的影响3.循环移位指令ROLreg/mem,1/CL ;不带进位循环左移RORreg/mem,1/CL ;不带进位循环右移RCLreg/mem,1/CL ;带进位循环左移RCRreg/mem,1/CL ;带进位循环右移循环移位指令对标志的影响例如:实现通用寄存器AX、DX的32位数的联合左移 SAL AX,1 RCL DX,1本课小结作业:

P142习题3-111,33-133-18教学后记*教案9时间安排第5周,总第9次课章节名称第3章80X86指令系统教学目的掌握8086串操作类指令教学重点与难点重点、难点:串操作指令的使用。教学内容与过程设计教学内容与过程设计课前导入:复习前面学过的几类指令。3.3.4串操作类指令[介绍串操作指令的特点]重点掌握: MOVSSTOSLODS CMPSSCASREP一般了解: REPZ/REPEREPNZ/REPNE串数据类型串寻址方式1、重复前缀指令REP重复前缀指令REP前缀可以理解为:当数据串没有结束(CX≠0),则继续传送REP ;每执行一次串指令,CX减1 ;直到CX=0,重复执行结束REPE/REPZ重复前缀指令REPE/REPZ前缀可以理解为:当数据串没有结束(CX≠0),并且串相等(ZF=1),则继续比较REPNE/REPNZ重复前缀指令REPNE/REPNZ前缀可以理解为:当数据串没有结束(CX≠0),并且串不相等(ZF=0),则继续比较2、串传送指令MOVS把字节或字操作数从主存的源地址传送至目的地址MOVSB ;字节串传送:ES:[DI]←DS:[SI] ;SI←SI±1,DI←DI±1MOVSW ;字串传送:ES:[DI]←DS:[SI] ;SI←SI±2,DI←DI±2例3-18:串传送3、串比较指令CMPS将主存中的源操作数减去至目的操作数,以便设置标志,进而比较两操作数之间的关系CMPSB ;字节串比较:DS:[SI]-ES:[DI] ;SI←SI±1,DI←DI±1CMPSW ;字串比较:DS:[SI]-ES:[DI];SI←SI±2,DI←DI±2例3-19:串比较4、串搜索指令SCAS将AL/AX减去至目的操作数,以便设置标志,进而比较AL/AX与操作数之间的关系SCASB ;字节串搜索:AL-ES:[DI] ;DI←DI±1SCASW ;字串搜索:AX-ES:[DI] ;DI←DI±2例3-20:串搜索5、存字符串指令STOS把AL或AX数据传送至目的地址STOSB ;字节串存储:ES:[DI]←AL ;DI←DI±1STOSW ;字串存储:ES:[DI]←AX ;DI←DI±2例3-21:字存储6、取字符串指令LODS把指定主存单元的数据传送给AL或AXLODSB ;字节串读取:AL←DS:[SI] ;SI←SI±1LODSW ;字串读取:AX←DS:[SI] ;SI←SI±2例3-22:综合练习[做习题3-20]本课小结练习:

P143习题3-20作业:

P143习题3-21教学后记*教案10时间安排第5周,总第10次课章节名称第3章80X86指令系统教学目的掌握控制转移类指令、循环控制指令、微处理器控制类指令的使用。教学重点与难点重点:条件转移指令、循环控制指令的使用。难点:条件转移指令和循环指令的使用。教学内容与过程设计教学内容与过程设计[作业讲解]课前导入:简单复习前面学过的串操作指令。3.3.5控制转移类指令控制转移类指令通过改变IP(和CS)值,实现程序执行顺序的改变。1、无条件转移指令JMPlabel ;程序转向label标号指定的地址⑴段内转移、直接寻址⑵段内转移、间接寻址⑶段间转移、直接寻址⑷段间转移、间接寻址2、条件转移指令Jcclabel;条件满足,发生转移:IP←IP+8位位移量;条件不满足,顺序执行根据单个标志位为条件进行测试-测CF:JB/JNAE/JC ;当CF=1,转移 JNB/JAE/JNC ;当CF=0,转移 判断结果是否进位或借位-测ZF:JE/JZ ;当ZF=1,转移 JNE/JNZ ;当ZF=0,转移 判断结果是否为零(或相等)-测SF:JS ;当SF=1,转移 JNS ;当SF=0,转移 判断结果是正是负-测PF:JP/JPE ;当PF=1,转移 JNP/JPO ;当PF=0,转移 判断结果中“1”-测OF:JO ;当OF=1,转移 JNO ;当OF=0,转移 判断结果是否产生溢出根据标志间的组合条件进行测试判断无符号数大小无符号数的大小用高(Above)低(Below)表示利用CF确定高低、利用ZF标志确定相等(Equal)两数的高低分成4种关系:⑴低于(不高于等于):JB(JNAE)⑵不低于(高于等于):JNB(JAE)⑶低于等于(不高于):JBE(JNA)⑷不低于等于(高于):JNBE(JA)cmpax,bx ;比较ax和bx jnbnext ;若ax≥bx,转移 xchgax,bx ;若ax<bx,交换next: ...判断带符号数大小有符号数的大(Greater)小(Less)需要组合OF、SF标志,并利用ZF标志确定相等(Equal)两数的大小分成4种关系:⑴小于(不大于等于):JL(JNGE)⑵不小于(大于等于):JNL(JGE)⑶小于等于(不大于):JLE(JNG)⑷不小于等于(大于):JNLE(JG) cmpax,bx ;比较ax和bx jnlnext ;若ax≥bx,转移 xchgax,bx ;若ax<bx,交换next: ...根据对CX寄存器值进行测试JCXZlabel ;CX=0,发生转移:IP←IP+8位位移量 ;CX≠0,顺序执行3、循环控制指令循环指令利用CX计数器自动减1,方便实现计数循环的程序结构label操作数采用相对寻址方式,即为短转移LOOPlabel ;CX←CX-1,;CX≠0,循环到标号labelLOOPZlabel ;CX←CX-1,;CX≠0且ZF=1,循环到标号labelLOOPNZlabel ;CX←CX-1,;CX≠0且ZF=0,循环到标号label3.3.6处理器控制类指令进位标志操作指令用于任意设置进位标志CLC ;复位进位标志:CF←0STC ;置位进位标志:CF←1CMC ;求反进位标志:CF←~CF方向标志操作指令串操作指令中,需要使用CLD ;复位方向标志:DF←0STD ;置位方向标志:DF←1中断标志操作指令在编写中断服务程序时,需要控制可屏蔽中断的允许和禁止 CLI ;复位中断标志:IF←0 STI ;置位中断标志:IF←1了解其他处理器控制指令1.空操作指令NOP不执行任何操作,但占用一个字节存储单元,空耗一个指令执行周期2.封锁前缀指令LOCKLOCK ;封锁总线3.暂停指令HLTHLT ;进入暂停状态4.交权指令ESC5.等待指令WAIT ;进入等待状态本课小结作业:P143习题3-253-27教学后记*教案11时间安排第6周,总第11次课章节名称第3章80X86指令系统教学目的掌握8086D0S功能调用和返回DOS的两种方法。教学重点与难点重点、难点:中断指令的执行过程,DOS功能调用的使用步骤。教学内容与过程设计教学内容与过程设计课前导入:对前面所讲的各类指令做一简单回顾。3.4中断类指令[首先解释什么是中断]中断的过程中断指令INTINTi8 ;中断调用指令:产生i8号中断[详细解释中断向量的概念][通过课件中的示例详细介绍中断指令的执行过程。]IRET ;中断返回指令:实现中断返回INTO ;溢出中断指令:在算术指令后;若溢出标志OF=1,产生4号中断;否则顺序执行3.5中断指令8086中断类型号的分配00H~04H:专用中断08H~1FH:主板和扩展槽上的基本外设的中断服务子程序、BIOSROM中的I/O子程序调用20H~0FFH:DOS中的功能子程序调用指令40H~7FH:用户使用3.5.1DOS的系统功能调用通常按照如下4个步骤进行:⑴在AH寄存器中设置系统功能调用号⑵在指定寄存器中设置入口参数⑶执行指令INT21H实现中断服务程序的功能调用⑷根据出口参数分析功能调用执行情况1.键盘输入并回显功能号:AH=01H出口参数:AL=输入字符功能:等待从键盘输入一个字符,送入AL并显示在屏幕上。如按Ctrl-Break退出MOV AH,1 ;将功能号01H送入AH INT 21H2.显示输出功能号:AH=02H入口参数:DL=输出字符功能:在显示器当前光标位置显示给定的字符,光标右移一个字符位置。如按Ctrl-Break或Ctrl-C则退出 MOV AH,02 ;将功能号02送入AH MOV DL,’$’ ;设入口参数 INT 21H3.打印机输出功能号:AH=05H入口参数:DL=输出字符功能:把入口时放入DL中的字符输出到标准打印输出设备。 MOV DL,’A’ ;设入口参数 MOV AH,05H ;将功能号05送入AH INT 21H4.显示字符串输出功能号:AH=09H入口参数:DS:DX=欲显示字符串在主存中的首地址字符串应以$(24H)结束功能:在显示器输出指定的字符串5.键盘输入到缓冲区功能号:AH=0AH入口参数:DS:DX=缓冲区首地址执行该功能调用时,用户按键,最后用回车确认本调用可执行全部标准键盘编辑命令;用户按回车键结束输入,如按Ctrl+Break或Ctrl+C则中止本课小结作业:

P143习题3-30教学后记*教案12时间安排第6周,总第12次课章节名称第3章80X86指令系统教学目的掌握8086D0S功能调用和返回DOS的两种方法。教学重点与难点重点:DOS功能调用的调用格式,返回DOS的两种方法。难点:程序是如何返回DOS的教学内容与过程设计作业讲解]课前导入:回顾DOS功能调用指令。3.5.2BIOS中断调用1.键盘I/0中断调用INT 16H功能号:AH=0出口参数:AX=键值代码2.打印机I/O中断调用INT17H功能号:AH=0入口参数:AL=打印字符DX=打印机号 MOV DX,0 ;送打印机号0到DX MOV AL,’A’ MOV AH,0 INT 17H3.5.3返回DOS的方法在DOS环境下运行MASM-86汇编语言程序,都应具备能正确返回DOS的功能,否则会出现死机两种返回方法:INT20H和INT21H的4CH号功能调用都能退出或结束当前程序,返回DOS两种返回方法,对应两种程序框架结构[详细讲解两种程序框架结构及两种框架结构返回DOS的方法]源程序框架结构之一:INT20H[补充.EXE文件格式的特点]源程序框架结构之二:INT21H本课简单小结本章小结教学后记*教案13时间安排第7周,总第13次课章节名称第4章汇编语言设计教学目的了解汇编语言与汇编程序的概念,掌握汇编语言程序的规范。教学重点与难点重点与难点:汇编语言程序的语句构成与规范。教学内容与过程设计教学内容与过程设计课前导入:总结前两章的内容,对本章要讲内容作一简介。4.1汇编语言与汇编程序汇编程序种类基本汇编ASM宏汇编MASMMASMTASM汇编过程与上机调试有关的文件类型介绍源程序文件(.asm)目标文件(.obj)列表文件(.lst)交叉参考文件(.crf)可执行文件(.exe)映像文件(.map)库文件(.lib)4.2MASM宏汇编语言程序规范汇编语言源程序的组成语句的构成与规范[名字]操作符[操作数][;注释]执行性语句——由硬指令构成的语句,它通常对应一条机器指令,出现在程序的代码段中:标号:硬指令助记符操作数,操作数 ;注释说明性语句——由伪指令构成的语句,它通常指示汇编程序如何汇编源程序: 名字伪指令助记符参数,参数,… ;注释(1)名字域(2)操作符域(3)操作数域常数常数(常量)表示一个固定的数值它又分成多种形式:十进制常数十六进制常数二进制常数八进制常数字符串常数符号常数表达式与运算符 表达式由常数、寄存器、标号、变量与一些运算符相组合而成。一般有数字表达式和地址表达式二种。算术运算符实现+(加法)、-(减法)、×(乘法)、/(除)、MOD(求余)以及SHL(左移)和SHR(右移)共七种运算 movax,3*4+5 ;等价于movax,17其中MOD也称为取模,它产生除法之后的余数,如19mod7=5逻辑运算符实现按位相与、相或、异或、求反的逻辑运算 oral,03hAND45h ;等价于oral,01h关系运算符关系运算符有EQ(相等)、NE(不相等)、LT(小于)‘GT(大于)、LE(小于或等于)、GE(大于或等于)共六种关系运算都是双操作数运算,它的运算对象只能是两个性质相同的项目。分析运算符SEG(求段基址) 把SEG运算符加于一个标号或变量,求出的是该标号或变量所在段基址。 格式:SEG变量名或标号名OFFSET(求偏移量) 把OFFSET运算符加于一个标号或变量,所求出的是该标号或变量在段内的偏移量部分。 格式:OFFSET变量名或标号名 LENGTH 把LENGTH运算符加在数组变量的前面,求出该数组中所包含的变量或结构的个数。 在8086汇编语言中,LENGTH运算符只对用DUP定义的变量才有意义,它给出分配给变量的单元(字节、字或双字)数。 V1 DW4DUP(1) MOV AL,LENGTHV1 ;AL=4TYPE TYPE运算符可加在变量、结构和标号的前面,所求出的是这些存储器操作数的类型部分。SIZE SIZE和LENGTH的功能类似,也是只有用于由DUP定义的变量才有意义,但不同的是它给出的是一个变量总的字节数。 SIZEX==LENGTHX×TYPEX V1 DW4DUP(1) MOVAL,SIZE V1 ;AL=8综合运算符①PTRPTR用来生成一个新的存储器地址操作数,但它本身并不实际分配存储器。 格式:类型PTR存储器地址表达式PTR将它左边的类型指定给右边的地址表达式。这样一来,PTR便产生了一个新的存储器地址操作数。这个新的地址操作数具有和PTR右边的地址表达式一样的段基址和编移量,即它们指示的是同一存储单元,但却有不同的类型。②THISTHIS运算符像PTR一样,可以用来建立一个特殊类型的存储器地址操作数,而不实际为它分配新的存储单元。用THIS建立的存储器地址操作数的段和偏移量部分与目前所能分配的下一个存储单元的段和偏移量相同,但类型由THIS指定。③HIGH和LOWHIGH和LOW被称为字节分离符。它们将一个16位的数或表达式的高字节和低字节分离出来。④SHORT本运算符用来修饰JMP指令中跳转地址的属性,指出跳转地址是在下一条指令地址的-128~+127个字节范围之内。本课小结教学后记*教案14时间安排第7周,总第14次课章节名称第4章汇编语言设计教学目的掌握伪指令及其用法,了解结构与记录。教学重点与难点重点:各种伪指令的使用。难点:数据段的内存分配教学内容与过程设计教学内容与过程设计课前导入:第三章所讲的是硬指令,是执行性语句;这节课开始讲伪指令,是说明性语句。4.3伪指令及其应用数据定义及存储器分配伪指令格式:「变量名」DB/DW/DD/DQ/DT<表达式>,<表达式>,……;[注释]DB:定义字节变量,其后的每一个表达式占一个字节。DW:定义字变量,其后的每一个表达式的值占二个字节,低字节在低地址,高字节在高地址。DD:定义双字变量,其后的每一个表达式的值占四个字节,同样低字节在低地址,高字节在高地址。重复操作符DUP的应用用DUP定义重复数据,格式为:变量名DB/DW/DD/DQ/DT<表达式>DUP(表达式)DUP左边的表达式表示要重复的次数,右边圆括号中的表达式表示要重复的内容。二、符号定义伪指令EQU和=EQU伪指令的作用是把该指令右边的数值等价赋值给它左边的符号。 符号名EQU表达式 其中,表达式可以是一个常数,一个可以求出常数值的表达式,一个寄存器名或一个指令助记符EQU和=的使用三、标号定义伪指令LABELLABEL伪指令用于在原来变量的基础上定义一个类型不同的新的变量,或在原来标号基础上定义一个类型不同的新的标号。 变量名或标号名 LABEL 类型符变量的类型有BYTE、WORD和DWORD,标号的类型有NEAR和FAR。四、段定义伪指令SEGMENT/ENDS段名 segment 定位组合'类别' ... ;语句序列段名 ends段名 由编程者任取,定位类型、组合类型和类别是赋给段名的属性,它们可以缺省,但8086宏汇编有一缺省值。定位类型 用来规定对段起始边界的要求类别当连接程序组织段时,将所有的同类别段相邻分配五、ASSUME伪指令ASSUME段寄存器:段名[,段寄存器名:段名,...]通知MASM用指定的段寄存器来寻址对应的逻辑段,即建立段寄存器与段的缺省关系六、过程定义伪指令PROC/ENDP过程名 PROC [NEAR]/FAR ... ;语句序列 RET过程名 ENDP七、程序计数器$和ORG伪指令程序计数器 在程序中,$出现在表达式中,它的值为程序下一个所能分配的存储单元的偏移地址。起始位置设定伪指令ORG ORG伪指令用来指定程序或数据块的起点。 ORG数值表达式 ORG后的数值表达式的值将作为下一条指令语句或变量的偏移地址。4.4结构与记录结构定义伪指令结构是80x86宏汇编支持的一种数据结构。结构就是相互关联的一组数据的某种组合形式。使用结构,往往需要进行以下几步工作:STEP1:结构的定义 格式: 结构名STRUC <数据定义语句序列> 结构名ENDSSTEP2:结构的预置 结构变量名结构名<字段值表>STEP3:结构的引用 结构变量名可在程序中直接引用 若要引用结构变量的某一字段: 结构变量名·结构字段名 [地址寄存器]·结构字段名记录定义伪指令RECORD结构是用于定义和处理以字节为计算单位的信息组记录则是用于定义和处理以位为计算单位的信息组STEP1:记录的定义记录名RECORD<字段名>:宽度〔一表达式〕[,···]STEP2:记录的预置 由预置语句定义出一些具体的记录型的变量。 记录变量名记录名<字段值表>4.5宏指令及其应用宏指令的定义 宏指令名MACRO[<形式参数1>,……] <词句组> ;宏体 ENDM 宏指令的使用——宏调用无参数宏调用:宏名带参数宏调用: 宏名实参1,实参2[做习题4-6]本课小结练习:

P212习题4-6作业:

P212习题4-44-94-11教学后记*教案15时间安排第8周,总第15次课章节名称第4章汇编语言设计教学目的掌握程序设计的基本方法、两种基本结构程序的设计方法。教学重点与难点重点:顺序结构与简单程序设计,条件结构与分支程序设计难点:程序的完整结构以及程序的编写。教学内容与过程设计教学内容与过程设计课前导入:程序是分段编写的。4.6程序的基本设计方法4.6.1汇编语言程序的设计步骤STEP1:分析问题,确定算法STEP2:绘制程序框图STEP3:编制程序STEP4:查错和调试4.6.2模块化程序设计把一个程序分成具有多个明确任务的程序模块,分别进行编写和调试,最后再把它们连接在一起,形成一个完成总任务的完整程序,这种程序设计方式叫模块程序设计。模块的划分与模块的表示 划分模块是一个自顶向下(TOP_DOWN)的程序设计过程。主模块是一个总控模块。模块划分步骤STEP1:确定需要几个主要子模块(又称一级子模块)STEP2:对主要子模块的任务再细化模块表示划分模块原则4.7程序的基本结构及基本程序设计结构化的程序设计一、顺序结构与简单程序设计顺序结构的程序从执行开始到最后一条指令为止,指令指针IP的内容为线性增加流程结构由一个接一个的处理框组成使用的指令为传送类,运算类和移位类指令顺序结构的程序一般为简单程序:如表达式程序、查表程序顺序结构的程序是最基本、最常见的程序结构。表达式程序:例4-12[详细讲解这两个例题]查表程序:例4-13二、条件结构与分支程序设计分支程序根据条件是真或假决定执行与否判断的条件是各种指令,如CMP、TEST等执行后形成的状态标志(在汇编语言中,所谓条件,就是标志寄存器中各标志位的状态)转移指令Jcc和JMP可以实现分支控制1、两路分支在程序中使用一条条件转移语句就可实现两路分支。例如:比较两个数,选出其中大者存AL寄存器。这里设两个数均为无符号数,其程序段如下: MOVAL,[BX]

;取前个元素到AL INC BX

;指向后个元素 CMPAL,[BX]

;两数比较 JAEBIGER

;前元素>=后元素,转EXCH: MOVAL,[BX]

;否则,取后元素到ALBIGER: ……2、三路分支在程序中连续使用两条条件转移指令可实现三路分支。例如:编程计算下列函数的值: 1 (X>0) Y= 0 (X=0) -1 (X<0)3、多路分支多个条件对应各自的分支语句体,哪个条件成立就转入相应分支体执行。多分支可以化解为双分支或单分支结构的组合,例如:orah,ah ;等效于cmpah,0jzfunction0 ;ah=0,转向function0decah ;等效于cmpah,1jzfunction1 ;ah=1,转向function1decah ;等效于cmpah,2jzfunction2 ;ah=2,转向funct

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论