微机原理及接口技术课件_第1页
微机原理及接口技术课件_第2页
微机原理及接口技术课件_第3页
微机原理及接口技术课件_第4页
微机原理及接口技术课件_第5页
已阅读5页,还剩424页未读 继续免费阅读

下载本文档

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

文档简介

微型计算机系统概述

世界上第一个微处理器(微型机的核心部件)是美国Intel公司1971年生产的Intel4004,从那时到现在,微型计算机已经历了五个发展时代。1.1.1微型计算机的发展1.1微型计算机的发展和特点第一代(1971~1973)4位和低档8位微处理器时代第二代(1974~1977)8位微处理器时代第三代(1978~1984)16位微处理器时代第四代(1985~1999)32位微处理器时代第五代(2000年至今),64位高档微处理器时代1.1.1微型计算机的发展1.1微型计算机的发展和特点

微型计算机广泛采用了大规模(LSI)和超大规模(VLSI)集成电路,除了具有一般计算机的运算速度快,计算精度高,记忆功能和逻辑判断力强,自动工作等常规功能外,还具有独特的优点。1.1.2微型计算机的特点1.1微型计算机的发展和特点1.体积小、质量轻功耗低2.可靠性高、使用环境条件要求低3.结构简单灵活、系统设计方便、适应性强4.性能价格比高1.1.2微型计算机的特点1.1微型计算机的发展和特点

微型计算机可以从不同角度对其进行分类。

按微处理器的位数可分为1位、4位、8位、16位、32位和64位机等。

按功能和结构可分为单片机和多片机。

按组装方式可分为单板机和多板机。1.2微型计算机分类

利用大规模集成电路工艺将微型计算机的三大组成部分——CPU、内存和I/O接口集成在一片硅片上,这就是单片机(Single-ChipComputer)。若将微型计算机的CPU、内存、I/O接口电路安装在一块印刷电路板上就组成了单板机。1.2微型计算机分类

微处理器主要由运算器和控制器组成,是微型计算机的核心,具有运算和控制功能。具有以下功能:可以进行算术和逻辑运算;可保存少量数据;能对指令进行译码并执行规定的动作;能和存储器,外设交换数据;提供整个系统所需要的定时和控制;可以响应其它部件发来的中断请求。1.3微型计算机系统的构成1.3.1微处理器CPU在内部结构上主要包含算术逻辑部件(ALU);累加器和通用寄存器组;程序计数器(指令指针)、指令寄存器和译码器;时序和控制部件等部分。1.3微型计算机系统的构成1.3.1微处理器

微型计算机由CPU、存储器、输入/输出接口电路和系统总线构成。微型计算机的基本结构如图所示微处理器CPURAMROMI/O接口外设ABDBCB1.3微型计算机系统的构成1.3.2微型计算机

以微型计算机为主体,配上系统软件和外设之后,就构成了微型计算机系统,微型计算机系统的基本组成如图所示。工程计算软件数据处理软件过程控制软件辅助设计软件汇编程序解释程序编译程序微型计算机系统外存储器输入设备输出设备其它设备微处理器主存储器和高速缓冲器输入输出接口系统和局部总线操作系统语言处理程序支持软件主机外部设备电源等系统软件应用软件硬件软件1.3微型计算机系统的构成1.3.3微型计算机系统

微型计算机在工业、农业、国防、科学技术和国民经济各个领域得到广泛应用,主要有以下几方面:1.科学计算2.数据处理和信息管理3.CAD、CAM、CAA和CAI中的应用4.过程控制和仪器仪表智能化5.军事领域中的应用6.多媒体系统和信息高速公路7.家用电器和家庭自动化1.4微型计算机的应用及发展趋势1.4.1微型计算机的应用2.1数和数制

在人们应用各种数字符号表示事物个数的长期过程中,形成了各种计数制。进位计数制就是一种常用的计数方法,微机中常用的进位计数制有十进制、二进制和十六进制三种。十进制是大家很熟悉的进位计数制,它共有0,1,2,3,4,5,6,7,8和9共十个数码。数码的个数称为基数,故十进制的基数为10。以2为基数的计数制叫做二进制计数制,简称二进制数。十六进制数也有2个主要特点:它有0,1,2…9,A,B,C,D,E,F共16个数码。在加法中采用逢16进1的原则。

各种数制的相互转换(1)

二进制数到十进制数的转化方法:

二进制数到十进制数的转换方法就是求此数的幂级数多项式的值

十进制数到二进制数的转化方法“除2取余法”:其法则是:用2连续去除待转换的十进制数,直到商为0止,然后把各次余数从下至上排列起来,所得到的数便是所求的二进制整数。

各种数制的相互转换(2)

十六进制数到十进制数的转换方法:方法和二进制数转换成十进制数的方法类似,即把十六进制数按权展开后相加。

十进制数到十六进制数的转换方法:十进制整数转换成十六进制整数可以采用“除16取余法”“除16取余法”法则是:用16连续去除要转换的十进制整数,直到商数为0止,然后把各次余数按逆得到次序排列起来所得数,便是所求的十六进制数。各种数制的相互转换(3)

二进制数到十六进制数的转换方法:可采用“四位合一位法”。其法则是:从二进制数的小数点开始,向两边每四位一组,不足四位以0补足之,然后分别把每组用十六进制数码表示,并按序相连。十六进制到二进制数的转换方法:可以采用“一位分四位法”其法则是:把十六进制数的每位分别用四位二进制数码表示,然后把它们连成一体。将上面的例题求一个逆运算就是很好的一分为四法的例题。不再举例。2.2带符号数在计算机中的表示

在计算机中,将一个数连同其符号用二进制数来表示,这样的二进制数称为机器数。机器数是有特定的位数的二进制数,它的位数就是该机器的CPU的机器字长。在机器数中,最高有效位是符号位,其余的各位是数值位。符号位规定0表示正数,1表示负数。X≥0X≤0机器数之原码

原码表示法

这种方法其实就是“符号+绝对值”的方法:符号位表示数的正负,而其余位表示这个数的绝对值。机器数之反码对于n位字长的带符号的反码定义为:对于正数,其反码形式跟原码一样对于负数,只需将其原码除符号位外的各位求反,即可得其反码。X≥0X≤0机器数之补码对于n位字长的带符号的补码表示为:正数的补码跟其原码和反码形式相同负数的补码和反码之间有简单的关系,即补码等于该数的反码在最低位上加“1”。X≥0X≤02.3定点数和浮点数所谓定点法,即小数点在数中的位置是固定不变的。以定点法表示的实数称作定点数。任意一个二进制数N总可以写成下面的形式:

其中:d称为尾数,是二进制纯小数,指明数的全部有效数字。前面的符号称作数符,表示数的符号,用尾数前的1位表示,0表示正号,1表示负号;p称为阶码,它前面的符号称作阶符,用阶码前一位表示,阶符为正时,用0表示,阶符为负时,用1表示。由此可知,将尾数d的小数点向右(对﹢p)或向左(﹣p)移动p位,即得数值N。所以阶符和阶码指明小数点的位置。小数点随着p的符号和大小而浮动。这种数称为浮点数。2.4BCD码BCD码(BinaryCodedDecimal)是十进制数的编码表示法,由于机器中只能用二进制数,所以BCD码是二进制编码的十进制数,用四位二进制数来表示一位十进制数。BCD码的种类较多,常用的有8421码、2421码、余3码和格雷码等。现以8421码为例进行讨论。8421码是BCD码中的一种,因组成它的4位二进制数码的权为8、4、2、1而得名。在这种编码系统中,十组4位二进制数编码分别代表了0~9十个数码。如表2.4.1所示8421码和十进制数码的关系表十进制数码8421BCD码十进制数码8421BCD码00000501011000160110200107011130011810004010091001BCD码的分类和意义BCD码有压缩和非压缩之分。压缩的BCD码就是用相应的4位的BCD码代替十进制数的数码所得的二进制数非压缩的BCD码是指用8位的二进制数来表示一位十进制的数码,在这个字节(8位的二进制数)中,低4位就是如上表所示的BCD码,而高4位没有意义,一般用“0000”来表示。2.5计算机中字符的表示计算机只认识0和1,为了将各种各样的字符能输入到计算机,或由计算机将某些结果以字符的方式输出到外设,必须对字符进行二进制编码。ASCII码

ASCII码(AmericanStandardCodedforInformationInterchange)是“美国信息交换标准代码”的简称。ASCII码诞生于1963年,是一种比较完整的字符编码,已成为国际通用的标准编码,现已广泛用于微型计算机中。通常,ASCII码由7位二进制数码构成,可为128个字符编码。这128个字符共分两类:一类是图形字符,共96个;另一类是控制字符,共32个。96个图形字符包括十进制数符10个、大小写英文字母52个和其他字符34个,这类字符有特定形状,可以显示在CRT上和打印在纸上,其编码可以存储、传送和处理。32个控制字符包括回车符、换行符、退格符、设备控制符和信息分隔符等等,这类字符没有特定形状,其编码虽然可以存储、传送和起某种控制作用,但字符本身是不能在CRT上显示和打印机上打印的。ASCII码的一般形式是以一个字节来表示,它的低7位是ASCII值,最高有效位用来作为奇偶校验位,用以检测在字符的传送过程中是否发生了错误。3.18086微处理器的编程结构8086的功能部件

8086的总线周期的概念

8086的功能部件从功能上8086分为两部分,即总线接口部件BIU(BusInterfaceUnit)和执行部件EU(ExecutionUnit)。总线接口部件的功能是负责与存储器、I/O端口传送数据。执行部件的功能就是负责指令的执行。8086CPU编程结构图指令队列缓冲器外部总线∑ALU地址加法器器432156运算寄存器标志执行部分控制电路执行部件(EU)总线接口部件(BIU)AHBHCHDHALBLCLDLSPBPDISICSDSSSESIP内部暂存器输入/输出控制电路

20位16位通用寄存器16位8位总线接口部件BIU

总线接口部件由下列各部分组成:四个段地址寄存器,即

CS——16位的代码段寄存器,

DS——16位的数据段寄存器,

ES——16位的扩展段寄存器,

SS—一16位的堆栈段寄存器;

16位的指令指针寄存器IP;

20位的地址加法器;

6字节的指令队列;输入输出控制电路。执行部件EU

执行部件由下列几个部分组成:四个通用寄存器,即AX、BX、CX、DX;四个专用寄存器,即基数指针寄存器BP,堆栈指针寄存器SP,源变址寄存器SI,目的变址寄存器DI;标志寄存器PSW;算术逻辑单元ALU。BIU和EU的动作管理和协调工作

BIU和EU作为CPU的两大部件,虽然不是同步工作的,但是它们相互配合,并行工作,提高了效率。具体表现为:每当8086的BIU的6指令队列中有2个为空的时候,BIU会自动从内存中取出下面的指令的字节放到指令队列中。EU在执行指令的时候总是从BIU的指令队列的前部取出将要执行的指令,然后用几个时钟周期去执行。在执行指令的过程中,如果指令需要访问内存或者端口,则EU请求BIU进入总线周期,从而完成访问。如果请求时,BIU正好空闲,那么BIU会马上响应请求;如果此时BIU正忙着取指令,那么访问内存和端口的请求必须要BIU完成指令的读取后方可被响应。当指令队列已满,并且EU没有对BIU的内存和端口访问请求时,BIU进入空闲状态,这其实是BIU对EU的等待。在执行各种控制转移指令时,下面要执行的指令不是程序中紧接着的指令了,但是指令队列中已经将那些指令装入了指令队列,而这些指令是没有用的。此时,BIU会将指令队列清空,接着往指令队列中装入转向目标地址处的指令。8086的总线周期的概念

8086CPU通过总线对存储器或I/O端口进行一次访问所需要的时间称为一个总线周期,为了取得指令或传送数据,就需要CPU的总线接口部件执行一个总线周期。一个典型的总线周期序列为:3.28086的外部结构

最小模式和最大模式的概念

8086的引脚信号和功能

8086的最小模式

8086的最大模式

最小模式和最大模式的概念最小模式,就是在系统中只有8086一个微处理器。在这种系统中,所有的总线控制信号都直接由8086产生,因此,系统中的总统控制电路被减到最少。这些特征就是最小模式名称的由来。最大模式是相对最小模式而言的。最大模式用在中等规模的或者大型的8086系统中。在最大模式系统中,总是包含有两个或多个微处理器,其中一个主处理器就是8086,其他的处理器称为协处理器,它们是协助主处理器工作的。8086的公用引脚信号GND、VCC地和电源AD15~AD0地址/数据复用引脚A19/S6~A16/S3(Address/Status)地址/状态复用引脚

/S7高8位数据总线允许/状态复用引脚NMI(Non-MaskableInterrupt)非屏蔽中断输入引脚INTR(InterruptRequest)可屏蔽中断请求信号输入(Read)读信号输出CLK(Clock)时钟输入RESET(Reset)复位信号输入READY(Ready)“准备好”信号输入(Test)测试信号输入

MN/最小/最大模式控制信号输入

8086的最小模式下的专用引脚

(InterruptAcknowledge)中断响应信号输出ALE(AddressLockEnable)地址锁存允许信号(DataEnable)数据允许信号DT/(DataTransmit/Receive)数据收发信号输出M/(Memory/InputandOutput)存储器/输入输出控制信号输出(Write)写信号输出HOLD(HoldRequest)总线保持请求信号输入HLDA(HoldAcknowledge)总线保持响应信号输出8086在最小模式下的典型配置8086的最大模式

QS1、QS0(InstructionQueueStatus)指令队列状态信号输出

2

1

0(BusCycleStatus)总线周期状态信号输出(Lock)总线封锁信号输出

1

0(Request/Grant)总线请求信号输入/总线请求允许信号输出8086在最大模式下的典型配置3.18086CPU的基本操作时序

系统的复位和启动操作;暂停操作;总线操作;中断操作;最小模式下的总线保持;最大模式下的总线请求/允许。系统的复位和启动操作

8086的复位和启动操作是通过RESET引脚上的触发信号来实现的。8086要求复位信号RESET起码维持4个时钟周期的高电平,如果是初次加电引起的复位,则要求维持不小于50微秒的高电平。当RESET信号一进入高电平,8086CPU就会结束现行操作,并且,只要RESET信号停留在高电平状态,CPU就维持在复位状态。在复位状态,CPU各内部寄存器都被设为初值。从右表中看到,在复位的时候,代码段寄存器CS和指令指针寄存器IP分别初始化为FFFFH和0000H。所以在复位之后再重新启动时,便从内存的FFFF0H处开始执行指令。因此,一般在FFFF0H处存放一条无条件转移指令,转移到系统程序的入口处。这样,系统一旦启动,便自动进入系统程序。

复位时寄存器初值标志寄存器清零指令指针(IP)0000HCS寄存器FFFFHDS寄存器0000HSS寄存器0000HES寄存器0000H指令队列空其他寄存器0000H最小模式下的总线读操作时序图8086最小模式下写周期时序最大模式下的总线读操作时序最大模式下的写操作时序

寻址方式是指在指令中用于说明操作数所在地址的方法。8086指令系统把寻址方式分为与数据有关的寻址方式和与地址有关的寻址方式两类。4.1寻址方式(1)立即寻址方式

定义:有一部分指令所用的8位或16位操作数就直接放在指令中,紧跟在操作码的后面,与操作码一同放在代码段区域中。用途:主要用来给寄存器或储存单元赋值。MOVAL,80H4.1寻址方式4.1.1与数据有关的寻址方式(2)寄存器寻址方式定义:指令中操作数由寄存器提供的寻址方式。

MOVDL,ALINCCX4.1寻址方式4.1.1与数据有关的寻址方式(3)直接寻址方式定义:有效地址EA在指令的操作码后面直接给出的寻址方式。说明:默认段寄存器DS,若操作数在其他段,应在指令中使用段跨越前缀。即:EA=段寄存器:位移量;

PA=(段寄存器)左移4位+位移量

MOVAX,[1000H]4.1寻址方式4.1.1与数据有关的寻址方式(4)寄存器间接寻址方式定义:EA存放在由指令指明的寄存器中;只有通过访问寄存器才间接得到EA。(BX)(SI)→操作数存放在由DS指示的数据段。(DI)PA=(DS)左移4位+(BX)/(SI)/(DI)(BP)→操作数存放在由SS指示的堆栈段中。

PA=(SS)左移4位+(BP)

如果DS=2000H,SI=1000H,[21000H]=40H,

[21001]=32H。

MOVAX,[SI]指令执行后结果:AX=3240H。4.1.1与数据有关的寻址方式(5)寄存器相对寻址方式定义:以寄存器(BX、SI、DI和BP)内容为基地址加上位移量(8位或16位)得到有效地址EA的寻址方式。

4.1寻址方式4.1.1与数据有关的寻址方式

若选择BX、SI、DI寄存器相对寻址,存放操作数的段寄存器默认为DS,若选择BP寄存器相对寻址,则对应的段寄存器默认为SS。如果操作数不在默认段,则要用前缀指出相应的段寄存器名。即操作数的有效地址为:MOVAX,[SI+10H]4.1.1与数据有关的寻址方式(6)基址变址寻址方式定义:由基址寄存器(BX,BP)的内容加上变址寄存器(SI,DI)的内容得到操作数有效地址EA的寻址方式。操作数的有效地址为:MOVAX,[BX+DI]设DS=1000H,BX=5000H,DI=2000H,在执行时,有效地址为7000H,指令执行结果为17000H和17001H两单元的内容取到AX中。4.1.1与数据有关的寻址方式(7)基址变址相对寻址方式由基址寄存器(BX,BP)的内容加上变址寄存器(SI,DI)的内容,再加上位移量(8位或16位)得到操作数有效地址EA的方式称为基址变址相对寻址方式。操作数的有效地址为:

MOVAX,[BX+SI+4500H]

若DS=3000H,BX=2000H,SI=1000H,

[37500H]=56H,[37501H]=12H,指令执行后AX=1256H。4.1.1与数据有关的寻址方式

在8086指令系统中,有一些对指令的地址进行寻址的指令,这种寻址方式叫与地址有关的寻址方式。(1)段内直接寻址用段内直接寻址方式时,指令中给出一个相对位移量,有效转移地址为IP的当前内容再加上一个8位或16位的位移量。段内直接转移寻址也称为相对寻址。4.1.2.与地址有关的寻址方式(2)段内间接寻址用段内间接寻址方式时,有效地址总是在寄存器中或者在内存单元中,段内间接寻址方式可适用于于无条件转移指令和调用指令。(3)段间直接寻址用段间直接寻址方式进行寻址时,指令中要给出转移地址的段值和偏移量。产生转移时,将段值送入CS中,将偏移量送入IP中。用这种寻址方式,可以提供一种使程序从一个代码段转移到另一个代码段的方法。4.1.2.与地址有关的寻址方式(4)段间间接寻址在段间间接寻址方式下产生转移时,IP和CS的内容用内存中2个连续的字来替换。而对这2个内存字,可以通过对数据的各种寻址方式来访问,不过立即数寻址方式和寄存器寻址方式除外。段间转移和段内间接转移必须是无条件转移指令和调用指令。换句话说,条件转移指令只能用段内直接寻址方式,而且转移范围只能是指令所在位置前后的-128~+127个单元。4.1.2.与地址有关的寻址方式8086/8088的指令系统中包含133条基本指令,可以分为以下六个功能组。

(1)传送指令;

(2)逻辑运算和移位指令;

(3)控制转移指令;

(4)算术运算指令;

(5)串操作指令;

(6)处理器控制指令。4.28086指令系统8086数据传送指令有如下四类:

(1)通用传送指令;

(2)累加器专用传送指令;

(3)地址传送指令;

(4)标志传送指令。4.28086指令系统4.2.1传送指令1.通用传送指令(GeneralPurposeTransfer)通用传送指令中包括MOV、XCHG、堆栈和地址传送指令。(1)最基本的传送指令格式:MOVDST,SRC功能:把一个字节或字的源操作数送到目标操作数所在的单元。例:MOVAL,BL

;BL中的8位数据送AL

4.2.1传送指令(2)堆栈操作指令堆栈操作指令分为:入栈指令PUSH和出栈指令POP。格式:PUSHSRC功能:堆栈指针SP减2后,把一个字的源操作数传送到目的操作数所在的单元。格式:POPDST功能:把SP指出的栈顶中的一个字传送到目标操作数所在的单元,然后加2。说明:堆栈是按“先进后出”原则工作的一段存储器区域。例:PUSHAX

;将AX的内容推入堆栈

PUSHDS

;将DS的内容推入堆栈

POPBX

;将栈顶两单元弹出送BX4.2.1传送指令(3)交换指令格式:XCHGDST,SRC功能:使源操作数与目的操作数相互交换。说明:交换指令XCHG可以实现字节交换,也可以实现字交换。例:XCHGAL,BL XCHG[2530],CX4.2.1传送指令2.累加器专用传送指令累加器专用传送指令主要有输入指令IN、输出指令OUT和换码指令XLAT。(1)输入/输出指令格式:INAL,PORT功能:把来自端口PORT的一个字节送入AL寄存器中 4.2.1传送指令2.累加器专用传送指令输入/输出指令格式:INAX,PORT功能:把来自PORT和PORT+1两个端口的数据构成一个字送入AX寄存器中格式:OUTPORT,AL功能:把AL寄存器中的一个字节送入端口PORT格式:OUTPORT,AX功能:把AX寄存器中的一个字送入PORT和PORT+1

两个端口4.2.1传送指令(2)换码指令(Translate)格式:XLATOPRD功能:设BX指向一张256个字节的表的起点,AL为表的索引值,本指令执行后AL中即为查表所得到的信息,XLAT经常用来把一种代码翻译成另一个代码。4.2.1传送指令3.地址传送指令

8086指令系统中,有3条专用于传送地址的指令:LEA、LDS和LES。(1)取有效地址指令格式:LEAREG,SRC

功能:将源操作数的有效地址送到指定寄存器中。4.2.1传送指令(2)将地址指针装入DS和另一个寄存器的指令格式:LDSREG,SRC功能:把源操作数SRC的前16位送入目标操作数

REG,后16位送入DS寄存器中。(3)将地址指针装入ES和另一个寄存器的指令

LES指令和LDS指令的格式及使用方法是类似的,只是LES是将一个地址指针装入ES和另一个寄存器。

4.标志传送指令(1)读取标志指令(LoadAHwithFlags)格式:LAHF功能:将标志位寄存器中的低8位传送到AH中说明:将SF、ZF、AF、PF和CF传送到AH寄存器的相应位,即D7、D6、D4、D2和D0位,执行LAHF指令后,AH寄存器的D5、D3、D1位没有意义,如图所示。OFDFIFTFSFZFAFPFCF

D7

D6D4D2

D0FLAGAH4.2.1传送指令(2)设置标志指令(StoreAHintoFlags)格式:SAHF功能:将AH寄存器的相应位传送到标志寄存器低8位。(3)对标志寄存器的推入堆栈指令格式:PUSHF功能:将标志寄存器的值推入堆栈顶部,同时,栈指针SP的值减2,此指令在执行时标志寄存器的值不变。4.2.1传送指令(4)对标志寄存器的弹出堆栈指令格式:POPF

功能:在执行时从堆栈中弹出一个字送到标志寄存器中,同时堆栈指针SP的值加2。

PUSHF和POPF指令一般用在子程序和中断处理程序的首尾,起保存主程序标志和恢复主程序标志的作用。

4.2.1传送指令算术运算指令共有以下五类:加法运算指令、减法运算指令、乘法运算指令、除法运算指令、转换指令。1.加法指令

(1)不带进位位的加法指令格式:ADDDST,SRC功能:执行源操作数SRC和目的操作数DST的相加操作,结果放在目的操作数的中。4.28086指令系统4.2.2算术运算指令(2)带进位位的加法指令格式:ADCDST,SRC功能:ADC与ADD类似,不同的是将进位标志CF

的值加在和中。

ADDAL,50HADCAX,SI(3)增量指令格式:INCSRC功能:将源操作数的内容加1,再送回该源操作数。4.2.2算术运算指令2.减法指令

(1)不考虑借位的减法指令格式:SUBDST,SRC功能:将目的操作数减去源操作数,结果放在目的操作数中,主要完成2个字节或2个字的相减。(2)考虑借位的减法指令格式:SBBDST,SRC功能:目的操作数减去源操作数的同时,还要减去CF的值。

SBBAX,2030H4.2.2算术运算指令(3)减量指令格式:DECDST功能:使目的操作数减1,再送回到目的操作数中。(4)求补指令格式:NEGDST功能:对目的操作数求补码,结果送回目的操作数中。

4.2.2算术运算指令(5)比较指令格式:CMPDST,SRC功能:执行两个数的相减操作,但不送回相减的结果,只是使结果影响标志位AF、CF、OF、PF、SF和ZF。对于有符号数的比较,要根据OF和SF两者的关系来判断结果。OF和SF的值相同,则说明被减数比减数大,反之,被减数比减数小。4.2.2算术运算指令3.乘法指令

(1)无符号数的乘法指令格式:MULSRC功能:将AL(8位)或AX(16位)中的数据与源操作数相乘,结果放在AX或DX与AX两寄存器中。

MULBL;AL中的8位数和BL中的8位数相乘,结果在AX中

(2)有符号数的乘法指令格式:IMULSRC功能:功能和形式上与MUL很类似,只是要求两个乘数必须均为有符号数。

IMULBX;AX和BX中的两个16位有符号数相乘,结果在DX和AX中4.2.2算术运算指令4.除法指令符号数的除法指令格式:DIVSRC功能:把AX(或DX,AX)中的被除数除以8位(或16位)源操作数,商数放在AL(或

AX),余数放在AH(或DX)中。

DIVCL;AX中的数据除以CL中的数据,商在AL中,余数在AH中

4.2.2算术运算指令(2)有符号数的除法指令格式:IDIVSRC功能:与DIV相似,不同的是将除数,被除数,商和余数都看作是带符号数。

IDIVBX;将DX和AX中的32位数除以BX中的16位数,运算后,商在AX中,余数在DX中除法运算时,要求用16位数除以8位数,或者用32位数除以16位数,当被除数只有8位时,必须将此8位数据放在AL中,并对高8位AH进行扩展。同样,当被除数只有16位,而除数也为16位时,必须将16位被除数放在AX中,并对高16位DX进行扩展。4.2.2算术运算指令(3)将字节扩展成字的指令格式:CBW功能:将AL寄存器中的符号位扩展到AH中。即当AL<80H时,执行CBW后,AH=0;当AL>80H时,执行CBW后,AH=FFH。(4)将字扩展成双字的指令格式:CWD功能:用CWD指令将AX中的被除数扩展成双字。4.2.2算术运算指令5.BCD码运算指令(1)BCD码加法十进制调整指令①非组合BCD码的加法调整指令。格式:AAA功能:对两个非组合的BCD码相加结果进行调整,产生一个非组合的BCD码。②组合BCD码的加法调整指令。格式:DAA功能:对两个组合的BCD码相加结果进行调整,产生一个组合的BCD码。4.2.2算术运算指令(2)BCD码减法十进制调整指令①非组合BCD码的减法调整指令格式:AAS功能:对两个非组合的BCD码的相减结果进行调整。②组合BCD码的减法调整指令。格式:DAS功能:对两个组合的BCD码数据的相减结果进行调整,得到一个组合的BCD码的差。

4.2.2算术运算指令(3)非组合BCD码乘法调整指令格式:AAM功能:用于将非组合BCD码乘法的结果(在AL中)转换成两个非组合型BCD码(AH和AL中)。(4)非组合BCD码除法调整指令格式:AAD功能:常用于DIV指令之前,将AX中的两位非组合BCD码变为二进制数。即:将(AH)×10+(AL)送到AL中,0送到AH中。4.2.2算术运算指令

逻辑运算和移位指令包括逻辑运算、移位和循环移位指令。1.逻辑运算指令①“与”操作指令格式:ANDDST,SRC②“或”操作指令格式:ORDST,SRC③“异或”操作指令格式:XORDST,SRC④测试指令格式:TESTDST,SRC⑤求反指令格式:NOTSRC4.2.3逻辑运算和移位指令

在程序设计中,一般用AND指令对一个数据的指定位清0。OR指令常常用来对一些指定位置1。XOR指令常常用在一些程序的开头使某个寄存器清0,以配合初始化工作的完成。NOT指令常用来将某个数据取成反码。TEST指令一般用来检测指定位是1还是0,而这个指定位往往对应一个物理量。

AND AL,0FHOR AL,30HXOR AL,0FHTEST AX,8000HNOT AL2.移位指令非循环移位指令①算术左移指令格式:SALDST,SRC功能:对字或字节各位进行左移,最高位进CF,右端补0②逻辑左移指令格式:SHLDST,SRC功能:同SAL4.2.3逻辑运算和移位指令③算术右移指令格式:SARDST,SRC功能:最高位不动,其它各位右移,最低位进CF。④逻辑右移指令格式:SHRDST,SRC功能:对字和字节进行右移,最低位进CF,左端补0。循环移位指令①不带进位位的循环左移指令格式:ROLDST,SRC②不带进位位的循环右移指令格式:RORDST,SRC循环移位指令③带进位位的循环左移指令格式:RCLDST,SRC④带进位位的循环右移指令格式:RCRDST,SRC

串操作指令就是用一条指令实现对一串字符或数据的操作。

1.重复前缀指令

REP

;无条件重复前缀指令

REPE/REPZ

;条件重复前缀指令

REPNE/REPNZ

;条件重复前缀指令4.2.4串操作指令2.字符串传送指令格式:MOVSB/MOVSW3.字符串比较指令CMPSB/CMPSW格式:CMPSB/CMPSW4.字符串检索指令SCASB/SCASW格式:SCASB/SCASW5.取字符串指令LODSB/LODSW格式:LODSB/LODSW4.2.4串操作指令6.存字符串指令STOSB/STOSW格式:STOSB/STOSW例如使0400H开始的256个单元清0的程序段。

CLD

;清除方向标志

LEADI,[0400H]

;将目的地址0400H送DIMOVCX,0080H

;共有256个字节

XORAX,AX

;AX清0REPSTOSW

;将256个字节清0

4.2.4串操作指令

控制转移指令中包括4类指令:子程序调用和返回指令;无条件转移和条件转移指令;循环控制指令;中断指令和中断返回指令。1.子程序调用和返回指令(1)子程序调用指令格式:CALL子程序名功能:保存下一条指令地址,将代码段寄存器CS,指令指针寄存器IP指向调用子程序。4.2.5控制转移指令(2)子程序返回指令①返回指令指令格式:RET

功能:从被调用子程序返回CALL指令的下一指令。4.2.5控制转移指令②带参数的返回指令指令格式:RETn

功能:先执行与RET相同的操作,再修改SP:SP←SP+n。说明:弹出值应为一个16位立即数,通常是偶数。弹出值表示返回时从对堆栈中舍弃的字节数。n可以为0~FFFFH范围中的任何一个偶数。

RET4;从栈顶弹出返回地址以后,再使SP的值加上4。4.2.5控制转移指令2.无条件转移指令和条件转移指令(1)无条件转移指令格式:JMP目的地址功能:将程序无条件的转移到目标地址去执行该地址开始的指令。

(2)条件转移指令条件转移指令以某一个标志位的值或者某几个标志位的值作为判断是否进行转移的依据,如果满足指令中所要求的条件,则产生转移,否则往下执行条件转移指令后面的一条指令。条件转移指令的具体形式如下表所示。4.2.5控制转移指令指令名称助记符转移条件备注等于/零转移不等于/非零转移负转移正转移偶转移奇转移溢出转移不溢出转移进位转移无进位转移低于/不高于或等于转移高于或等于/不低于转移高于/不低于或等于转移低于或等于/不高于转移大于/不小于或等于转移大于或等于/不小于转移小于/不大于或等于转移小于或等于/不大于转移CX等于零转移JE/JZJNE/JNZJSJNSJP/JPEJNP/JPOJOJNOJCJNCJB/JNAEJAE/JNBJA/JNBEJBE/JNAJG/JNLEJGE/JNLJL/JNGEJLE/JNGJCXZ(ZF)=1(ZF)=0(SF)=1(SF)=0(PF)=1(PF)=0(OF)=1(OF)=0(CF)=1(CF)=0(CF)=l(CF)=0(CF)=0且(ZF)=0(CF)=1或(ZF)=1(SF)=(OF)且(ZF)=0(SF)=(OF)(SF)≠(OF)且(ZF)=0(SF)≠(OF)或(ZF)=l(CX)=0无符号数无符号数无符号数无符号数带符号数带符号数带符号数带符号数3.循环控制指令(1)LOOP指令格式:LOOP目的地址功能:先将CX的内容减1,再判断CX中是否为0,如不为0,则继续循环,如为0,则退出循环,执行下一条指令。(2)LOOPZ/LOOPE指令格式:LOOPZ/LOOPE目的地址功能:同一条指令的两个不同的助记符。在执行时,使CX减1,再判断CX中的值是否为0,并且判断ZF是否为1。如果ZF=0,或者CX=0,则退出循环,只有在ZF=1,并且CX≠0的情况下,才继续循环。(3)LOOPNZ/LOOPNE

格式:LOOPNZ/LOOPNE目的地址4.2.5控制转移指令8086指令系统4.中断指令和中断返回指令(1)中断指令格式:INTn功能:用于产生软件中断,以调用中断类型号为n的中断服务程序。n为一个8位立即数,取值范围为0~255。(2)溢出中断指令格式:INTO(3)中断返回指令格式:IRET功能:将堆栈中的断点地址弹出赋给IP和CS,并弹出标志寄存器值,以实现中断返回,恢复中断前的状态。4.2.5控制转移指令1.标志操作指令CLC;进位标志位CF清0(clearcarry)STC;进位标志位CF置1(setcarry)CMC;进位标志位CF取反(complementcarry)CLD;方向标志位DF清0(cleardirection)STD;方向标志位DF置1(setdirection)4.2.6处理器控制指令

汇编语言是一种用助记符来表示指令的操作码和操作数,用标号和符号来代替地址、常量和变量的符号语言。用汇编语言编写的程序不能由机器直接执行,而必须翻译成由机器代码组成的目标程序,这个翻译过程称为汇编。5.1概述

用来把汇编语言编写的程序自动翻译成目标程序的软件叫汇编程序。汇编程序的建立及汇编过程如图所示。编辑程序汇编程序连接程序EXP.ASMEXP.OBJEXP.EXE8086的汇编语言的源程序是分段的,由若干个段形成一个源程序。源程序的一般格式为:NAME1SEGMENT语句…语句NAME1ENDSNAME2SEGMENT语句

…语句

NAME2ENDS…END<标号>5.1概述

每一个段有一个名字,以符号SEGMENT作为段的开始,以语句ENDS作为段的结束。这两者都必须有名字,而且名字必须相同。由若干个段组成一个源程序,整个源程序以语句END作为结束。5.1概述

总之,8086的源程序是由若干段组成的,而一个段又是由若干个语句行组成的。所以,语句行是汇编源程序的基础。8086汇编的一个语句行也是由4个部分组成的,即标号操作码操作数;注释各部分之间至少要用一个空格作为间隔。

5.1概述

语句行是由标记及分隔符按照一定规则组织起来的,标记是汇编语言源程序的最小的、具有意义的单位,如标识符、保留字、界符、常数和注释,所有这些都称为标记。在8086汇编语言中,有数值表达式和地址表达式两种,由各种常量与运算符连接成的式子,称为数值表达式。将常量、变量、标号、寄存器内容和运算符、操作符组合成的有意义的式子,称为地址表达式。单个常量,变量、标号是表达式的最简形式。在汇编过程中,汇编程序按操作运算符约定的优先规则对表达式进行计算,得到一个数值或一个地址。5.2语句行构成

伪指令用来指示汇编程序应该如何去处理汇编语言的源程序。它们在汇编时被解释执行,除了部分语句可以申请存储空间以外,不产生任何目标代码。5.3伪指令2.等号语句格式:符号名=表达式功能:把表达式的值赋值给符号名,等号语句与等值语句具有相同的功能。5.3.1符号定义伪指令1.等值语句格式:符号名EQU表达式功能:用一个符号名来代替表达式,使该符号名与表达式同义。格式:[变量名]数据定义符操作数[,操作数,…]功能:方括号中的变量名为可选项。操作数可以不止一个,多个操作数时用逗号分开。数据定义符号是DB、DW、DD、DQ、DT。DB定义字节类型变量,DW定义字类型变量,DD定义双字类型变量,DQ定义四字类型变量,DT定义十字节类型变量。5.3.2数据定义伪指令DATADBl0H,20HSTRl DB 'COMPUTER'DATAl DB 20DUP(?)DATA2 DW ?DATA3 DB20DUP(30H)5.3.2数据定义伪指令格式:段名SEGMENT定位类型组合类型类别名段名ENDS功能:用来把程序分成若干逻辑段,实现存储器的分段管理,在汇编和连接程序时,控制不同段的定位,组合和连接,以便形成一个可执行程序。5.3.3段定义伪指

段寻址伪指令用来告诉汇编程序当前使用的各个段的段地址将要存放在哪个段寄存器中。格式:ASSUME段寄存器名:段名,段寄存器名:段名功能:设置或撤消在SEGMENT…ENDS伪指令中定义过的段名所使用的段寄存器。

5.3.4段寻址伪指令格式:过程名PROC[NEAR/FAR]┆RET

过程名ENDP功能:定义一个过程,并指明过程名和过程的属性。过程名实际上是过程入口的符号地址,PROC和ENDP前的过程名必须相同,它们之间的部分是过程体。过程的类型可以是NEAR,表示所定义的过程是一个近过程。过程类型为FAR表示是一个远过程,5.3.5过程定义伪指令一般说来,编制一个汇编程序的步骤如下:(1)分析题意,确定算法。(2)根据算法画出程序框图。(3)根据框图编写程序。(4)上机调试程序。程序有顺序、循环、分支和子程序四种结构形式。顺序程序结构是指完全按顺序逐条执行的指令序列,这在程序段中是大量存在的,但作为完整的程序则很少见。5.4程序设计举例1.分支程序的结构形式

分支程序结构可以有两种形式,如图所示。

判定条件NY

判定条件…(a)IF_THEN_ELSE

(b)CASE

分支程序的结构形式图5.4程序设计举例2.分支程序设计方法程序的分支一般用条件转移指令来产生,下面一些例子来分析分支程序的设计方法。[例5.6]编程求符号函数,设x在AL中5.4.1分支程序设计程序:DATA SEGMENT

;定义数据段XX DB 10YY DB ?DATA ENDSCODE SEGMENT

;定义代码段

ASSUMECS:CODE,DS:DATASTART PROC FARBEGIN: PUSH DS

;DS:00压栈

MOV AX,0

PUSH AX MOV AX,DATA MOV DS,AX ;置数据段

MOV AL,XX

;AL=XX CMP AL,0

;AL与0比较

JGE BIGR

;大于,等于转BIGR MOV AL,0FFH

;AL=-1 JMP EQUT

;转EQUTBIGR: JE EQUT

;等于0,转EQUT MOV AL,01 ;AL=1EQUT: MOV YY,AL;符号函数的结果存入YY单元

RETSTARTENDP CODEENDSEND BEGIN1.循环程序的结构形式循环程序可以有两种结构形式,如图所示。循环初始状态循环控制条件循环体NYN循环控制条件循环初始状态循环体Y

(1)DoWhile结构

(2)DoUNTIL结构5.4.2循环程序设计2.循环程序设计方法[例5.10]求S=1+2+3+…+100程序:DATASEGMENT ;定义数据段MAX DW100SUM DW?DATA ENDSSTACKSEGMENTPARASTACK;定义堆栈段

DW20HDUP(?)STACKENDS5.4.2循环程序设计CODE SEGMENT ;定义代码段START PROCFARASSUMECS:CODE,DS:DATA,SS:STACKBEGIN:PUSHDS ;DS压栈

MOV AX,0PUSHAX ;00压栈

MOVAX,DATAMOV DS,AX ;置数据段

MOVAX,0 ;累加器清0MOV CX, MAX;循环控制CX=MAXMOV BX, 1 ;初始加数用1AGAIN:ADD AX, BX;累加求和

INC BX ;下一个数

LOOP AGAIN ;循环转AGAINMOV SUM,AX ;求和结果存SUM中

RETSTARTENDPCODEENDSENDBEGIN[例5.10]求N!程序:DATA SEGMENT ;定义数据段N DW5YY DW?DATA ENDSSTACK SEGMENTPARASTACK;定义堆栈段

DW 50HDUP(?)STACK ENDSCODE SEGMENT ;定义代码段START PROCFARASSUMECS:CODE,DS:DATA,SS:STACKBEGIN:PUSH DS ;DS压栈

MOV AX,0PUSH AX ;00压栈

MOVAX,DATAMOV DS,AX ;置数据段

MOV AX,N ;AX=NCMP AX,0 ;比较是否为0JNE NOZ ;非0转NOZ INC AX ;0则AX=1 JMP EXIT ;转EXITNOZ:MOV BX,AX ;BX=AX=N MOV AX,1 ;累积AX=1AGAIN:MUL BX ;相乘AX*BX->AX DEC BX ;BX减1 JNE AGAIN ;非0继续EXIT: MOV YY,AX;保存N!结果到YY中

RETSTARTENDPCODE ENDS END BEGIN

子程序又称为过程,它相当于高级语言中的过程和函数。在一个程序的不同部分,往往用功能和结构形式都相同的程序段,只是某些变量的赋值不同,此时就可以把这些程序段写成子程序形式,在需要时可以调用它。在汇编语言程序中,子程序定义的伪指令是PROC和ENDP,子程序有NEAR和FAR属性.调用子程序和从子程序返回的指令是CALL和RET5.4.3子程序结构子程序设计中,应注意几点:

①现场保护和恢复

②子程序的嵌套和递归调用

③参数传递

④编写子程序调用方法说明5.4.3子程序结构

程序要求从键盘取得一个十进制数,然后把该数以十六进制形式在屏幕上显示出来。采用一个子程序DECIBIN实现从键盘取得十进制数并把它转换为二进制数;另一个子程序BINIHEX把此二进制数以十六进制数的形式在屏幕上显示出来。为避免屏幕上的重叠,另外用CRLF子程序取得回车和换行效果。整个程序结构如图所示。各个子程序之间用BX寄存器来传送信息。在过程DECIBIN中取得的输入数据转换为二进制数后保存在BX寄存器中,而过程BINIHEX需要把BX寄存器中的数用十六进制形式显示出来。[例5.17]编写十进制到十六进制数转换程序。开始调用DECIBIN调用CRLF调用BINIHEX调用CRLF结束从键盘取得十进制数,保存在BX中显示回车和换行用十六进制数形式表达显示BX中的数十进制到十六进制数转换的程序结构图程序:DECIHEXSEGMENT ;定义代码段ASSUMECS:DECIHEXMAINPROCFAR ;主程序REPEAT:CALLDECIBIN ;调用子程序输入十进制数

CALLCRLF ;显示回车、换行

CALLBINIHEX ;以十六进制数输出

CALLCRLF ;显示回车、换行

JMPREPEAT ;转REPEAT,继续MAINENDPDECIBINPROCNEAR ;十进制数输入子程序

MOVBX,0 ;BX保存输入数NEWCHAR:MOVAH,1 INT21H ;调用DOS功能输入字符

SUBAL,30H ;转为数0-9 JL EXIT ;小于0,不是数字

CMPAL,9D ;与9比较

JGEXIT ;大于,不是数字

CBW ;AL=>AX XCHGAX,BX ;AX、BX互换MOVCX,10D ;CX=10MULCX ;AX=AX*CXXCHGAX,BX ;AX、BX互换

ADDBX,AX ;BX为前面输入的结果

JMPNEWCHAREXIT:RETDECIBINENDPBINIHEXPROCNEARMOVCH,4 ;CH循环次数ROTATE:MOVCL,4 ;每次循环输出一位十六进制数ROLBX,CL;即移位4个二进制位

MOVAL,BL ;AL=BLANDAL,0FH;取低4位

ADDAL,30H ;转变为ASCII码

CMPAL,3AH;是否为’0’-‘9’JLPRINTIT;是转PRINTITADDAL,7H ;否转为’A’-‘F’PRINTIT:MOVDL,AL ;DL=输出字符

MOVAH,2 INT21H ;调用DOS中断,显示字符

DECCH

存储器(Memory)是计算机的重要组成部件,用来存放数据和程序的。半导体存储器由于其体积小、速度快、耗电少、价格低等优点而在微机系统中得到广泛的应用。6.1概述6.1.1存储器的分类

根据存取方式的不同,半导体存储器可以分为随机存取存储器RAM(RandomAccessMemory)和只读存储器ROM(ReadOnlyMemory)两大类。如图所示。

6.1.1存储器的分类

1.存储容量

2.存取速度

3.功耗

4.可靠性

5.性能/价格比6.1.2半导体存储器主要性能指标1.存储体2.地址译码器3.控制逻辑电路4.数据缓冲器6.1.3存储器芯片的一般结构1.静态RAM基本存储电路静态RAM基本存储电路用来存储1位二进制信息(0或1),是组成存储器的基础。静态MOS六管基本存储电路如图所示。特点:不需要刷新,外围电路简化;集成度较低、功耗较大等。6.2随机存储器(RAM)6.2.1静态随机存储器(SRAM)2.静态RAM芯片常用的典型SRAM芯片有2114、6116、6264、62256等2114芯片2114芯片是1K×4的静态RAM芯片,其引脚图如图6-4所示。地址输入端10个(A9~A0);数据输入/输出端4位(I/O1~I/O4);片选端;写允许控制端。(2)6116芯片

6116芯片的容量为2K×8bit,有2048个存储单元。工作过程如下:读出时:A10~A0送地址信号到行、列地址译码器,经译码后选中一个存储单元;由CS=0,OE=0,WE=1构成读出逻辑;被选中单元的8位数据经I/O电路和三态门送到D7~D0输出。写入时:A10~A0送地址信号到行、列地址译码器,经译码后选中一个存储单元;由CS=0,OE=1,WE=0构成写入逻辑;从D7~D0端输入的数据经三态门到I/O电路,写到存储单元中。无操作:CS=1,I/O三态门呈高阻状态,存储器芯片与系统总线“脱离”。(1)存储器基本电路——单管动态电路(MOS管栅极与衬底之间分布电容)(2)特点:定时刷新。(3)刷新要求:在几毫秒时间内每隔一段时间刷新一次;进行刷新操作的时间内存储器不能进行读写(死时间);在每一个指令周期中利用CPU不进行访内操作的时间进行刷新。

6.2.2动态RAM(DRAM)特点:信息在使用时不能被改变(只能读出,不能写入);用于存放固定的程序和常量优点:非易失性的。

6.3只读存储器(ROM)掩膜式ROM——制成后,用户不能修改。可编程只读存储器(PROM)——可以由用户自己编程(只可写入一次)。可擦写只读存储器(EPROM)——写入:利用编程器。擦除:利用紫外线光照射。电擦写可编程只读存储器(E2PROM)——特点:对硬件电路没有特殊要求,操作简单;在线读写,在断电情况下保存的数据信息不会丢失;可在写入过程中自动进行擦写。常用的典型EPROM芯片有

2708(1K×8)、2716(2K×8)、

2732(4K×8)、2764(8K×8)、

27128(16K×8)、27256(32K×8)、

27512(64K×8)等,方式\引脚A9A0VppVcc数据端功能读低低高××Vcc5V数据输出输出禁止低高高××Vcc5V高阻备用高××××Vcc5V高阻编程低高低××12.5VVcc数据输入校验低低高××12.5VVcc数据输出编程禁止高××××12.5VVcc高阻标识符低低高高低高VccVcc5V5V制造商编码器件编码(1)2764A芯片

EPROM2764A芯片为双列直插式28引脚的标准芯片,有13条地址线,8条数据线,2个电压输入端Vcc和VPP,一个片选端CS,此外还有输出允许OE和编程控制端PGM,容量为8K×8位,其引脚如图所示。七种工作方式如表所示。CPU要实现对存储单元的访问,首先要选择存储芯片,即进行片选;然后再从选中的芯片中依地址码选择出相应的存储单元,以进行数据的存取,这称为字选。片内的字选是由CPU送出的N条低位地址线完成的,地址线直接接到所有存储芯片的地址输入端,而片选信号则是通过高位地址得到的。实现片选的方法可分为三种:

温馨提示

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

评论

0/150

提交评论