微机原理总结

第四章

1. 8086/8088为什么采用地址/数据引线复用技术?

考虑到芯片成本,8086/8088采用40条引线的封装结构。40条引线引出8086/8088的所有信号是不够用的,采用地址/数据线复用引线方法可以解决这一矛盾,从逻辑角度,地址与数据信号不会同时出现,二者可以分时复用同一组引线。

2. 8086与8088的主要区别是什么?

8086有16条数据信号引线,8088只有8条;8086片内指令预取缓冲器深度为6字节,8088只有4字节。

3.怎样确定8086的最大或最小工作模式?最大、最小模式产生控制信号的方法有何不同?引线MN/MX#的逻辑状态决定8086的工作模式,MN/MX#引线接高电平,8086被设定为最小模式,MN/MX#引线接低电平,8086被设定为最大模式。

最小模式下的控制信号由相关引线直接提供;最大模式下控制信号由8288专用芯片译码后提供,8288的输入为8086的S2#~S0#三条状态信号引线提供。

4. 8086被复位以后,有关寄存器的状态是什么?微处理器从何处开始执行程序?

标志寄存器、IP、DS、SS、ES和指令队列置0,CS置全1。处理器从FFFFOH存储单元取指令并开始执行。

5. 8086基本总线周期是如何组成的?各状态中完成什么基本操作?

基本总线周期由4个时钟(CLK)周期组成,按时间顺序定义为T1、T2、T3、T4。在T1期间8086发出访问目的地的地址信号和地址锁存选通信号ALE;T2期间发出读写命令信号RD#、WR#及其它相关信号;T3期间完成数据的访问;T4结束该总线周期。

6.结合8086最小模式下总线操作时序图,说明ALE、M/IO#、DT/R#、RD#、READY信号的功能。

ALE为外部地址锁存器的选通脉冲,在T1期间输出;M/IO#确定总线操作的对象是存储器还是I/O接口电路,在T1输出;DT/R#为数据总线缓冲器的方向控制信号,在T1输出;RD#为读命令信号;在T2输出;READY信号为存储器或I/O接口“准备好”信号,在T3期间给出,否则8086要在T3与T4间插入Tw等待状态。

7.什么是总线请求?8086在最小工作模式下,有关总线请求的信号引脚是什么?

系统中若存在多个可控制总线的主模块时,其中之一若要使用总线进行数据传输时,需向系统请求总线的控制权,这就是一个总线请求的过程。8086在最小工作模式下有关总线请求的信号引脚是HOLD与HLDA。

8.简述在最小工作模式下,8086如何响应一个总线请求?

外部总线主控模块经HOLD引线向8086发出总线请求信号;8086在每个时钟周期的上升沿采样HOLD引线;若发现HOLD=1则在当前总线周期结束时(T4结束)发出总线请求的响应信号HLDA;8086使地址、数据及控制总线进入高阻状态,让出总线控制权,完成响应过程。

9.微型计算机采用总线结构有什么优点?

 

第二篇:微机原理部分总结

第一章

1、二进制——十进制之间的转换

1101.01=1*23+1*22+0*21+1*20+0*2-1+1*2-2

8.125 = 1000.001 (8除2取余等于1000,0.125乘2取整等于001)

2、二进制——十六进制之间的转换

1010.0101 = A.5

整数部分每4位写成一位16进制数,不足4位则在左侧补0。小数部分每4位写成一位16进制数,不足4位在右侧补0

3、逻辑电路四种符号记住

&(与),≧1(或),=1(异或),1(非)

X(与),+(或) ,○+(异或),反

4、两进两出半加器,三进两出全加器,两数相与得进位,两数异或得其和

5、原码、反码与补码

原码就是前面所介绍的二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。

反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。

补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。

6、布尔代数的运算规律:恒等式、交换律,结合律,分配率,摩根定理。

第二章

1、ALU,算术逻辑单元,负责二进制的四则运算以及逻辑运算

2、触发器

RS——两端输入完成置位复位,也可S和CLK配合置位,R和CLK配合复位

? RS触发器由两个与非门组成,且有反馈回路。所以上一时刻的输出状态影响后一时刻的出状态。

? 触发器状态的约定:

触发器有两个输出端,分别为Q端和Q端,这两个输出端的状态在正常工作时总是相反的,为了在研究中能统一对触发器所处状态的理解,通常把触发器的Q端所处的状态称为触发器的状态.

Q=0时,称触发器处于“0”态.

Q=1时,触发器处于“1”态。

Qn :前一时刻的状态称为现态(原态)。

Qn+1:后一时刻的状态称为次态(新态)。

R :置“0”端(复位端)

S :置“1”端(置位端)

时标RS触发器与基本RS触发器的区别是:

1) 触发器的工作由CLK脉冲控制。

2) 即使RS端有数据输入,但CLK脉冲高电平未至,触发器仍不工作,只有当CLK脉冲高电平到达时,触发器的状态才会进入工作状态(基本RS则只要RS端数据一到,触发器就工作)。这样便于控制触发器

D——D高则置位,D低则复位

JK——JK的取值不同可出现四种状态:自锁,复位,置位,翻转

3、寄存器

可控缓冲寄存器(D触发器):L门高电平使数据装入,低则自锁原来的数据。 移位寄存器(D触发器):

输入是1,左移则是在CLK前沿时0000—0001—0011—0111—1111

输入是1,右移则是在CLK前沿时0000—1000—1100—1110—1111

计数器(JK触发器):

4位计数器可从0到15计数,在CLK后沿时0000—0001—0010—0011

常见的寄存器有:

缓冲寄存器:用以暂存数据;

移位寄存器:能够将其所存的数据一位一位地向左或向右移;

计数器:一个计数脉冲到达时,会按二进制数的规律累计脉冲数;

累加器:用以暂存每次在ALU中计算的中间结果。

计数器(counter)也是由若干个触发器组成的寄存

器,它的特点是能够把存储在其中的数字加1。

? 计数器的分类:行波计数器 1. 行波计数器由JK触发器构成。

2. 各触发器的J,K端都是悬浮的,这相当于J,K端都是置1的状态,表示各位都处于准备翻转的状态。

3. 当时钟脉冲下降沿到来时,计数器开始计数。

4. 二进制计数。

同步计数器 环形计数器 程序计数器

4、三态输出器:E门,E=1,B=A,即A的值传给B,E=0,AB之间高阻

记忆元件是由触发器组成的,而触发器只有两个状态:0和1,所以每条信号传输线只能传送一个触发器的信息(0或1)。

? 如果一条信号传输线既能与一个触发器接通,也可以与其断开而与另外一个触发器接通,则一条信息传输线就可以传输随意多个触发器的信息了。

? 三态输出电路(三态门)就是为了达到这个目的而设计的。

三态门(E门)和装入门(L门)一样,都可加到任何寄存器(包括计数器和累加器)电路上去。这样的寄存器就称为三态寄存器。L门专管对寄存器的装入数据的控制;E门专管由寄存器输出数据的控制。

有了L门和E门就可以利用总线结构,使计算机的信息传递的线路简单化,控制器的设计也更为合理而易于理解了。

5、存储器

分为ROM和RAM,一个16*8的存储器表示有16个存储单元,每个单元有8位数据,16个存储单元需要4跟地址线译码选择。

存储器(memory)是计算机的主要组成部分。它既可用来存储数据,也可用以存放计算机的运算程序。

存储器由寄存器组成,可以看做一个寄存器堆,每个存储单元实际上相当于一个缓冲寄存器。

只读存储器ROM:用以存放固定程序的存储器,一旦程序存放进去之后,即不可改变。 随机存储器RAM:又叫做读/写存储器。它和ROM区别在于这种存储器不但能读取已存放在其各个存储单元中的数据,而且还能够随时写进新的数据,或者改写原来的数据。因此,

RAM的每一个存储单元相当于一个可控缓冲寄存器。

? 随机存储器分为:静态RAM和动态RAM

静态RAM:静态RAM常用双极型晶体管触发器作为记忆元件,只要有电源加于触发器,数据即可长期保留。

动态RAM:动态RAM则用电容及MOSFET作为记忆元件。由于电容会漏电,因而常需“刷新”,这就是要求每隔2ms充电一次,为此还须另加一刷新电源。

课本37页例2.2

第三章

指令系统:就是用来编制计算程序的一个指令集合。

? 这台微型机有5条指令:

LDA——将数据装入累加器A;

ADD——进行加法运算;

SUB——进行减法运算;

OUT——输出结果;

HLT——停机。

? 5条指令在一起就称为这台计算机的指令系统。

机器周期:执行一条指令的时间为一个机器周期。

机器周期又可分为取指周期和执行周期。

取指过程和执行过程机器都得通过不同的机器节拍。

第四章

1、微处理器由算术逻辑部件ALU、控制部件、寄存器和片内总线等构成。第一代微处理器是19xx年Intel的4004;第二代是19xx年的8080;70年代后期开始使用VLSI,8086属于第三代;第四代是19xx年的80386。

2、8086/8088CPU具有20根地址线,16根数据线(8088是8位数据线),主频5M。其结构见书73页。

内部结构

(1)、功能结构:

执行单元(EU):翻译指令代码,发出相应控制信息

总线接口单元(BIU):与存储器、IO端口传送信息

(2)、内部寄存器:

(1) 4个通用寄存器:AX,BX,CX,DX。一般用来存储数据。此外,还有额外功能,如 AX常作为累加器

BX常用作基址寻址器,存放段内偏移地址

CX常用作计数器,常常将循环次数用它来存放

DX常用来存放输入输出的端口地址,用于IO端口简介寻址

(2) 4个专用寄存器:SP,BP,SI,DI

SP存放堆栈指针(堆栈地址上低下高,SP指向栈顶,参考书116),BP是基址寻址器,SI、DI是变址寻址器。BP、SI、DI也可存放数据用

(3)4个段地址寄存器:代码段CS,数据段DS,堆栈段SS,附加段ES

(4)标志位FR(共16位:6个状态位,3个控制位,7位未用)

(5)指令指针寄存器IP:用于寻址当前需要取出的指令字节,程序员不能对它直接操作

(6)标志寄存器FR的9位标志位:

? CF(进位标志)算术操作最高位是否有进位或借位。有=1,无=0

? ZF(零标志)操作结果是否为0 。是=1; 否=0

? OF(溢出标志)此次运算是否发生了溢出。是=1; 否=0。还可根据如下法则判断:加法:两个操作数符号相同,结果符号不同时,OF=1;

减法:两个操作数符号相反,结果符号与减数相同,OF=1.

? IF(中断标志)是否接受可屏蔽中断请求。是=1;否=0

? PF(奇偶标志)数据最低8位中1的个数为偶数=1; 数据最低8位中1的个数为奇数=0

? AF(辅助进位标志)D3→D4位产生了进位或借位=1; D3→D4位无进位或借=0 ? SF(符号标志)结果最高位为1 =1; 结果最高位为0=0

? DF和TF

3、存储器结构

8086/8CPU有20根地址线,但是内部所有寄存器均为16位,那么如何产生20位的物理地址,把存储空间分为若干个逻辑段,每个段最多64K字节。然后每段的首地址用16位表示(段基址,存于段地址寄存器CS,DS,SS,ES中),然后段内的相对地址用16位的通用寄存器来存放(偏移量,存于IP或SP中)。这样,段基址左移4位再加上偏移量就形成了20位的物理地址

CS=2000H,IP=2200H。物理地址=CS左移四位+IP=20000+2200=22200H

物理地址与逻辑地址:

4、物理地址是实际地址,具有20位的地址值,一个物理地址可以唯一标识1M存储空间的一个字节的地址。逻辑地址是由段基址和偏移地址组成的,程序以逻辑地址编址。 物理地址 = 段基址X16+偏移地址

5、8086的工作周期

一个总线周期分为四个时钟周期,每个时钟周期分别称为T1,T2,T3,T4。

如果读写数据未完成,会在T3后插入Tw状态,如果周期空闲,则维持T1状态

6、8086有40个引脚,通过这40个引脚向地址、数据、控制总线发出地址信息,数据信息以及控制信息,从而实现微机系统的读写等操作。其中reset引脚是复位信号,该信号出现后,CPU便结束当前操作,并把标志寄存器、DS、ES、SS、IP、以及指令队列清零,把CS置位FFFFH,当复位信号变为低电平时,CPU从FFFF0处开始执行程序。Ready引脚接收内存或IO送来的信号,CPU在T3状态对Ready信号采样,低电平则说明内存或外设没有准备好,需要插入Tw,高电平则进入T4。

7、CPU的工作模式

最小组态模式——当CPU引脚MN/MX界高电平时,此时构成小规模应用系统,CPU提供所有总线信号

最大组态模式——当CPU引脚MN/MX界低电平时,此时构成大规模应用系统,CPU和8288总线控制器、8289总线仲裁器共同管理总线信号

8、8086做小工作模式的典型配置,见书85页。

8284提供时钟脉冲,8282提供地址锁存(因为地址数据线是分时复用的,所以用它来区分),8286是CPU与数据总线之间的缓冲器,提供双向的数据缓冲驱动功能

8284时钟发生器为CPU提供基准的时钟脉冲CLK以及RESET、READY信号。

8282具有8位输入输出端。所以可采用3个8282来与CPU的A0~A19连接,以便锁存驱动

地址信息,CPU的ALE接8282的STB引脚,ALE高电平地址信号直通,低电平锁存地址,BHE有效表示数据线高八位可用。

8286具有8位双向输入输出端,T引脚控制方向,与CPU的DT/R连结。高电平自CPU输出,低电平CPU接收数据,OE控制输出,与DEN连结。有效允许输出,反之不允许。8286的A0~A7与CPU的AD0~AD15连结(两个8286),传送数据时,8282把AD0~AD15上的地址信号锁存起来,8286开始传送数据

最小工作模式是一个以8086为主体的单处理器系统,所有控制信号均由CPU直接提供。 最小工作模式系统包括硬件如下:

1.一片时钟发生器8284A;

2.三片地址锁存器8282/8283;

3.两片数据收发器8286/8287;

8284A是8086CPU系统的时钟发生器芯片,它为8086CPU系统提供所需要的时钟信号、复位信号(RESET) 和就绪信号(READY)

在最小模式下,CPU必须配有8282、8284、8286才能构成整个微处理器系统,才能通过地址、数据、控制总线与外部设备联系,控制外设工作。

在最大模式下,除了上述还需要配置8288总线控制器,由8288对处理器发出的控制信号进行变换和组合,最终由8288产生总线控制信号,而不是由CPU直接产生

8086的最大工作模式需要总线控制器8288和总线仲裁器8289配合。

总线控制器8288:

与CPU合作来控制总线。从8284接受CLK提供时钟脉冲,从CPU接收S0~S2状态,并译码。从而产生各种控制信号。如读写存储器、IO等信号,输出ALE控制8282,输出DEN控制8286,INTA与DMA控制器8259相连,接受中断信号

总线仲裁器8289:与8288、CPU一起和其他主控者构成多主控的微机系统

8086工作在最大模式时,不直接产生控制信号,而是在每个总线周期开始之前输出状态信息S2,S1,S0,用于指示该总线周期的操作类型。8288总线控制器对S2,S1,S0,译码,产生各种命令和控制信号。

总线裁决器8289与总线控制器8288相互配合,可解决多个处理器同时申请使用系统总线的问题。在有多个主控器同时要求使用总线时,由8289总线裁决器进行裁决,裁决方式有三种:并行优先级裁决,串行优先级裁决,循环优先级裁决。

4、系统操作

一个微机系统为了完成自身的功能,需要CPU执行多种操作,其中主要有:

(1)、系统的复位和启动操作:从内存FFFF0处开始执行

(2)、总线操作

A、总线周期的概念

CPU对外的各种操作都需要通过总线,称为“总线操作”。不同的总线操作需要不同时间和信号,完成特定的总线操作的时间就被称为该操作的“总线周期”

典型的总线周期由四个时钟周期构成(T1~T4),每个时钟周期叫做一个“T状态”

此外,由于外设或存储器速度跟不上CPU,所以会出现在一个总线周期内无法完成一次总线操作,故需要插入一个或多个TW状态

当执行完一个总线周期后,不立即执行下一个总线周期。那么,系统总线处于空闲状态,即执行空闲周期T。

B、读总线操作:CPU从存储器或IO设备读入数据的操作。由CLK提供时钟脉冲,包括T1~T4四个状态,若外设或存储器慢还可以插入TW状态。

C、写总线操作

上述操作具体见书63~65页

(3)、总线保持:一般情况下所有总线都由CPU来控制,但是也可以由其他芯片控制。当有其他芯片要求控制总线时,先向CPU提出请求(HOLD信号),CPU会对HOLD引脚监测,当发现由请求且CPU同意让出总线时,便发出HELD信号通知芯片接管总线。此时,CPU一些引脚处于高阻悬空状态,总线与CPU无联系。芯片可以接管并使用总线,如DMA控制器可以申请对总线的控制。

9、8086的功能

(1)系统的复位和启动

8086要求复位信号至少有4个时钟周期的高电平,如果是初次加电启动则要求大于50us的高电平。复位或启动后,系统从FFFF0处开始执行程序。

(2)总线读,见书96至99

(3)总线写,见书96至99

(4)中断操作

8086可以处理256种中断,可以分类如下:

硬件中断是由外部的硬件产生的;软件中断是程序中的某条指令对标志寄存器的某个标志设置而产生的。

非屏蔽中断通过CPU的NMI引脚接入,不受IF标志屏蔽;可屏蔽中断从CPU的INTR脚接入,只有IF=1时,可屏蔽中断才可以进入。

中断向量是中断处理子程序的入口地址,每个类型的中断对应一个中断向量。内存中的0000~03FF区域设置了一个中断向量表,前5个是专用中断向量,比如类型2是非屏蔽中断,类型0是除数为0中断。

可屏蔽中断请求的响应过程

当CPU的INTR引脚收到一个中断请求信号,并且IF标志为1,则CPU会在当前指令执行完毕,开始响应外部的中断请求,具体如下:

(1)8086在连续的两个总线周期中发出INTA中断请求响应信号

(2)在第二个INTA信号期间,中断源经过数据总线向8086发出一字节的中断类型码,8086收到后放入暂存器

(3)8086保护现场:标志寄存器入栈,清除IF、TF标志位,将断点保护到堆栈中,即CS,IP值入栈。

(4)8086将中断类型码乘4后得到中断向量表的入口地址,从此地址开始的4个单元中读出中断服务程序的入口地址(即IP,CS的值)

(5)8086从此地址取指令执行,使控制转向中断处理过程。

注:在第四步中,比如中断类型是17H,则其乘以4以后得到005CH,因此005C、005D、005E、005F四个单元中存放的数据就是中断服务子程序的入口地址,比如分别存放的是90H、78H、45H、23H,那么7890是偏移地址放入IP内,2345是段基址,放入CS内。然后程序从此地址开始执行中断服务子程序。

? 中断处理子程序的结构模式:见书105页。

? 软件中断:用一条指令使CPU进入中断处理子程序,不管IF的取值即可执行(但仍受TF(单步中断标志)的影响)。软件中断执行过程中,如遇非屏蔽中断,则执行完当前指令

后响应;如遇可屏蔽中断,则是IF标志而定。

8086/8088有20根地址线,具有220 = 1M字节的存储器地址空间。

? 内存单元按照00000H~FFFFFH来编址。

? 8086系统中,将1M字节的存储空间分成两个512K字节的存储体,一个存储体中包含偶 数地址,另一个存储体中包含奇数地址,两个存储体之间采用字节交叉编制方式。

(5)总线保持

一般情况下所有总线都由CPU来控制,但是也可以由其他芯片控制。当有其他芯片要求控制总线时,先向CPU提出请求(HOLD信号),CPU会在每个时钟周期的上升沿对HOLD引脚监测,当发现由请求且CPU同意让出总线时,便在T4或者空闲的T1状态发出HELD信号通知芯片接管总线。此时,CPU一些引脚处于高阻悬空状态,总线与CPU无联系。芯片可以接管并使用总线,如DMA控制器可以申请对总线的控制。

8、

第五章

指令的一般格式:

指令助记符[操作数],[操作数] [;注释]

操作数的一般形式:

1.立即数操作数

2.寄存器操作数

3.存储器操作数

4.I/O端口操作数

注意:操作个数可以一个、二个或三个

1、CPU的寻址方式:指令里需要操作的数据来自什么地方

立即数寻址:操作数是一个立即数。MOV AL 80H

注意:

立即数寻址数据可以从指令中直接取得。

立即寻址方式的指令主要用来对寄存器赋值。因为操作数可以从指令中直接取得,不需要运行总线周期。

立即数可以为8位,16位,规定立即数只能是整数,不能是小数,变量或者其他类型的数据。

立即数只能作为源操作数。

寄存器寻址:操作数在寄存器内。 INC CX

注意:寄存器寻址不需要使用总线周期。

直接寻址:操作数在内存中,需注意内存的地址是由段基址和段内偏移(有效地址)组成的。若没有指定,默认段地址存放在DS中,而有效地址则在指令中给出。

如:MOV AX [1070],如DS=2000H,则2000H是段基址,1070则是有效地址。因此需要到内存的21070以及21071取出数据存入AX中。

注意:

1.数据存储在存储器中,存储单元的有效地址由指令中直接指出。

2.直接寻址方式是存储器寻址中最简单的寻址方式。

3.存储器直接寻址方式如果不加说明,则操作数默认在数据段。若操作数在其他段,则必须在地址前加以说明。这种说明称为“段超越前缀”。

4.用符号代替数值地址,此时,VALUE为存放操作数单元的符号地址。

寄存器间接寻址:操作数在内存中,默认段基址在DS中,有效地址由寄存器指出。寄存器可以是BX(数据段基址寻址)、BP(堆栈段基址寻址)、SI(变址寻址)、DI(变址寻址)。需要注意的是如果有效地址在BP中,则段基址在SS中。

基址+变址的寻址:EA = [BX]或[BP]+[SI]或[DI]

寄存器间接寻址根据使用的寄存器不同分为:

以BX寄存器进行间接寻址—数据段基址寻址

以BP寄存器进行间接寻址—堆栈段基址寻址

注意:

寄存器间接寻址方式只能用BX、SI、DI、BP寄存器,不能用DX、AX、CX寄存器。

如果指令中指定的寄存器是BX、SI和DI,在没有加段超 越前缀的情况下,操作数在数据段(DS)。

如果指令中指定的寄存器是BP,在没有加段超越前缀的情况下,则操作数必定在堆栈段(SS) 寄存器相对寻址方式:寄存器如果是BX,SI,DI,指示的是数据段(DS)

寄存器如果是BP,指示的是堆栈段(SS)

基址变址寻址方式:基址寄存器一般为BX或BP,变址寄存器为SI或DI

但指令中不能同时出现两个基址或两个变址寄存器。

一般情况下,由基地址决定哪一个段寄存器作为段地址

2、传送类指令

MOV:寄存器之间,寄存器和内存之间的数据传送;立即数送到寄存器或内存

PUSH、POP:PUSH是把字压入栈,POP是把字弹出栈;注意栈的地址是上小下大。 XCHG:交换寄存器之间、寄存器内存之间的字节或字(会影响标志位)。

LEA:将某个内存地址的有效地址(段内偏移量)送入寄存器,源操作数必须是一个内存地址,目的操作数必须是一个16位的寄存器。

注意:MOV AX [1070H]和LEA AX [1070H] 的区别

MOV是把1070,1071两个地址所存放的内容送入AX,LEA是把1070这个地址送入AX LDS和LES

IN、OUT:累加器AX或AL与IO端口之间的数据传送,IN是从IO读入,OUT输出

3、数据操作类指令:均会影响标志位

ADD:不带进位加法,执行两个字或字节的相加操作。

ADC:和ADC一样,只是需要把CF的值也加在和中

INC:将操作数内容加1,用于循环程序中修改指针和循环次数

SUB:不带进位减法,执行两个字或字节的相减操作。

SBB:和SUB一样,只是还需要把CF的值减掉

DEC:将操作数的值减1

NEG:取补码,实际是用0减去操作数。

CMP:执行两数相减,但不送回结果,只影响标志位

逻辑运算:NOT、AND、OR、XOR:

AND对一个数据指定位清0,如AND AL,0FH。对AL的高四位清0

OR对一些制定位置1,如OR AL,02。对AL的D1位置1

XOR用于对某个寄存器清0,如XOR AX, AX。则AX清0

TEST用于检测指定位是否为0,如TEST AL 01,就是判断AL的D0位的取值。如果ZF=1,说明D0=0;ZF=0,说明D0=1。

逻辑移位:SHL、SHR和算数移位:SAL、SAR

SHL和SAL:功能一样,每向左移位一次,最低位补0,最高位进入CF。

SHR和SAR:SHR向右移位一次,最高位补0;SAR则是最高位保持不变。

4、串操作指令:

MOVS

CMPS

SCAS

LODS

STOS

重复前缀REP,表示无条件重复字符串指令,直到满足CX寄存器中指定的次数

5、控制类指令:

JMP无条件转移、RET过程返回、JE等于则转移、JZ结果为0则转移、JNE、JNZ、LOOP 循环

进位标志:CLC、STC。方向标志:CLD、STD。中断标志:CLI、STI

6、标示符的命名规则

第六章

1、分支程序,见书141,例子6.3

2、循环程序,见书144,例子6.5

3、子程序

子程序调用与返回由CALL和RET指令实现。子程序调用过程如下:

保护现场——参数传递——恢复现场,详见书147

第七章

汇编指令:如 ADD AX,BX;MOV AX,BX

是在程序运行期间由计算机来执行的。

? 伪指令(伪操作):是汇编程序对源程序汇编期间由汇编程序处理的,它本身不产生对应的机器目标代码。

? 宏指令:它是一个指令序列.汇编时凡有宏指令语

句的地方都将用相应的指令序列的目标代码插入.

1.汇编语言源程序就是用汇编语言编写的程序,简称汇编语言程序。

2.源程序必须保存为扩展名为.asm的文件。

3. 指令类型:

1) 汇编指令

2) 伪指令

3) 宏指令

第八章

1、概述:

I/O系统负责主机与外界进行信息交换。在微机系统中,各种I/O设备(键盘、显示器、打印机)通过I/O接口与系统相连,在接口的支持下实现各种方式的数据传送

2、CPU与外设交换的信息:数字量、模拟量、开关量、脉冲量

3、接口电路

由于I/O设备如CRT,键盘等相对于CPU来说,速度慢很多,而且外设的信号、数据格式各异。为了把外设和CPU连接起来,必须使用接口部件,通常把接口部件做成独立并且通用的接口芯片。

5、I/O端口的编址方式

每个接口部件都包括一组寄存器(状态,控制,数据),CPU和外设进行数据传输时,各类信息在接口中存入不同的寄存器。称这些寄存器为I/O端口,每个端口都有一个端口地址。 外设需要通过接口与CPU联络交流,而接口由众多端口组成

那么如何找到一个端口,方法是为所有的的端口编一地址。

可采用两种方式

A、I/O端口地址与内存单元地址统一编址,称为存储器映射编址方式

B、I/O端口独立编址,CPU用16根地址线来寻址,故可有65536个端口地址

8.1 I/O传送控制方式

1、程序控制的I/O方式

(1)、无条件传送:传送前CPU不需要了解外设的状态,直接传送数据,即CPU认为外设始终处于就绪状态。适用于LED,开关等简单外设

A、输入时,设备数据送入缓冲器,当CPU需要,则RD有效,M/IO有效,地址总线提供端口地址,通过DB取走数据

B、输出时,IM/IO,WR有效,地址总线提供端口地址,选中端口,DB中数据传入锁存器,等外设取走

(2)、条件传送方式:传送前,CPU先查询端口状态,等端口状态就绪后在传送数据,称为查询传送。

A、输入时

(1)、接口电路组织:

8位锁存器和缓冲器构成输入寄存器,一边连接输入设备,一边连接数据总线

1位D触发器和1位缓冲器构成状态寄存器,一边连接设备STB选通脚,一边连接数据总线,CPU通过DB的其中一位来读取其状态,从而确定其是否就绪

(2)、设备准备好数据后,发一选通信号。该信号一方面选通锁存器,是数据锁存其中。一方面选通D触发器置1,从而使1位缓冲器READY置1,至此,外设数据状态均就绪

(3)、 CPU选通8位缓冲器,驱动数据到DB,读出,另一方面选通D触发器置0,表示数据已经取走

(4)、CPU选通D触发器,将其清零。接着便可开始下一个数据传输

B、输出时

CPU通过M/IO和WR选通数据锁存器,把数据通过DB存入锁存器;

同时使D触发器输出1,这样一方面可以通知外设有数据需要取走,另一方面,通知状态寄存器置1,状态寄存器送信号到DB某1位,CPU读出,忙则等。闲则CPU选通数据锁存器,继续输出数据。

外设取走数据,发ACK信号给D触发器置0,从而给状态寄存器清0

2、中断控制的I/O方式

传送请求由外设提出,CPU视情况响应后,调用预先安排好的子程序来完成数据传送。 传送过程

(1)、设备准备好数据后,选通锁存器送入数据,同时选通D触发器,若此时中断允许触发器也有效,则发一信号到CPU的INTR脚,表示请求中断

(2)、CPU执行玩一条指令后便去察看INTR脚,若有效且内部允许中断则发出中断响应信号INTA,该信号一方面清D触发器,表示中断已经响应。另外打开缓冲器,把有关的代码,即中断向量号送到DB

(3)、CPU收到中断向量号后,据此找到为该设备服务的中断服务程序入口,去读去设备数据

传送一个字节或字就要中断CPU一次

3、DMA传送方式

传送请求由外设向DMA控制器(DMAC)提出,后者向CPU申请总线,若CPU响应DMA的请求把总线使用权赋给DMA控制器,数据则不通过CPU,由DMAC利用系统总线来完成外设和存储器之间的数据传送

数据传送完毕,DMAC向CPU发出结束中断请求,CPU收回总线。

CPU只需中断一次即可完成数据的传送

4、IO处理机方式:由IO处理器8089完成

(1)、IO处理机概述:

8089可以将8086CPU与外部设备连接起来相互通信。8089具有自己的指令系统,能执行程序。因此,除具有输出入功能外,还可对数据进行装配、拆卸等工作。从而减轻CPU的负担,提高系统的性能

系统配置8089IO处理机后,8086必须工作在最大模式下。当CPU需要进行IO操作时,只需要在存储器中建立一个规定格式的信息块,设置号需要执行的操作和有关的参数。然后通知8089读这些信息,8089根据这些信息进行IO操作,将数据块以字或字节为单位完成IO功能。如果数据IO过程出现错误,8089还可以重传。

在整个数据IO过程中,CPU不必干预,但可以和8089并行工作去执行其他功能

B、8255的工作方式

方式0:基本输出入方式。无固定IO联络信号,用户可自行安排联络信号。ABC三口均可作为输入或输出。只能用于各种同步并行传送系统

方式1:字节选通输入出方式。接口和外设之间需要联络信号进行协调。AB均可工作于方式1。C的某些位固定为联络信号

选通输入方式:

(1)外设将数据准备好送至8255的端口数据线时,外设将选通信号STB置低有效,通知8255。

(2)8255利用STB信号把端口数据锁存到输入锁存器。然后置IBF为高有效,告诉外设数据已经读入,当前输入缓冲器已满。

(3)在STB信号后沿输出INTR,向CPU发出中断请求

(4)CPU响应,发出RD读信号,取走数据。并对IBF置0,然后外设可以继续输入数据。

AB端口被定义为工作方式1且输入时,C的PC5~PC0被用作控制信号,PC345为A口服务,

PC012为B口服务。PC6、PC7可以完成输入输出工作。

选通输出方式:

中断方式时,外设发中断信号到CPU,CPU响应,输出数据,发出WR信号,WR一方面清除INTR,另一方面在使OBF有效,通知外设接收数据,WR结束后,数据从端口输出,外设接收后,发ACK响应,使OBF无效,使INTR有效,继续传送数据

AB端口被定义为工作方式1且输出时,C的PC67和PC3~PC0被用作控制信号,PC367为A口服务,PC012为B口服务。PC4、PC5可以完成输入输出工作。

AB均可作用输入或输出用,无论哪种情况,PC0123总是作为控制用。A输入时PC45控制用,PC67输入输出用;A输出时,PC67做控制用,PC45输入输出。

因此AB均输入、输出、A输入B输出、A输出B输入可组成8种方式。

方式2:双向选通传送方式。即同一端口既可以发送数据,又可接收数据。只有A口可工作于此方式

输入数据:外设将数据准备好送至8255的A口,外设将选通信号STB置低有效,通知8255。8255利用STB信号把端口数据锁存到输入锁存器。然后置IBF为高有效,告诉外设数据已经读入。并阻止信数据输入。在STB信号无效后,允许中断的条件下,INTR信号有效向CPU提出中断请求,CPU响应,发出RD读信号,取走数据

输出数据:外设发中断信号INTR到CPU,CPU响应,输出数据,发出WR信号,WR一方面清除INTR,另一方面在使OBF有效,通知外设接收数据,WR结束后,数据从端口输出,外设接收后,发ACK响应,使OBF无效,使INTR有效,继续传送数据

波特率概念

波特率指单位时间内传送的信息量,即每秒传送的位数。

1波特=1位每秒

TxC的频率=N*字符传输波特率

RxC:接收时钟,接收时钟的上升沿接受数据。

8251发送数据:

发送器做好接受数据准备,发送控制器向CPU发出TxRDY

CPU把数据并行输入发送缓冲器,并锁存

若为同步方式,则先发送一或两个同步字符(Sync),然后由移位器存器逐位串行输出数据到外设

若为异步方式,则加上起始位和停止位,然后逐位串行输出

发送器中的八位数据发送完毕,发送控制电路向CPU发出TxEMPTY信号。

第9章

定时计数器

定时计数器在微机系统中作用重大,如系统时钟计时,内存定时刷新等都需要精确定时计数器。8253就是一个定时计数器。

2、8253内部结构

(1)、数据总线缓冲器:与数据总线相连。有3个功能:

A、CPU通过它写入方式控制字,再送到控制字寄存器,最后由控制字寄存器区控制计数器

的工作

B、CPU写入计数值

C、CPU读出计数值

(2)、读写逻辑:接收来自系统总线的输入信号。然后产生控制8253工作的控制信号。

(3)、控制字计数器:接收CPU的方式控制字,去控制计数器工作。只能写入,不能读出

(4)、通道:3个通道结构完全一样。包括一个预置寄存器,一个减法寄存器,一个输出锁存器。计数开始前,初始值写入预置寄存器,然后在写入减法寄存器,并开始递减,但是预置内数值不变,输出寄存器随减法改变。

3、外部引脚

与CPU相连:

D0~D7连数据总线;RD,WR,A0,A1,CS

与外设相连:

CLK:接外设提供的时钟脉冲

GATE:门控电路外部输入,为低禁止计数器工作,反之允许

OUT:定时计数器输出的信号

4、8253的工作方式:共6种,由方式控制字决定

A、方式0:计数结束中断方式

设置方式0后,OUT变低,写入计数值后,CLK下降沿开始计数,OUT维持低。计数为0时,OUT变高。直到当再写入计数值或设置方式0后,OUT才会变低

该方式输出OUT在计数是一直为低,只有到0才变高。用来计数,到计数结束时产生一个中断信号。写入数值N后,经过N+1个CLK脉冲输出变高

计数过程中,如GATE变低则暂停计数,GATE变高后继续计数。

另:该方式写入计数值便开始计数,属于软件启动,方式0,2,3,4均为此类。

B、方式1:可编程的单稳脉冲

设置方式1后,OUT变高。写入计数值后,不开始计数,OUT维持高。直到GATE为高后的下一个CLK下降沿开始计数,同时OUT变低,直到计数为0,OUT变高。

GATE启动后,OUT持续为低,直到计数为0。即会产生一个宽度等于计数值乘时钟周期的负脉冲,即N个CLK周期

计数过程中,GATE为低计数继续,到0OUT变高。GATE再变高则计数重新开始

另:GATE启动才开始计数,此为硬件启动,1,5为此类

C、方式2:分频脉冲发生器

设置方式2后,OUT变高。写入计数值后,开始计数,OUT维持高。到计数为1时,OUT变低,一个CLK周期后,恢复为高,且计数重新开始

计数为N,则每N个CLK周期,OUT一个CLK周期的负脉冲。只要GATE为高,则计数重复下去,OUT输出连续方波

计数过程中,GATE变低,禁止计数,恢复高后,重新计数

D、方式3:分频方波发生器

设置方式3后,OUT为高。写入计数值后,开始计数,OUT维持高,计数完成一半时,OUT变低。计数为0时,OUT变高,同时计数重新开始。(计数值为奇数则为(N+1) /2和(N-1)/2) 计数为N,则输出N/2或(N+1)/2个高电平, N/2或(N-1)/2个低电平

E、方式4:软件触发选通脉冲发生器

设置方式4后,OUT为高。写入计数值后,开始计数,OUT

F、方式5:硬件触发选通脉冲发生器

设置方式4后,OUT为高。写入计数值后,不开始计数,OUT维持高,GATE为高后计数开

始,计数到0则OUT为低,维持一个CLK周期后就又变高,并维持,直到再次GATE变高 在GATE控制下经过N+1个CLK,输出宽度为1个CLK周期的脉冲

维持高,计数到0则OUT为低,维持一个CLK周期后就又变高,并维持,直到再次写入计数值

写入N后经过N+1个CLK,输出宽度为1个CLK周期的脉冲

总结:6种方式中,只有0是写入方式控制字后OUT为低,其余的写入后OUT均为高 方式2、4、5输出的波形都是一个CLK的负脉冲,但2为连续的,4由软件触发,5由GATE触发方式0,2,3,4属于软件启动,即写入计数值便开始计数

方式1、5为硬件启动,即GATE启动才开始计数

5、8253的编程

(1)、8253的初始化:8253的每个计数器的工作方式和计数值都必须由CPU通过指令的设定

A、写入方式控制字:CPU用数据总线通过数据缓冲器写入8253的控制寄存器。具体见书346页

B、写入计数值:CPU用数据总线通过数据缓冲器写入8253的某个计数器

(2)、8253的读命令:书346页

DAMC8237A

数据传送方式除了查询方式和中断方式以外还有DMA控制方式。利用DMA方式传送数据时,数据的传送过程完全由硬件电路控制,这种电路称为DMA控制器(DMAC),它可以在DMA方式下起到CPU的作用。DMAC的功能就是在存储器和I/O设备之间进行高速、成批的数据传输。在8086系统中,DMAC选用的是可编程器件Intel 8237A,它含有4个独立的DMA通道,可以用来实现内存到接口、接口到内存及内存到内存之间的高速数据传送,最高数据传送速率可达1.6MB/s,在此过程中CPU不再干预,这样可大大减少数据传送的中间过程,提高了数据的传送速度

DMA操作的基本过程。

(1)I/O设备向DMAC发出请求信号DRQ

(2)DMAC向CPU发出总线请求信号HRQ=1;

(3)CPU向DMAC发出总线响应信号HLDA=1,此时,DMAC获取了总线控制权;

(4)DMAC向I/O设备发出DMA响应信号DACK,表示DMAC已控制了总线,允许I/O设备与存储器交换数据;

(5)DMAC按地址寄存器的内容发出16位地址信号作为存储地址的选择,同时地址寄存器的内容加1(或减1,由编程定);

(6)DMAC发出IORC信号到I/O设备,将I/O设备数据读入总线,同时发出MEMW信号,将数据总线的数据写入由地址总线选中的内存单元;

(7)字节计数器减1;

(8)重复5.、6.、7.步骤,直至字节计数器减到0为止,数据块的DMA方式传送工作宣告完成。这时,DMAC的HRQ降为低电平(HRO=0),总线控制权交给CPU。

DMA通道。

8237A有4个独立的通道(CH0~CH3),每个通道包括两组16位寄存器:地址寄存器和字节计数器,还包括一个8位的方式寄存器和一个1位的DMA请求触发器及一个1位的屏蔽

触发器。4个通道共用1个控制寄存器和1个状态寄存器。在DMA通道工作之前,必须对相应的寄存器进行初始化设

(2)读/写逻辑。

CPU对8237A编程或读8237A寄存器时,由CPU控制总线,8237A在系统总线中作为从模块。读/写逻辑电路接收CPU的读(IOR)、写(IOW)以及由地址译码电路产生的CS信号,对地址总线的低4位(A0~A8)译码。在IOW有效时,把数据总线的内容写入所寻址的寄存器,在IOR有效时,把被选择寄存器的内容送到数据总线上。

DMA周期期间,由8237A控制总线,用作主模块。如果是DMA写周期,读/写逻辑产生IOR,控制逻辑产生存储器写(MEMW),数据从外设接口传送到存储器单元;如果是DMA读周期,读/写逻辑产生IOW,控制逻辑产生存储器读(MEMR),数据从存储器单元传送到外设接口

(3)控制逻辑。

初始化时,CPU通过对方式寄存器的设置确定控制逻辑的操作方式。在DMA周期中,控制逻辑通过发出控制信号和16位要存取的存储单元地址来控制DMA过程。

(4)锁存缓冲器(外接)。

使用8237A工作时需要外接一个8位的地址锁存缓冲器。DMA传送之前,8237A从DB0~DB7把存储器地址的A8~A15送入这个锁存器。在DMA周期中,8237A从A0~A7引脚发送存储器地址的低8位,同时将锁存器中的地址通过三态门送至系统地址总线的A8~A15。

第10章

A/D转换器

(1)、模拟信号转换为二进制数字量通常分为四步:采样—保持—量化—编码

(2)、AD转换器的基本原理

双积分型AD转换器

逐次逼近型AD转换器:主要由逐次逼近寄存器SAR,DA转换器和比较器等组成。

转换时,先将SAR清零,然后把SAR的最高位置1,转换为模拟电压后去和输入电压Vx比较,若大于则为0,若小于则为1。然后再转第二位。依次下去。

ADC芯片的主要参数

分辨率:指AD转换器可转换成数字量的最小模拟电压值。一个N位的ADC,分辨率等于最大容许模拟输入值(满量程)除2n,如满量程=5v,对于8位ADC,其分辨率=5/28=0.0195V,模拟输入低于此值将不会转换。

典型芯片:ADC0809

内部结构:模拟输入部分、变换器、三态输出缓冲器、基准电压输入端

转换公式为:N=(Vin)/(Vref)*28

其中Vin为输入电压, Vref为基准电压

芯片AD574

12位逐次逼近ADC,可以进行12位转换,也可以进行8位转换。

适合于对精度和速度要求较高的数据采集系统和实时控制系统

相关推荐