微机原理课后习题参考答案

更新时间:2023-12-31 20:46:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第1部分 微型计算机基础知识

1.1 微处理器、微型计算机和微型计算机系统三者之间有什么不同?

【解】微处理器:指计算机内部对数据进行处理并对处理过程进行控制的部件,伴随着大规模集成电路技术的迅速发展,芯片集成密度越来越高,CPU可以集成在一个半导体芯片上,这种具有中央处理器功能的大规模集成电路器件,被统称为“微处理器”。

微型计算机:简称“微型机”、“微机”,也称“微电脑”。由大规模集成电路组成的、体积较小的电子计算机。由微处理机(核心)、存储片、输入和输出片、系统总线等组成。特点是体积小、灵活性大、价格便宜、使用方便。

微型计算机系统:简称“微机系统”。由微型计算机、显示器、输入输出设备、电源及 控制面板等组成的计算机系统。配有操作系统、高级语言和多种工具性软件等。

1.2 CPU在内部结构上由哪几部分组成?CPU应该具备哪些主要功能?

【解】CPU在内部结构上由运算器、控制器、寄存器阵列和内部总线等各部分构成,其主要 功能是完成各种算数及逻辑运算,并实现对整个微型计算机控制,为此,其内部又必须具备 传递和暂存数据的功能。

1.3 微型计算机采用总线结构有什么优点? 【解】

① 简化了系统结构,便于系统设计制造;

② 大大减少了连线数目,便于布线,减小体积,提高系统的可靠性; ③ 便于接口设计,所有与总线连接的设备均采用类似的接口; ④ 便于系统的扩充、更新与灵活配置,易于实现系统的模块化; ⑤ 便于设备的软件设计,所有接口的软件就是对不同的口地址进行操作;

⑥ 便于故障诊断和维修,同时也降低了成本。总线的逻辑电路有些是三态的,即输出电 平有三种状态:逻辑“0”,逻辑“1”和“高阻”态。

1.4计算机总线有哪些,分别是什么?

【解】总线按其信号线上传输的信息性质可分为三组: ① 数据总线,一般情况下是双向总线;

② 地址总线,单向总线,是微处理器或其他主设备发出的地址信号线; ③ 控制总线,微处理器与存储器或接口等之间

1.5 数据总线和地址总线在结构上有什么不同之处?如果一个系统的数据和地址合用一套总

线或者合用部分总线,那么要靠什么来区分地址和数据?

【解】数据总线(DB)为双向结构,数据在CPU与存储器或I/O接口之间的传送是双向的, (数据既可以读也可以写),其宽度通常与微处理器的字长相同。而地址总线(AB)是CPU 向存储器或I/O接口传送地址的信号线,只需单向传输,它的位数决定了CPU可以直接寻址 的范围。8086CPU为了减少芯片的引脚数量,采用数据与地址线复用,既作数据总线也作为 地址总线。它们主要靠信号的时序来区分。通常在读写数据时,总是先输出地址(指定要读 或写数据的单元),然后再读或写数据。

第2部分 80X86微处理器

2.1 IA-32结构微处理器直至Pentium 4,有哪几种?

【解】80386、80486、Pentium 、Pentium Pro、Pentium II、Pentium III、Pentium 4。

2.2 IA-32结构微处理器有哪几种操作模式?

【解】IA-32结构支持3种操作模式:保护模式、实地址模式和系统管理模式。操作模式确 定哪些指令和结构我是可以访问的。

2.3 IA-32结构微处理器的地址空间如何形成?

【解】由段寄存器确定的段基地址与由各种寻址方式确定的有效地址相加形成了线性地址。 若未启用分页机制,线性地址即为物理地址;若启用分页机制,则它把线性地址转换为物理 地址。

2.4 基本程序执行寄存器是由哪些寄存器组成? 【解】基本程序执行寄存器由以下寄存器组成:

(1)通用寄存器。这8个寄存器能用于存放操作数和指针。 (2)段寄存器。这些寄存器最多能保持6个段先择子。

(3)EFLAGS(程序状态和控制)寄存器。EFLAGS寄存器报告正在执行的程序的状态并允许有 限地(应用程序级)控制处理器。

(4)EIP(指令指针)寄存器。EIP寄存器包含下一条要执行的釜底抽薪32位指针。

2.5 实地址方式的存储器是如何组织的?地址如何形成?

【解】IA-32结构微处理器中的实地址方式是为了与8086(8088)CPU兼容而设置的。所以 IA-32结构微处理器的实地址方式是从存储器组织来看与8086(8088)CPU的存储器组织是 一样的。8086微处理器有20条地址引线,它的直接寻址能力为220=1MB。所以,在一个由8086 组成的系统中,可以有多达1MB的存储器。这1MB逻辑上可以组织成一个线性矩阵。地址范 围为00000H~FFFFFH。但是,在8086内部的AIU能进行16位运算,有关地址的寄存器如SP、 IP,以及BP、SI、DI等也都是16位的,因而8086对地址的运算也只能是16位。这就是说, 对于8986来说,各种寻址方式,寻找操作数的范围最多只能是64KB。所以,整个1MB存储 器以64KB为范围若干段。在寻址一个具体物理单元时,必须要由一个基地址再加上各种寻址 方式确定的16位偏移量来形成实际的20位物理地址。段基地址就是由8088向处理器段寄存 器中的16位数自动左移4位,然后再与16位偏移量相加,形成20位物理地址。

2.6 通用寄存器起什么作用? 【解】通用寄存器主要用于: (1)逻辑和算术操作的操作数。 (2)用于地址计算的操作数。 (3)内存指针。

2.7 8086的基本程序执行寄存器是由哪些寄存器组成?

【解】基本程序执行寄存器是由八个通用寄存器、四个段寄存器、标志寄存器FLAG和IP寄存器组成。

2.8 8086的存储器是如何组织的?地址如何形成?

【解】8086的存储器采用分段机制。实际存储单元地址由段基址左移四位加上偏移地址构成20位的物理地址所组成。

2.9 指令地址如何形成?

【解】由段寄存器CS确定的段基地址与由指令指针确定的偏移理相加形成指令地址。

2.10 8086微处理器的总线接口部件有哪些功能?请一一说明。

【解】总线接口单元(BIU)负责与存储器接口;执行单元(EU)执行各种操作。BIU主要由 段寄存器、指令指针、加法器(形成20位地址)和预取的指令流队列等组成。

2.11 8086微处理器的总线接口有哪几部分组成?

【解】8086微处理器中的总线接口单元(BIU)负责CPU与存储器之间的信息传送。由 (1)4个段地址寄存器。即CS DS ES SS。 (2)16位的指令指针寄存器IP。 (3)20位的地址加法器。 (4) 6字节的指令队列。

具体地说,BIU既负责从内存的指定部分取出指令,送至指令队列中的排队(8086的指 令队列有6个字节,而8088的指令队列只有4个字节);也负责传送执行指令时所需的操作数。执行单元(EU)负责执行指令规定的操作。

2.12 段寄存器CS=1200H,指令指针寄存器IP=FF00H,此时,指令的物理地址为多少? 【解】指令的物理地址=12000H+FF00H=21F00H

2.13 8086微处理器的执行部件有什么功能?由哪几部分组成?

【解】8086微处理器的执行部件负责指令的执行。它主要由算术逻辑单元、标志寄存器和通 用寄存器等部分组成。

2.14 状态标志和控制标志有何不同?程序中是怎样利用这两类标志的?8086微处理器的状 态标志和控制标志分别有哪些?

【解】状态标志反映算术和逻辑运算的结果,主要用于各种条件。控制标志实现一些控制作 用。EFLAGS寄存器有下面6个状态标志。 (1)进位标志C(Carry Flag)

当结果的最高位(字节操作时的D7或字操作时的D15、双字操作的D31)产生一个进位或借位,则C=1,否则为0。这个标志主要用于我字节数的加、减法运算。移位和循环指令也能够把存储器或寄存器中的最高位(左移时)或最低位(右移时)放入标志C中。 (2)辅助进位标志A(Auxitiary Carry Flag)

在字节操作时,则由低半字节(一个字节的低4位)向高半字节有进位或借位,则A=1,否则为0 。这个标志用于十进制算术运算指令中。 (3)溢出标志O(Overflow Flag)

在算术运算中,带符号数的运算结果超出了8位、16位或32位带符号数所能表达的范围,即在字节运算时大于+127或小于-128,在字运算时大于+32767或小于-32768,在双字运算时大于+2-1或小于-2,则此标志置位,否则复位。一个任先的溢出中数据指令,在溢出情况下能产生中断。 (4)符号标志S(Sign Flag)

符号标志值与运算结果的最高位相同。即结果的最高位(字操作时为D15)为1,则S=1;否则,S=0。

由于在IA-32结构微处理器中,符号数是用补码表示的,所以S表示了结果的符号,0=正,1=负。

(5)奇偶标志P(Parity Flag)

若操作结果中“1”的个数为偶数,则P=1,否则P=0。这个标志可用于检查在数据传送过程中是否发生错误。 (6)零标志Z(Zero Flag)

若运算的结果为0,则Z=1,否则Z=0 3个控制标志,

31

31

TF—陷阱标志位(单步标志位、跟踪标志)。当该位置1时,将使8086/8088进入单步工作方式,通常用于程序的调试。

IF—中断允许标志位,若该位置1,则处理器可以响应可屏蔽中断,否则就不能响应可

屏蔽中断。

DF—方向标志位,若该位置1,则串操作指令的地址修改为自动减量方向,反之,为自动增量方向。

2.15 如果一个堆栈从地址1250::0000H开始,它的最后一个字的偏移地址为0100H,SP的内容为0052H,问: (1)栈顶地址是什么? (2)栈底地址是什么? (3)在SS中的段地址是什么?

(4)存入数据2345H后,SP的内容是什么? 【解】①. 栈顶地址1250:0052,SP指向栈顶地址。

②. 栈底地址1250:0100,栈底地址为高地址。

③. SS中的段地址为1250,SS中的段地址为堆栈段地址。 ④.存入2345H后,SP内容为0050H。一次入栈操作,SP=SP-2。

2.16 8086微处理器是怎样解决地址线和数据线的复用问题的?ALE信号何时有效? 【解】采用分时复用的方法。ALE在T1时刻有效,其他时间段均无效。

第3部分 80X86微处理器的指令系统

3.1 分别指出下列指令中的源操作数和目的操作数的寻址方式。 (1)MOV SI,300 (2)MOV CX,DATA[DI] (3)ADD AX,[BX][SI] (4)AND AX,CX (5)MOV [BP],AX (6)PUSHF

【解】(1)源操作数为立即寻址,目的操作数为寄存器寻址。

(2)源操作数为变址寄存器加位移量寻址,目的操作数为寄存器寻址。 (3)源操作数为基址加变址寻址,目的操作数为寄存器寻址。 (4)源操作数和目的操作数都 为寄存器寻址。

(5)源操作数为寄存器址,目的操作数为寄存器间接寻址。 (6)为堆栈操作。

3.2 8086汇编语言指令的寻址方式有哪几类?哪种寻址方式的执行速度最快?

【解】寻址方式分为:立即寻址方式、寄存器操作数寻址方式和存储器操作数寻址方式。其中,寄存器操作数寻址方式的执行速度最快。

3.3试述指令MOV AX,2000H和MOV AX,DS:[2000H]的区别。

【解】前一条指令是立即数寻址,即把立即数2000H传送至寄存器AX。后一条指令是直接寻址,是把数据(DS)段中的地址为2000H单元的内容传送至寄存器AX。

3.4 堆栈操作指令时要注意什么问题?传送指令和交换指令在涉及内存操作数时应该分别要 注意什么问题?

【解】使用堆栈指令可以把内存单元作为一个操作数(从内存到内存)。但堆栈固定在堆栈 段,且只能由SP指向。且堆栈操作要修改堆栈指针。MOV指令不能实现内存单元间的数据 传送。XCHG指令是交换,有一个操作数必须是寄存器。

3.5 断下列指令书写是否正确。 (1) MOY AL,BX (2) MOY AL,CL (3) INC [BX]

(4) MOV 5,AL (5) MOV [BX],[SI] (6) MOV BL,0F5H (7) MOV DX,2000H (8) POP CS (9) PUSH CS 【解】

(1)不正确,AL与BL数据宽度不同。 (2)正确。

(3)不正确,因为不明确是增量字节还是字。 (4)不正确,立即数不能作为目的操作数。 (5)不正确,因为不明确要传送的是字节还是字。 (6)正确。 (7)正确。

(8)不正确,CS不能作为POP指令的操作数。 (9)不正确,CS不能作为PUSH指令的操作数。

3.6写出以下指令中内存操作数的所在地址。 (1)MOV AL,[BX+10] (2)MOV [BP+10],AX (3)INC BYTE PTR[SI+5] (4)MOV DL,ES:[BX+SI] (5)MOV BX,[BP+DI+2] 【解】(1)数据段BX+10单元

(2)堆栈段BP+10单元 (3)数据段SI+5字节单元 (4)附加段(ES段)BX+SI单元 (5)堆栈段BP+DI+2单元

3.7 两种方法写出从80H端口读入信息的指令。再用两种方法写出从40H口输出100H的指 令。 【解】

(1)IN AL,80H (2)MOV DX,80H

IN AL,DX (3)MOV AL,100H OUT 40H,AL (4)MOV AL,100H

MOV DX,40H OUT DX,AL

3.8假如:AL=20H,BL=10H,当执行CMP AL,BL后,问:

(1)AL、BL中的内容是两个无符号数,比较结果如何?影响哪几个标志位? (2)AL、BL中的内容是两个有符号数,结果又如何,影响哪几个标志位? 【解】

(1)AL=20H,BL=10H,O=0,S=0,Z=0,A=0,P=0,C=0。 (2)因为两个都是符号正数,其结果与(1)相同。

3.9设堆栈指针SP的初始值为1000H,AX=2000H,BX=3000H,试问: (1)执行指令PUSH AX后SP=?

(2)再执行PUSH BX及POP AX后SP=?、AX=?、BX=? 【解】(1)SP=OFFEH.。

(2)SP=OFFEH;AX=3000H;BX=3000H。

3.10要想完成把[3000H]送[2000H]中,用指令:MOV [2000H],[3000H] 是否正确?如果不正确,应用什么方法? 【解】不正确。 正确的方法为: MOV AL,[3000H] MOV [2000H],AL

3.11若要使AL×10,有哪几种方法,试编写出各自的程序段。 【解】

(1)使用乘法指令: MOV BL,10 ;乘数

MUL BL ;AL*BL,结果存入AX (2)使用移位指令: SHL AL,1 ;AL*2

MOV BL,AL ;保留一份 SHL AL,2 ;AL*2*2*2 ADD AL,BL ;AL*(8+2) (3)使用加法指令: ADD AL,AL MOV BL,AL ADD AL,AL ADD AL,AL ADD AL,BL

3.12 用两种方法写出从80H端口读入信息的指令。再用两种方法写出从40H口输出100H的指令。

【解】(1)IN AL,80H (2)MOV DX,80H IN AL,DX (3)MOV AL,100H OUT 40H,AL (4)MOV AL,100H MOV DX,40H OUT DX,AL

3.13 8086汇编语言指令的寻址方式有哪几类?用哪一种寻址方式的指令执行速度最快? 【解】寻址方式分为:立即数寻址方式、寄存器操作数寻址方式和存储器操作数寻址方式。其中,寄存器操作数寻址方式的指令执行速度最快。

3.14普通移位指令和循环移位指令(带CF的和不带CF的两类)在执行操作时,有什么差 别?在编制乘、除法程序时,为什么常用移位指令来代替乘、除法指令?试编写一个程序段, 实现将BX中的数乘以10,结果仍放在BX中的操作。

【解】这两种指令的区别在于是否把标志位(CF)的值放入循环中。作移一位相当于乘2,右移一位相当于除2。故左移或右移可实现乘或除2的幂。而移位指令比乘法和除法指令要快得多。要实现BX中的数乘10,可以用乘(2+8)实现,乘2即左移1位,乘8即左移3位,把左移1位和左移3位的数相加就行。 SHL BX,1 MOV AX,BX

SHL BX,2 ADD BX,AX

3.15用串操作指令设计实现如下功能的程序段:首先将100H个数从2170H处搬到1000H处; 然后,从中检索出相等于AL中字符的单元,并将此单元的值换成空格符。 【解】

MOV SI,2170H

MOV DI,1000H MOV CX,100H

REP MOVS DI,SI NEXT: SCASB

JZ NI LOOP NEXT NI: DEC DI MOV DI,20H JMP NEXT

3.16在使用条件转移指令时,要特别注意它们均匀为相对转移指令,请解释“相对转移”的 含义。如果要向较远的地方进行条件转移,那么,程序中应该怎样设置?

【解】相对转移即为相对于指令指针的转移,通常偏移量是8位数,这是短(short)转移;它可以规定16位偏移量,这就是段内(near)转移。

3.17用寄存器间接寻址方式时,BX、BP、SI、DI分别针对什么情况来使用?这四个寄存器组合间接寻址时,地址时怎样计算的?举例进行说明。

【解】在寄存器间接寻址方式下,BX和BP作为间接寄存器使用,而SI、DI作为变址寄存器使用。除BP间接默认的段为堆栈段,其他的都默认为数据段。它们都可以单独使用,或加上偏移量后组合使用。如:

[BX+n] [BP+n] [SI+n] [DI+n] [BX+SI+n] [BX+DI+n]

[BP+SI+n] [BP+DI+n]

3.18 下面这些指令中哪些是正确的?哪些是错误的?如果是错误的,请说明原因。 (1)XCHG CS,AX (2)MOV [BX],[1000] (3)XCHG BX,IP (4)PUSH CS (5)POP CS (6)IN BX,DX (7)MOV BYTE[BX],1000 (8)MOV CS,[1000] 【解】(1)错误,CS不能交换。

(2)错误,MOV指令不能在内存间传送。 (3)错误,IP不能交换。

(4)错误,CS可以作为PUSH指令的操作数。 (5)错误,CS可以作为POP指令的操作数。 (6)错误,IN指令的目的操作数是累加器。 (7)错误,目的操作数是字节单元。

(8)错误,CS不能作为MOV指令的目的操作数。

3.19 字节扩展指令和字扩展指令用在什么场合?

【解】主要用于字节相除和字相除之前,把被除数扩展为两倍宽度的操作数。

3.20使用堆栈操作指令时要注意什么问题?传送指令和交换指令在涉及内存操作数时分别要 注意什么问题?

【解】使用堆栈指令可以把内存单元作为一个操作数(从内存到内存)。但堆栈固定在堆栈段 且只能由SP指向。且堆栈操作要修改堆栈指针。MOV指令不能实现内存单元间的数据传送。 XCHG指令是交换,有一个操作数必须是寄存器。

3.21在执行中断指令时,堆栈的内容有什么变化?中断处理子程序的入口地址是怎样得的? 【解】在执行中断指令后,处理器先推入标志寄存器,在推入断点后的指令指针和CS值。中断处理器的入口地址是由中断向量和中断向量表(描述符)表得到的。

3.22在执行中断返回指令IRET和普通子程序返回指令RET时,具体操作内容有什么不同? 【解】IFET除了弹出中断要返回的指令的地址(CS和IP)外,还要恢复中断前的标志寄存器。

3.23 什么叫BCD码?什么叫组合的BCD码?什么叫非组合的BCD码?8086汇编语言在对BCD码的加、减、乘、除运算时,采用什么方法?

【解】BCD码为十进制编码的二进制数。组合的BCD数是把两位BCD加在一个字节中,高位的在高4位。非组合的BCD码是把一位BCD数放在一个字节的低4位高4位为0。8086在BCD加、减和乘法运算以后用BCD调整指令把结果调整为正确的BCD数。在BCD除法之前先用BCD调整指令再做除法。

3.24 用普通运算指令执行BCD码运算时,为什么要进行十进制调整?具体讲,在进行BCD码的加、减、乘、除运算时,程序段的什么位置必须加上十进制调整指令?

【解】因为8086指令把操作数作为二进制数进行二进制运算,要得到正确的BCD结果,需要进行调整。在加、减、乘法指令之后加上BCD调整指令,而在除法指令之前先用BCD调整指令再用除法指令。

第4四部分 汇编语言程序设计

4.1 在下列程序运行后,给相应的寄存器及存储单元填入运行的结果:

MOV AL,10H MOV CX,1000H MOV BX,2000H MOV [CX],AL XCHG CX,BX MOV DL,01H XCHG CX,BX MOV [BX],DL HLT

【解】寄存器及存储单元的内容如下:

AL=10H BL=00H BH=20H CL=00H CH=10H DL=01H DH=10H (1000H)=10H (2000H)=01H

4.2 自1000单元开始有一个100个数的数据块,若要把它传送到自2000H开始的存储区中 去,可以采用以下3种方法实现,试分别编制程序以实现数据块的传送。 (1)不用数据块传送指令; (2)用单个传送的数据块传送指令; (3)用数据块成组传送指令。 【解】

(1) LEA SI,1000H LEA DI,2000H MOV CX,100 L1 : MOV AX,[SI] MOV [DI],AX

LOOP L1 HLT

(2) LEA SI,I000H LEA DI,2000H MOV CX,100 CLD L1 : MOVSB

LOOP L1 HLT

(3) LEA SI,1000H LEA DI,2000H

MOV CX,100 CLD

REP MOVSB

HLT

4.3 编写一个程序,把自1000H单元开始的100个数传送至1050H开始的储存中。 【解】 LEA SI,1000H

LEA DI,1050H ADD SI,63H ADD DI,63H MOV CX,100 STD REP MOVSB HLT

4.4在自0500H单元开始,存有100个数。要求把他传送到1000H开始的存储区中,但在传 送过程中要检查数的值,遇到第一个零就停止传送。 【解】 LEA SI,0500H

LEA DI,1000H MOV CX,100

N1 : MOV AL,[SI] TEST AL,0 JZ,N2

MOV [DI],AL INC SI INC DI LOOP N1 N2 : HLT

4.5 把在题4.7中指定的数据块中的正数,传送到自1000H开始的存储区;而把其中的负数, 传送到自1100H开始的存储区。且分别统计正数和负数的个数,分别存入1200H和1201H单 元中。

【解】 LEA SI,0500H

LEA DI,1000H LEA BX,1100H MOV CX,100

MOV DX,0

N1 : MOV AL,[SI] TEST AL,0 JS N2 MOV [DI],AL INC DL INC SI INC DI JMP N3 N2 : MOV[BX],AL

INC DH INC SI INC BX

N3 : LOOP N1

LEA BX ,1200H MOV [BX],DL MOV [BX+1],DH HLT

4.6 自0500H单元开始,有10个无符号数,编写一个程序求这10个数的和(用8位书运算 指令),把和放到050A及050B单元中(和用两个字节表示),且高位在050B单元。

【解】 LEA BX,0500H

MOV AX,0 MOV CL,10

N1: MOV DL,[BX]

ADD AL,DL ADC AH,0 INC BX DEC CL JNZ N1 MOV 050AH,AX

4.7 在0100H单元和010AH单元开始,存放两个各为10个字节的BCD数(地址最低处放的 是最低字节),求出他们的和,并且把和放在0114H开始的存储单元中。 【解】 LEA SI,0100H

LEA DI,0114H CLC MOV CL,10

N1: MOV AL,[SI]

MOV BL,10[SI] ADC AL,BL DAA

MOV [DI],AL INC SI INC DI DEC CL JNZ N1

4.8 若在0200HE 0201H单元中两个正数,编写一个程序比较它们的大小。并且把大的数 放在0201H单元中。 【解】MOV AL ,[0200H]

CMP AL,[0201H] JNS LAG JMP NEXT

LAG:XCHG AL,[0201H] NEXT:

4.9 若自0500H单元开始有1000个带数符号数,把它们的最小植找出来,并且放在1000H 单元中。

【解】 LEA BX,[0500H]

MOV AX,[BX] INC BX INC BX MOV CX,999 AGAIN:CMP AB.[BX] JL NEXT MOV AX.[BX] NEXT: INC BX INC BX LOOP AGAIN MOV [1000H],AX HLT

4.10 在自BUFFER单元开始,放有一个数据块,BUFFER和BUFFER+1单元中放的是数据块的 长度,自BUFFER+2开始存放的是一 ASCⅡ码表示的十进制数码,把它们转换成BCD码,并且 把两个相邻单元的数码并成一个单元(地址高的放在高4位),放到自BUFFER+2开始的存储 区中。

【解】 MOV CX,[BUFFER]

LEA SI,BUFFER+2 LEA DI,BUFFER+2 TRAN: MOV AL,[SI] SUB AL,30H MOV BL,AL INC SI MOV AL,[SI] SUB AL,30H SHL AL,4 ADD AL,BL MOV [DI],AL INC SI

INC DI DEC CX DEC CX JNZ TRAN

4.11 在自BUFFER单元开始,放有一个数据块,BUFFER和BUFFER+1单元中放的是数据块的 长度,自BUFFER+2开始存放数据,每一个单元放的是两位BCD码把它们分别转换成 ASCⅡ 码,放到自BLOCK开始的存储区中(低4位BCD码转换成的 ASCⅡ码放在地址低的单元),而 BLOCK和BLOCK+1放转换成的 ASCⅡ码的长度。 【解】 MOV CX,[BUFFER]

MOV DX,CX ADD DX,DX LEA SI,BUFFER+2 LEA DI,BLOCK+2 MOV [BLOCK],DX TRAN:MOV AL,[SI] MOV BL,AL AND AL,0FH ADD AL,30H MOV [DI],AL INC DI MOV AL,BL SHR AL,4 ADD AL,30H MOV [DI],AL INC SI INC DI DEC CX JNZ TRAN

4.12 若自STRING单元开始存放一个字符串(一字符$结尾),编写一个程序统计这个字符 串的长度(不包括$字符);并且把字符的长度,放在STRING单元,把整个字符串往下移两 个存储单元。

【解】 LEA DI,STRING

XOR DX,DX MOV AL,'$' CLD

AGAIN: SCASB JE N1 INC DX JMP AGAIN

N1: LEA SI,STRING+2

XCHG SI,DI

MOV CX,DX、REP MOVSB MOV [STRING],DX

4.13 TRING单元开始存放一个字符串(以字符空格引导,以$结尾),编写一个程序统计这 个字符串的长度(忽略前导空格和结尾的$字符) 【解】 LEA DI,STRING

XOR DX,DX MOV AL,20H CLD

AGAIN:SCASB JNE N1 JMP AGAIN

N1: MOV AL,'$'

A1:SCASB JE N2 INC DX JMP A1

N2: MOV [LENGTH],DX

4.14 自STRI1和STRI2开始各有一个由10个字符组成的字符串,检查这两个字符串是否相 等,在STFLAG单元中建立一个标志(相等为00和,不等为FFH)。 【解】 LEA SI,STR1

LEA DI,STR2 MOV

CX,10 CLD REPZ CMPSB JNE UNMAT MOV AL,0 JMP OUTPT

UNMAT: MOV AL,0FFH OUTPT: MOV [STFLAG],AL

4.15 在自BLOCK开始的存储区中有1000个带符号数。试用气泡排序法编写一个程序,使它 们排列有序。

【解】 NAME BOBBLE_SORT

DATA1 SEGMENT

BLOCK DW X1,X2,...,X999 DATA1 ENDS

STACK SEGNEBT PARA STACK 'STACK' DB 100DUP(?) STACK ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA1,SS:STACK START PROC FAR

BEGIN:PUSH DS

MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX CONT1:MOV BL,0 MOV CX,1000 ADD CX,CX MOV SI,CX DEC SI DEC SI

AGAIN: MOV AX,BLOCK[SI] CMP AX,BLOCK[SI-2]

JGE NEXT

XCHG AX,BLOCK[SI-2] MOV [SI],AX MOV BL,-1 NEXT:DEC SI DEC SI LOOP AGAIN CMP BL,0 JNE CONT1 RET START ENDP CODE ENDS END BEGIN

4.16若在0500H单元中有一个数

(1)利用加法指令把它乘2,且送回原存储单元(假定X×2后仍为一个字节); (2)X×4;

(3)X×10(假定X×l0≤255). 【解】

(1) LEA BX, 050OH MOV AL, [BX] ADD AL, AL MOV[BX],AL

(2) LEA BX, 0500H MOV AL, [BX] ADD AL, AL ADD AL, AL MOV[BX],AL

(3)LEABX, 050OH MOVAL, [BX] ADDAL, AL MOVDL, AL

ADDAL, AL ADD AL,AL ADDAL, DL MOV[BX],AL

4.17 利用查表法计算平方值。已知0 ~ 9的平方值连续存在以SQTAB开始的存储区域中,求SUR单元内容X的平方值,并放在DIS单元中。假定0≤X≤ 9且为整数。 【解】分析:建立平方表,通过查表完成。 STACK SEGMENT

DB 100 DUP(?) SEGMENT SUR DB ? DIS DB ?

SQTAB DB 0,1,4,9,16,25,36,49,64,81 ; 0~9的平方表 SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA MOV AX,0 PUSH

AX ;保证返回DOS,

MOV AX,DATA

MOV DS,AX ;为DS送初值

LEA BX,SQTAB ;以下程序部分完成查表求平方值 MOV AH,0 ;亦可用查表指令完成(如下程序段) MOV AL,SUR ;AL=X LEA BX, SQTAB ADD BX,AX ; MOV AL, SUR MOV AL,[BX] ; XLAT MOV DIS,AL ; MOV DIS, AL ENDS

END BEGIN

STACK ENDS DATA

DATA ENDS CODE

4.18已知 Z=(X+Y)-(W+Z),其中X,Y,Z,W均为用压缩BCD码表示的数,写出程序。 【解】分析:这也是一种典型的直线程序,在这里要注意是BCD数相加,要进行十进制调整。

BEGIN:PUSH DS

CODE

MOV AL,Z MOV BL,W ADD AL,BL DAA

MOV BL,AL ; BL=(W+Z) MOV AL,X MOV DL,Y

ADD AL,DL ; AL=(X+Y) DAA ;十进制调整 SUB

AL,BL ; AL=(X+Y)-(Z+W)

DAS ;十进制调整 MOV Z,AL ;结果送Z

4.19试编写程序段,实现符号函数。

【解】分析:变量X的符号函数可表示为: 1 X>0 Y= 0 X=0 -1 X<0

程序可通过对符号标志的判别来确定执行哪一分支。 START:

MOV AX,BUFFER ;(BUFFER)=X OR JE JNS JMP JMP

AX,AX

ZERO ;X=0,则转ZERO PLUS ;X为正数,则转PLUS CONT1 CONT1

MOV BX,0FFFFH ;X为负数,则-1送BX MOV BX,0 MOV BX,1

ZERO: PLUS:

CONT1: ??

4.20一监控程序,有10个控制命令键。这些命令的实现由监控程序中10个子程序完成,子程序入口地址为ADR0~ADR9。据此建立跳转表,表内存放10条跳转指令,JMP ADR0~JMP ADR9。设10个命令键编号为0~9。

【解】分析:表地址 = 表基地址 + 偏移量,按键号X为条件,每条跳转指令长度为3个字

节,则按键号X对应的命令子程序的跳转指令在跳转表中的偏移量是3X。

JMP NEAR BRA1

程序:MOV AH,0

MOV BL,AL

ADD AL,AL ;求2X

ADD AL,BL ;求3X,即位移量 MOV BX,OFFSET BRA-TAB ;设BRA-TAB为表首 ADD BX,AX JMP BX

4.21 利用表实现分支

根据AL中各位被置位情况,控制转移到8个子程序 P1~P8之一中去。地址表的结构如表4-1所示。 【解】分析:对于这种程序关键要找出每种情况的转移地址,从图中可见表地址=表基地址+偏移量, 而偏移量可由AL各位所在位置*2求得。 流程图见图4-1。 DATA BASE DATA CODE

SEGMENT

DW SR0,SR1,SR2,SR3, SR4,SR5,SR6,SR7 ENDS SEGMENT

P1 P2 P3 表4-1 子程序R1—R8的入口地址

表 子程序R1的入口偏移地址 子程序R2的入口偏移地址 子程序R3的入口偏移地址 JMP NEAR BRA2 JMP NEAR BRA3 ?? BRA-TAB

?? ??. ?? ?? P7 P8 子程序R7的入口偏移地址 子程序R8的入口偏移地址

ASSUME CS:CODE,DS:DATA,ES:DATA BEGIN: PUSH DS

XOR AX,AX PUSH AX

MOV AX,DATA MOV DS,AX LEA BX,BASE ;表头送BX IN

AL,PORT

GETBIT: RCR AL,1 ;右移一位

JC GETAD ;移出位是1? INC JMP

BX GETBI

INC BX ;修改指针 GETAD: CODE

4.22寄存器AL中存放了当前外部中断请求的状态。D~D对应INT~INT,编程查询中断请求发自哪一个中断源并转相应中断服务子程序。

【解】分析:查询顺序即为优先级顺序,条件测试时,通过对AL移位,依次检测各位。 程序:??

ROR AL,1 JC R0 ROR AL,1 JC R1 ROR AL,1 JC R2 ?? ROR AL,1 JC R7 ??

4.23将内存中某一区域的原数据块传送到另一区域中。

【解】分析:这种程序若源数据块与目的数据块之间地址没有重叠,则可直接用传送或串操

JMP WORD PTR[BX] ;实现散转

ENDS 图4-1 流程图

END BEGIN

作实现;若地址重叠,则要先判断源地址+数据块长度是否小于目的地址,若是,则可按增量方式进行,否则要修改指针指向数据块底部,采用减量方式传送。程序如下: DATA STR STR1 STR2 DATA

SEGMENT

DB 1000DUP(?) EQU STR+7 EQU STR+25 ENDS

SEGMENT PARA STACK ‘STACK’ DB ENDS SEGMENT

ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK PROC SUB PUSH

AX,AX AX

100DUP(?)

STRCOUNT EQU 50 STACK STAPN STACK CODE

GOO PUSH

DS

MOV AX,DATA MOV DS,AX MOV ES,AX MOV AX,STACK MOV SS,AX MOV CX,STRCOUNT MOV DI,STR2 CLD PUSH

SI

ADD SI,STRCOUNT-1 CMP SI,DI POP JL STD

ADD SI,STRCOUNT-1 ADD DI,STRCOUNT-1

SI OK

MOV SI,STR1

OK:

GOO CODE

REP RET ENDS

MOVSB

ENDP

END GOO

第5部分 总线时序

5.1 总线周期的含义是什么?8086/8088CPU的基本总线周期由几个时钟组成?如果 一个CPU的时钟频率为8MHz,那么,它的一个时钟周期是多少?一个基本总线周期是多 少?如果主频为5MHz呢?

【解】CPU访问总线(从内存储器或I/0端口读/写字节或字)所需的时间称为总线周 期。8086/8088CPU的基本总线周期由4个时钟组成。若CPU的时钟频率为8(5)MHz, 时钟周期为1/8MHz=125(1/5MHz=2O)ns,基本总线周期为4×125(200)ns=500(800)ns

5.2在总线周期的TI、T2、T3、T4状态,CPU分别执行什么动作?什么情况下需要插入 等待状态Tw?Tw在哪儿插入?怎样插入?

【解】 T1周期:8086发出20位地址信号,同时送出地址锁存信号ALE;T2周期:8086开始执行数据传送;T3周期:下降沿采样READY,若有效则T3结束后进入T4 ,若无效则插入等待周期TW,在TW继续采样READY,直至其变为有效后再进入T4 ; T4周期:8086完成数据传送。

下面以存储器读为例进行说明。 在Tl周期:输出地址信号、地址锁存允许信号、内存或I/O端口访问控制信号; 在T2周期:CPIJ开始执行数据传送操作,此时,8086CPU内部的多路开关进行切换,将 地址/数据线AD15~AD0上的地址撤销,切换为数据总线,为读写数据作准 备。8288总线控制器发出数据总线允许信号和数据发送/接收控制信号 DT/R允许数据收发器工作,使数据总线与8086CPU的数据线接通,并控制数 据传送的方向。同样,把地址/状态线A19/S6~A16/S3切换成与总线周期有 关的状态信息,指示若干与周期有关的情况。

在T3周期:开始的时钟下降沿上,8086CPU采样READY线。如果READY信号有效(高电平),则在T3状态结束后进人TA状态。在T4状态开始的时钟下降沿,把数据总线上的数据读入CPU或写到地址选中的单元。 在T4状态:结束总线周期。如果访问的是慢速存储器或是外设接口,则应该在Tl状态输出的地址,经过译码选中某个单元或设备后,立即驱动READY信号到低电平。8086CPU在T3状态采样到READY信号无效,就会插入等待周期Tw,在Tw 状态CPU继续采样READY信号;直至其变为有效后再进人T4状态,完成数据传送,结束总线周期。在T4状态,8086CPU完成数据传送,状态信号S2 ~S0 。变为无操作的过渡状态。在此期间,8086CPU结束总线周期,恢复各信号线 的初态,准备执行下一个总线周期。

5.3 8086和8088是怎样解决地址线和数据线的复用问题的?ALE#信号何时处于有效电平? 【解】 8086/8088通过利用ALE信号的是否有效来解决地址线和数据线的复用问题。ALE作为最小模式的地址锁存允许信号输出端,在任何总线周期的T1状态,ALE输出有效电平,以表示当前在地址/数据复用总线上输出的是地址信息。

5.4总线的分类有哪几种?

【解】按位置分:片内总线、片总线(局部总线)、内总线(系统总线)、外总线(通信总线) 按功能分:数据总线、地址总线、控制总线、电源和地线、备用线

5.5总线的特性

【解】物理特性——物理连接方式,根数、插头、引脚排列

功能特性——每一根线的功能

电气特性——每一根线信号传送方向、有效电平范围 时间特性——每一根线的时序

5.6 常用总线类型

【解】ISA——工业标准体系结构总线

PCI——外部设备互连总线 USB——通用串行接口总线

5.7 8086的基本总线周期有哪几种?

【解】存储器读或写; I/O端口读或写;中断响应周期;总线保持请求与保持响应周期。

5.8 试说明PCI总线的特点

【解】PCI总线是一种不依赖任何具体CPU的局部总线。特点是:

① 高性能,32位或64位总线宽度;支持突发工作方式,后边可跟无数个数据总线周期;处理器/内存与系统能力完全一致;总线时钟频率为33MHZ/66MHZ。 ② 低成本,即插即用;多路复用体系结构减少了管脚个数和PCI部件。 ③ 总线设备的工作与CPU相对独立。 ④ 支持多主控设备。

⑤ 数据完整,提供数据和地址的奇偶校验功能。 ⑥ 两种电压环境,5V、3.3V。

5.9 说明USB总线的特点。

【解】Universal Serial Bus 通用串行总线的特点

① 传输速率高,USB1.0,1.5Mb/s~12Mb/s,用于低速外设(键盘、鼠标等),USB2.0传输速率可高达480Mb/s,用于高速外设(U盘、移动硬盘、多媒体等)。 ② 支持即插即用。

③ 支持热插拔。 ④ 良好的扩展性。 ⑤ 可靠性高。 ⑥ 开放的统一标准。 ⑦ 总线供电。

⑧ 传送距离,低速(1.5Mb/s)传输时采用非屏蔽电缆,结点间距离为3m,高速(12Mb/s)传输时采用屏蔽电缆,结点间距离为5m。

⑨ 低成本。接口电路简单,易于实现,特别适合低速设备。

第6部分 存储器系统

6.1 试说明半导体存储器的分类。 【解】

6.2 存储器与系统连接时应注意哪些问题? 【解】

⑴ CPU总线的带负载能力,较大系统可加缓冲器或总线驱动器 ⑵ 存储器的组织、地址分配与片选问题 ⑶ CPU的时序与存储器的存取速度之间的配合

⑷ 存储器电平信号与CPU的电平匹配(CPU信号多为TTL标准电平) ⑸ 控制信号的连接

6.3 存储器芯片的片选信号有几种产生方式?试述每种方式的优、缺点。 【解】

(1) 线选方式(线选法)——译码电路简单,地址重叠;不同地址线作选片控制时,地址

区间不同。

(2) 全局译码选择方式(全译码法)——片选控制的地址译码采用全部高位地址线(A15~

A10)参与译码,每一组地址区间确定,唯一,但译码电路复杂。

(3) 局部译码选择方式(部分译码法)——线选法和全译码法相结合的方法。

6.4内存扩展电路如下图示,试写出各芯片的信号名称和存储器地址空间。

【解】

控制信号:CE、WE、OE 地址信号:A12~A0 地址信号:A15、A14、A13

RAM 6264:Y0 —— 0000 0000 0000 0000 ~ 0001 1111 1111 1111 0000H ~ 1FFFH EEPROM 28C64:Y7 —— 1110 0000 0000 0000 ~ 1111 1111 1111 1111 E000H ~ FFFFH

第7部分 输入输出接口

7.1 外部设备为什么要通过接口电路和主机系统相连?

【解】]因为外部设备种类繁多,输入信息可能是数字量`模拟量,而且输入速度电平`功率与CPU差距很大。所以通常要通过接口电路与主机系统相连。

7.2接口电路的作用是什么?按功能可分为几类?

【解】接口电路使主机与不同种类的设备`不同信号类型`不同工作速度与不同电平和功率的外部设备能过正确连接,以保证信息的正确传送。接口电路按功能可以分为并行接口电路和串行接口两大类。

7.3 数据信息有哪几类/。举例说明它们各自的含义。 【解】数据信息可分为3种类型:

(1)数字量:由键盘等输入的信息是以二进制形式表示的数或一ASCⅡ码表示的数或字符. (2)模拟量:当计算机用与控制时,大量的现场信息经过传感器把非电量(例如温度、压力、流量、位移等)转换为电量,并经过放大得模拟电压或电流.这些模拟量必须先经过A/D转换才能输入计算机(位数由A/D转换的精度确定);计算机的控制输出也必须先经 过D/A转换才能去控制执行机构.

(3)开关量:着是一些两个状态的量,例如电机的运转与停止`开关的合与断`阀门的打开与关闭等.这些量只要用位二进制数即可表示,故字长8位的机器一次输入或输出可控制8个这样的开关量.

7.4 CPU和输入输出设备之间传送的信息以那几类? 【解】CPU 的输入输出设备之间传送的信息主要有3类.

(1)数据(DATE):在微型计算机中,数据通常为8位`16位或32位..

(2)状态信息(STATUS):在输入时,有输入设备反对信息是否准备好(READY);在输出

时有输出设备是否有空(EMPTY),若输出设备正在输出信息,则以忙(BUSY)指示等.

(3)控制信息(CONTROL):例如,控制输入输出设备启动或停止等.

7.5什么叫端口?通常有哪几类端口?计算机对I/O端口编址时常采用哪两种方法?在 8086/8088系统中,用哪种方法对I/O端口进行编址?

【解】端口是信息输入或输出的通路。在计算机中用地址来区分不同的端口。计算机对I/O 端口编址时通常采用两种方法。 (1)存储器对应输入输出方式

在这种方式中,把一个外设端口作为存储器的一个单元来对待,故没一个外设端口占有 存储器的一个地址。从外部设备输入一个数据,作为一次存储器读的操作;而向外部设备输出一个数据,则作为一次存储器写的操作。 (2)端口寻址的输入输出方式

在这种工作方式中:CPU有专门的I/O指令,用地址来区分不同的外设。但要注意实际 上是以端口(Port)作为地址的单元,因为一个外设不仅有数据寄存器还有状态寄存器和控制命令寄存器,它们各需要需要一个端口才能加以区分,故一个外设往往需要数个端口地址。CPU用地址来选择外设。

在8086/8088中,采用端口寻址的输入输出方式。

7.6 为什么有时候可以使两个端口对应一个端口?

【解】如果两个端口一个用于输入,一个用语输出,是可以用一个地址表示的,因为读RD信号和写WR信号可以用来区分端口的。

7.7 CPU和外设之间的数据传送方式有哪几种?实际选择某种传输方式时,主要依据是什么? 【解】CPU和外设之间的数据传送方式主要有: (1)查询传送方式; (2)中断传送方式;

(3)直接数据通道传送(DMA)方式。

具体采用哪种传送方式,取决于数据传送的速度和数量。当外部设备的信息传送速度较 低或要求实施处理时,采用中断方式;当外设速度与CPU相当时,采用查询方式;当要求传送速度快且是批量传送时,采用DMA方式。

7.8查询式传送方式有什么优缺点?中断方式为什么能弥补查询方式的缺点?

【解】查询方式是程序不停地主动地对输入状态信息进行查询。优点是保证在条件具备时才进行输入或输出,传送可靠。但若输入速度较慢,则CPU的大量时间用于查询等待,而只有较少的时间实现输入输出,这样使得CPU的效率很低。

中断方式是在程序启动是在输入输出过程后,程序不等待,继续执行??直至外部设备 条件具备后,由外设通过中断信号通知CPU,条件已经具备,则CPU暂停程序的执行,处理输入输出的工作。故CPU效率高。

7.9与DMA方式比较,中断传输方式有什么不足之处?

【解】中断传输仍是由CPU通过程序来传送,每次要保护断点、保护现场都需用多条指令,每条指令要有取指和执行时间。这对于一个高速I/O设备,以及成组交换数据的情况,例如

磁盘与内存间的信息交换,就显得速度太慢了。所以希望用硬件在外设与内存间直接进行数据交换(DMA)而不通过CPU,这样数据传输的速度的上限就取决于存储器的工作速度。但是,通常系统的地址和数据总线以及一些控制信号线(IO/M、RD、WR等)是由CPU管理的,在DMA方式时,就希望CPU把这些总线让出来(即CPU连到这些总线上的线处于第三态——高阻状态),而由DMA控制器接管,控制传送的字节数,判断DMA是否结束,以及发出DMA结束等信号。这些都是由硬件实现的。

7.10 8237A有哪几种工作模式?各自用在什么场合? 【解】8237A有4种工作模式。 (1)单字节传送模式

这种模式是编程为一次只传送一个字节。数据传送后字节记数器减量,地址要相应修改 (增量或减量取决于编程)。HRQ变为无效,释放系统总线。若传送使字节数减为0,TC发生或终结DMA传送,或重新初始化。 (2)块传送方式

在这种传送方式,8237由DREQ启动就连续地传送数据,直至字节数记数器减到零产生 TC(Terminal Count),或由外部输入有效的EOP信号来终结DMA传送。 (3)请求传送方式

在这种工作方式下,8237可以进行连续的数据传送。当出现以下3种情况之一时停止传 送。

① 字节数计数器减到0,发生TC; ② 由外界送来一个有效的EOP信号;

③ 外界的DREQ信号变为无效(外设的数据已传送完)。 (4)级连方式

这种方式用于通过级连以扩展通道。第二级的HRQ和HLDA信号连到第一级的DREQ和 DACK上。

7.11在查询方式、中断方式和DMA方式中,分别用什么方式启动数据传输过程?

【解】在查询方式下,是通过程序来检测接口中状态寄存器中的\准备好\(READY)位,以确定当前是否可以进行数据传输的;在中断方式下,当接口中已经有数据要往CPU输入或者准备好接收数据时,接口会向CPU发一个外部中断请求,CPU在得到中断请求后,如果响应中断,便通过运行中断处理程序来实现输入/输出;在DMA方式下,外设要求传输数据时,接口会向DMA控制器发DMA请求信号,DMA控制器转而往CPU发送一个总线请求信号,以请求得到总线控制权,如果得到DMA允许,那么,就可以在没有CPU参预的情况下实现DMA传输。

第8部分 中断系统

8.1 什么是中断?中断技术的作用是什么?

【解】中断是指计算机在执行程序的过程中,当出现异常情况或特殊请求时,计算机停止现行程序的运行,转向对这些异常情况或特殊请求的处理,处理结束后再返回现行程序的间断处,继续执行原程序。 中断是单片机实时地处理内部或外部事件的一种内部机制。当某种内部或外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断在日常工作中,CPU需要输入一些数据,或是输出运行结果,但I/O的运行速度比CPU的执行速度要慢很多,这就意味着CPU常常需要用大量的时间去等待计算机外围设备进行输入输出。这种等待的过程使得计算机处理事务的效率受到了很大的影响。而“中断”就是计算机解决CPU和I/O之间速度矛盾的有效途径,通过中断管理,当外设需要进行输入输出操作时,就向CPU发出中断申请,CPU将按各中断申请的优先级别响应中断请求,从而使计算机的工作效率明显提高。

8.2 CPU响应中断的条件是什么?中断处理过程一般包括哪些步骤? 【解】1.CPU在同时满足下列两个条件时,响应中断:

(1)CPU必须执行完一条指令 (2)无直接存储器访问(DMA)

(3)CPU内部中断允许触发器IFF为允许中断状态 2. 中断处理过程一般包括:

(1) 将中断类型码乘以4,指向中断向量表中的中断处理子程序的入口地址。 (2) 保存CPU的状态。

(3) 清除IF和TF的状态标志位。 (4) 保存原来执行的主程序的中断点。 (5) 转中断处理子程序入口地址。 (6) 执行中断处理子程序。

(7) 返回到被中断了的主程序的断点继续执行。

8.3中断系统由哪些部分组成?各部分的功能是什么? 【解】 硬中断

不可屏蔽中断(NMI):

1.CPU不能屏蔽,即:无论IF的状态如何,CPU收到有效的NMI必须进行响应;

事件的处理,中断处理完毕后,又返回被中断的程序处,继续执行下去。

2.NMI是上升沿有效; 3.中断类型号固定(为2); 4.它在被响应时无中断响应周期;

5.通常用于重大故障处理 可屏蔽中断(INTR):

1.CPU可以通过设置IF的状态屏蔽它,若IF=1,CPU响应,IF=0,CPU不响应; 2.INTR高电平有效;它需要中断响应周期;

3.中断类型号由中断控制器在中断响应周期中提供给CPU; 4.可屏蔽中断主要用于普通I/O设备请求与CPU进行数据交换. 软中断

软中断是由中断指令(INT)引起的中断。软中断无优先级别,它是程序中执行一条INT 指令产生的。当执行INT指令时,先把标志字压入堆栈,然后将返回地址(段地址、段内偏移 量)压入堆栈,清除中断标志(关闭屏蔽中断),从中断向量表中得到当前中断服务程序入口地 址,并转去执行。

8.4非屏蔽中断有什么特点?可屏蔽中断有什么特点?他们分别用什么场合?

【解】非屏蔽中断不受CPU中断标志的影响,无论中断标志是允许中断或禁止中断,在非屏 蔽中断引线上的中断请求,CPU在当前指令执行完以后,都要响应此中断。可屏蔽中断则受中断标志的影响,只是在开中断情况下,CPU才响应屏蔽中断.非屏蔽中断,使用在CPU必须要响应的场合,例如电源故障等。

8.5什么叫中断向量?它放在哪里?对应于1Ch的中断向量存放在哪里?如果1CH的中断处理 子程序从5110H:2030H开始,则中断向量应该怎样存放?

【解】中断向量是区分不同中断和获取相应的中断服务程序的一个字节的量,它由CPU产生 (对于软件中断)或由外设在中断响应周期送至CPU的。8086在内存的1KB有一个中断向量表, 存放最多为256个中断服务程序的入口。题中的中断在中断向量表中的存放。

8.6中断入口地址表的功能是什么?已知中断类型码为88H,它们的中断入口在中断地址表中 的什么位置?

【解】中断入口地址表又称中断矢量表,它是中断矢量类型码与该中断类型相对应的中断服务程序入口之间的连接表,它设置在系统RAM最底端1024个单元内。中断矢量表共有256种中断类型码,每个类型码占用4个字节。其中低两个字节为中断服务程序入口地址的偏移地址置入IP;高两位字节为服务程序的段基址置入CS。于是可通过这4个字节的值即可找到该中断类型的中断服务程序入口。

中断向量地址指针=4*中断类型码,88H的中断入口在中断向量表的220H 。

8.7 从8086/8088CPU的中断向量表中可以看出,如果一个用户想定义某个中断,应该选择 在什么范围?

【解】应该在向量32~256之间选择。

8.8 8086CPU有哪几种中断?哪些是硬件中断?哪些是软件中断?

【解】8086CPU有两类中断;软件中断——由指令的执行所引起的;硬件中断——由外部(主 要是外设)的请求所引起的。

(1)外部中断 :8086有两条外部中断的情况:DMI——Non Maskable Interrupt(非 屏蔽中断)和INTR(可屏蔽中断)。

(2)内部中断:8086可以有几种产生内部中断的情况:DIV或IDIV指令、INT指令、 INTO指令和单步执行。

8.9 CPU如何确定中断源的类型?响应各中断请求的先后顺序是什么?

【解】采用软件查询技术和硬件编码器和比较器的优先权排队电路。当CPU响应中断后,就用软件查询以确定是哪些外设申请中断,并判断它们的优先权,CPU识别出是哪些中断源有中断请求,辨别和比较它们的优先权,先响应优先权级别最高的中断申请。另外,当CPU正在处理中断时,也要能响应更高级的中断申请,而屏蔽掉同级或较低级的中断申请。

8.10 简述可屏蔽中断的响应过程,一个可屏蔽中断或者非屏蔽响应后,堆栈顶部6个单元 中的内容是什么?

【解】CPU响应可屏蔽中断的过程如下。 1 推入标志寄存器。

2 关中断。8068在CPU响应中断后,发出中断响应信号INTA的同时,内部自动实现关 中断。

3 保留断点。CPU响应中断,封锁IP+1,且把IP和CS推入堆栈保留,以备中断处理完 毕后能返回主程序。

4 保护现场。为了使中断处理程序不影响主程序的运行,故要把断点处的有关各个寄 存器的内容和标志位的状态,推入堆栈保护起来。8086是由软件(即在中断服务程序中)把 要用到的寄存起的内容用PUSH指令推入堆栈。

5 给出中断入口,转入相应的中断服务程序。8086是由中断源提供的中断矢量形成中 断入口地址(即中断程序的起始地址)。在中断服务程序完成后,还要做下述(5)、(6)两 步。

6 恢复现场。把所有保存的各个内部寄存器的内容和标志位的状态,从堆栈弹出,送 回CPU中的原来位置。这个操作在8086中也是由服务程序中用POP指令来完成的。 7 开中断和返回。在中断服务程序的最后,要开中断(以便CPU能响应新的中断请求) 和安排一条返回指令,将堆栈内保存的IP、CS值和标志寄存器内容弹出,运行就恢复到主 程序。

8.11在编写中断处理子程序时,为什么要在子程序中保护许多寄存器?

【解】因为在用户程序运行时,回在寄存器中有中间结果,当在中断服务程序中要使用这些 寄存器前要把这些寄存器的内容推至堆栈保存(称为保护现场0。在从中断服务程序返回至 用户程序时把这些内容从堆栈恢复至寄存器中(称为恢复现场)。

8.12中断返回指令IRET和普通子程序返回指令RET在执行时,具体操作内容有什么不同? 【解】因为在响应中断时,CPU保护标志寄存器和保护断点。所以,IRET指令要恢复断点和标志寄存器。

8.13 设置中断优先级的目的是什么?

【解】若有多个外设同时请求中断,他们之间是有轻重缓急的,设置中断优先级就能使CPU按照轻重缓急要求响应中断。而且,设置了中断优先级可以使优先级高的中断比优先级低的中断优先处理,实现中断嵌套。

8.14 什么是中断响应周期?在中断响应中,8086CPU和8259A一般完成哪些工作? 【解】中断响应周期是从用户程序至中断服务程序的过渡周期。在第一个中断响应周期,8259A确定中断的优先级;在第二个中断响应周期,8259A送出中断向量。

8.15 8086CPU中断响应时序如下图示,试写出中断响应过程。

【解】CPU在当前指令周期的最后一个T采样中断请求信号,若INTR信号有效且中断系统开放(IF=1),则进入中断响应周期。中断响应周期由2个基本指令周期组成,第一个中断响应周期CPU回应一个中断响应信号INTA给中断源;第二个中断响应周期仍有INTA,中断源必须在T3前将中断向量号送至CPU的数据总线,CPU在T4采样数据总线,获得中断向量号,进入中断处理序列。

8.16 中断控制器8259A的内部结构、各引脚功能是什么? 【解】8259A的内部结构方框图:

INTA INT D7~D0 数据总线缓冲器 控制逻辑 RD WR A0 CS /写读读/写 控制 控制逻辑逻辑 CAS0 CAS1 CAS2 级连缓冲比较器 中断 服务 寄存器 ISR 优先权 判别 电路 中断 请求 寄存器 IRR IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7 SP/EN 内部总线 中断屏蔽寄存器 IMR 引脚功能:

D7-D0:双向三态数据线,它可直接与数据总线连接,用来传送命令字和中断向量。

IR0-IR7:中断请求输入线,其中IR0的优先级别最高,IR7的优先级别最低,可外接8个I/O中断源。

INTA:中断响应输入线,接CSCPU的INTA,通常由两个负脉冲组成。

:片选信号线,接地址译码器输出。

8259A的内部寄存器的信息读至数据总线。

WR:写控制信号线,低电平有效时,CPU向8259A写入控制信号。

RD:读控制信号线,低电平有效时,可将

A0:寄存器选择线,用于选择8259A内部不同寄存器,接CPU地址总线其中的1条,常接A0。

CAS0-CAS2:级联信号线,与SP/EN配合实现级联。当8259A为主片时,这三条线为输出线;当8259A为从片时,这三条线为输入线。

SP

/EN:双功能的程序/缓冲器允许信号线,当8259A工作于缓冲方式时,它被作为

控制缓冲器传送方式的输出信号;当8259A工作于非缓冲方式时,它用于规定8259A是主8259A片还是从8259A片,如果没有级联,则该线接高电平

8.17 在中断响应过程中,8086CPU向8259A发出的两个INTA信号分别起什么作用? 【解】CPU发出的第一个INTA脉冲告诉外部电路,其提出的中断请求已被响应,应准备将类 型号发给CPU,8259A接到了这个INTA脉冲时,把中断的最高优先级请求置入中断状态寄存 器(ISR)中,同时把ISR(中断请求寄存器)中的相应位复位。CPU发出的第二个INTA脉 冲告诉外部电路将中断的类型号放在数据总线上。

8.18可编程中断控制器8259A在中断处理时,协助CPU完成哪些功能?

【解】8259A有中断请求寄存器、优先权电路和中断在服务寄存器,可接受多个中断请求以及优先权处理。8259A还可以多每个中断源进行屏蔽。

8.19 8259A的初始化命令字和操作命令字有什么差别?它们分别对应于编程结构中哪些内存寄存器?

【解】8259A的初始命令字是使8259A在开始工作前处在正确的起始状态。初始化命令主要 规定8259A的工作模式和中断向量。初始化命令字写至ICW1~ICW4。

8.20在80386系统中,中断控制器8259A采用了级联方式,试说明在主从式中断系统中8250A 的主片和从片的连接关系。

【解】在级联方式下,外设的中断请求,连至从片的IR0~IR7,从片的INT输出线连至主片的IR0~IR7中的一条。所以,主8259A可与8个从片相连。主片INT输出线连至CPU的INTR端。

第9部分 可编程接口芯片及应用

9.1可编程并行接口芯片8255A的3个端口在使用时有什么差别?

【解】 通常端口A或B作为输入输出的数据端口(端口A还可以作为双向数据端口),而端口C作为控制或状态信息的端口,它在“方式”字的控制下,可以分成两个4位的端口。每端口包含一个4位锁存器。它们分别端口A和B配合使用,可用以作为控制信号输出,或作为状态信号输出。

9.2可编程并行接口芯片8255A的方式选择控制字和置1/置0控制字都是写入控制端口的, 那么,它们是由什么来区分的?

【解】 用控制字的D7确定。D7=1,写入的是方式控制字;而D7=0,写入的是按位置位/复 位字。

9.3 8255A有哪几种基本工作方式?对这些工作方式有什么规定? 【解】 8255A有3种基本的工作方式: 方式0(Mode0)——基本输入输出; 方式1(Mode1)——选通输入输出; 方式2(Mode2)——双向传送。

9.4 可编程并行接口芯片8255A的方式1有什么特点?参考教材中的说明,用控制字设定 8255A的A 口工作于方式1,并作为输入口;B口工作于方式1,并作为输出口,用文字说明 各个控制信号和时序关系。假定8255A的端口地址为00C0H、00C2H、00C4H、00C6H。 【解】 8255A方式1的特点为:

用作一个或两个选通端口。每一个端口包含有:8位的数据端口,3条控制线(是固定 指定的,不能用程序改变),提供中断逻辑。任一个端口都可作为输入输出。若只有一个端口 工作于方式1,余下的13位,可以工作在方式0(由控制字决定)。若两个端口工作于方式1, 端口C还留下两位,这两位可以由程序指定作为输入或输出,也具有置位/复位功能。题中要 求的方式控制为:10111100B,相应的初始化程序段为: MOV AL,0BCH OUT 00C6H,AL

在方式1输入时,当外设的数据已经输至8255A的端口数据线上,用选通信号STB把数 据锁入8255A的输入锁存器,选通信号的宽度至少为500ns。选通信号经过时间tSIB后,IBF 信号有效,输给外设,阻止外设输入新的数据,也可供CPU查询;在选通信号结束后,经过 tSTI向CPU发出INTR信号(中断但是允许的话)。CPU响应中断,发出RD信号,把数据读

入CPU。在RD信号有效后经过tRIT就清除中断请求,当RD信号结束后,数据已读至CPU, 使IBF变低。表示输入缓冲器已空,通知外设可输入新的数据。

在方式1输出时,用在中断控制方式时,输出过程由CPU响应中断开始,在中断服务程 序中,CPU输出数据和发出WR信号,WR信号一方面清除INTR9经过时间tWIT),另外在WR上 升沿,使OBF有效,通知外设接受数据,实质上OBF信号是外设的一个选通命令。在WR上 升沿后经过tWB时间数据就输出了,当外设接受数据后,发出ACK信号,它一方面使OBF无 效(经过Taob),另一方面在ACK的上升沿使INTR有效(经过Tait).发出新的中断请求。

9.5 可编程并行接口芯片8255A的方式2有在什么场合?说明端口A工作于方式2时各信号 之间的时序关系。

【解】8255A的方式2主要在要求通道双向工作的场合。方式2各信号的时序是方式1的输入与输出方式的组合,故各个时间参数的意义也相同。输出是由CPU执行输出指令(给出IOWR) 信号开始的,输入是由选通信号开始的。输入、输出的顺序是任意的,只要WR在ACK以前发 生;STB在RD以前发生就行。

9.6 8255A的方式0一般使用在什么场合?在方式0时,如要使用应答信号进行联络,应该怎么办?

【解】方式0的使用场合有两种,一种是同步传送,另一种是查询式传送。在方式0情况下,没有规定固定的应答信号,所以,这时,将端口A和端口B作为数据端口,把端口C的4个数位(高4位或者是低4位均可)规定为输出口,用来输出一些控制信号,而把端口C的另外4个数位规定为输入口,用来读入外设的状态,即利用端口C来配合端口A和端口B的输入/输出操作。使用查询方式进行输入输出时,可利用端口C的某一位作查询,只有当该位为1时,方可以将数据送到输入或输出端口去。

9.7 对8255A设置工作方式,8255A的控制口地址为00C6H。要求端口A工作在方式1,输入;端口B工作在方式0,输出;端口C的高4位配合端口A工作;低4位为输入。 【解】 MOV AL ,B1H

MOV DX ,00C6H OUT DX ,AL

9.8 设8255A的4个端口地址为00C0H,00C2H,00C4H,00C6H,要求用置1/置0方式对PC6置1,对PC4置0。

【解】MOV AL,00H ;对PC6置1的控制字

MOV DX,00CCH ;控制地址DX

OUT DX,AL ;对PC6置1操作 MOV AL,08H ;对PC4置0的控制字 OUT DX,AL

9.9 定时与计数技术在微机系统中有什么作用?

【解】一般来讲,定时与计数是两个完全不同的操作,也分别适用于不同的场合。但是,从电路实现的角度来看,这两者又有着非常一致的地方。定时器内部通常是由计数器组成,而计数器是由外部计数脉冲触发而进行计数的。这时我们可以通过统计计数脉冲的个数来达到计数的目的。同时,如果计数脉冲是周期相同的精确的时钟信号时,还可通过计数脉冲的个数与计数脉冲的周期相乘来达到定时的目的。

9.10 8253有哪几种工作方式,各有何特点?其用途如何? 【解】方式0:计数结束产生中断,可作为定时器的中断信号;

方式1:可重复触发的单稳态脉冲,可作为硬件启动的定时操作; 方式2:分频器。 方式3:方波发生器。 方式4:软件触发选通。 方式5:硬件触发选通。

各种工作方式计数器的初值生命周期不同。方式0、1、4、5,计数初值单次有效,即如果不重新输入初值,则计数停止;对于方式2、3而言,计数初值重复有效,即不重新写入初值,则将按原来的初值计数,直到写入新的方式控制字或新的初值。 方式 0 1 2 3 4 5 功能 计数完中断 硬触发单拍脉冲 频率发生器 方波速率发生器 软件触发选通 硬件触发选通 启动条件 写计数初值 写计数初值+ 外部触发 写计数初值 写计数初值 写计数初值 写计数初值+ 外部触发 改变计数值 立即有效 外部触发有效 计数到1后有效 1、外触发后有效 2、计数到0后有效 立即有效 外部触发后有效 GATE 有影响 有影响 有影响 有影响 有影响 有影响 输出波形 电平信号 宽度为N个CLK周期的负脉冲 宽度为一个CLK周期的连续负脉冲 连续方波 宽度为一个CLK周期的负脉冲 宽度为一个CLK周期的负脉冲

9.11 若已有一频率发生器,其频率为1MHz,若要求通过8253,产生每秒一次的信号,8253应如何连接?编写初始化程序。

【解】1MHZ的信号要变为每秒一次,则需要经过106分频。一个通道的计数为16位最大为65536.故需要两个通道级连,则每个通道计数为1000.用通道0和通道1级连,都工作在方式2,初始化程序为: MOV AL, 34H OUT 343H, AL MOV AL, OE8H OUT 342H, AL MOV AL, 03 OUT 342H, AL MOV AL, 74H OUT 343H, AL MOV AL, OE8H OUT 342H, AL MOV AL, 03 OUT 342H, AL

9.12 8253计数器/定时器中,时钟信号CLK和门脉冲信号GATE分别起什么作用? 【解】CLK:时钟信号,输入,决定计数频率。输入脉冲若周期精确,8253一般工作在定时方式;输入脉冲若周期不定,8253一般工作在计数方式;输入时钟周期不得小于380ns,即输入时钟信号的频率不得高于2.6MHZ。其功能是作为计数脉冲,每输入一个CLK脉冲,计数值减1。

GATE:门控输入引脚,控制计数器输入脉冲。其功能是禁止、允许或启动计数过程。

9.13能否用8253的OUT信号直接驱动继电器,试说明原因。

【解】否,8253的OUT信号为TTL电平,输出电流不足以直接驱动继电器。

(电平是个电压范围,规定输出高电平>2.4V,输出低电平<0.4V。在室温下,一般输出高电平是3.5V,输出低电平是0.2V。最小输入高电平和低电平:输入高电平>=2.0V,输入低电平<=0.8V,噪声容限是0.4V。)

9.14 若8253芯片的接口地址为D0D0H~D0D3H,时钟信号为2MHZ,现利用计数器0,1、2分别产生周期为10μS的方波,每隔1ms和10ms产生一个负脉冲,写出初始化程序。 【解】MOV AL, 00010110B ;计数器0的控制字。输出方波,工作方式3;初值为20 ;读写格式为:只写低8位

;按二进制计数,当然也可以按十进制计数(控制字为17H)

MOV DX, 0D0D3H

OUT DX, AL ;计数器0的控制字写入控制口

MOV AL, 14H ;注意:如果按十进制计数,则初值为20H MOV DX, 0D0D0H

OUT DX, AL ;初值写入计数器0的初值寄存器

9.15 下面是一个8253的初始化程序段。8253的控制口地址为46H,3个计数器端口地址分别为40H、42H、44H。在8253初始化前,先将8259A的所有中断进行屏蔽,8259A的奇地址端口为81H。请对下面的程序段加详细注释,并以十进制数表示出各计数器初值。 【解】INI: CLI ;CPU关中断 MOV AL,0FFH ;8259A屏蔽中断 OUT 82H,AL

MOV AL,36H ;设置计数器0控制字,工作于模式3 OUT 46H,AL

MOV AL,0 ;设置计数器0的计数初值为4000H=16384 OUT 40H,AL MOV AL,40H OUT 40H,AL

MOV AL,54H ;设置计数器1控制字,工作于模式2,低8位字节读/写 OUT 46H,AL

MOV AL,18H ;设置计数器1的计数初值为18H=24 OUT 42H,AL

MOV AL,0A6H ;设置计数器2控制字,工作于模式3,高8位字节读/写 OUT 46H,AL

MOV AL,46H ;设置计数器2的计数初值为4600H=17920 OUT 44H,AL

MOV AL,80H ;修改计数器2的计数初值为8000H=32768 OUT 44H,AL

答:注释见程序清单,计数器初值的十进制值也见注释.

9.16 D/A转换器接口的的任务是什么?它和微处理器连接时,一般有那几种接口形式? 【解】D/A接口转换器的任务主要是解决CPU与DAC之间的数据缓冲问题,一般有3种:①采用中小规模逻辑芯片构成的接口电路与CPU连接;②采用通用并行I/0接口芯片与CPU连

接;③采用GAL器件。

9.17试述D/A转换器的主要技术指标。

【解】① 分辨率(Resolution):单位数字量所对应模拟量增量。即D/A转换器模拟输出电压能够被分离的等级数。

② 精度(Accuracy):分绝对精度(Absolute Accuracy)和相对精度(Relative Accuracy)绝对精度(绝对误差)指的是在数字输入端加有给定的代码时,在输出端实际测得的模拟输出值(电压或电流)与应有的理想输出值之差。它是由D/A的增益误差、零点误差、线性误差和噪声等综合引起的。相对精度指的是满量程值校准以后,任一数字输入的模拟输出与它的理论值之差。

③ 建立时间(Settling Time):在数字输入端发生满量程码的变化以后,D/A的模拟输出达到稳定时,所需要的时间。

9.18 DAC分辨率和微机系统数据总线宽度相同或高于系统数据总线宽度是,其连接方式有何不同? 【解】

①当DAC分辨率与微机系统总线宽度相同时,若D/A转换器带三态输入锁存缓冲,可以将CPU数据总线直接与D/A转换器相通;否则需要在CPU与D/A转换器之间加三态锁存缓冲器; ②当DAC分辨率高于系统数据总线宽度时,无论D/A接口转换器是否带三态输入锁存缓冲器,都需要加三态锁存缓冲器,先分两次把数据送到两个三态锁存缓冲器,再同时选通两个缓冲器,将数据送到D/A转换器进行转换。

9.19 编制在输出端得到锯齿波和梯形波程序。

【解】产生锯齿波程序段:

MOV DX,303H ;8255A初始化,8255A的命令口 MOV AL,10000000B ;8255A命令字

OUT DX,AL ;指源B口控制DAC转换 MOV DX,301H ;8255A的B口地址 MOV AL,0010000B ;置DAC0832为直通 OUT DX,AL ;生成锯齿波循环 MOV DX,300H ;8255A的A口地址 MOV AL,OFFH ;输出数据从最大开始 L1:OUT DX,AL

DEC AL ;输出数据减1

JNZ L1 ;AL是否为0?不为0, MOV AL,OOH L2:OUT DX,AL

ING AL ;输出数据为01 INZ L2 JMP L1 产生梯形波程序段:

MOV DX,303H ;8255A初始化 MOV AL,10000000B

OUT DX,AL ;指源B口控制DAC转换 MOV DX,301H MOV AL,00010000B

OUT DX,AL ;生成梯形波循环 MOV DX,300H

MOV AL,OH ;输出数据从0开始 L1:OUT DX,AL

INC AL INZ L1

MOV AL,OFFH ;达到最大 CALL DELAY ;调用延时 L2:OUT DX,AL

DEC AL INZ L2 JMP L1

DELAY:MOV R7,#0AH

AJMP DELAY

9.20用带两级数据缓冲器的D/A转换器时,为什么要用3条输出指令才完成16位或12位数据转换?

【解】因为在使用内部不带数据寄存器的DAC时,常常需要在DAC前面增加数据缓冲器,用来锁存CPU通过数据总线发出的数字。如果总线为8位,而DAC超过8位(例如10位或12位)时,CPU必须分2次才能把控制数字送入数据缓冲器,例如先送数据的低8位,然后送剩下的高位,因此需要执行2条输出指令。另外,为了避免DAC在得到局部输入时,其输出端输出并不是最后结果的模拟量,通常采用2级数据缓存结构,相应地CPU也需要再增加执行一次输出指令,使在第一级缓冲器中锁存的数据经第二级缓冲器后能一次加到DAC输入端。第三条输出指令仅仅是使第二级缓冲器得到一个选通信号。

9.21 A/D接口转换器一般有哪些外部引脚信号?它们有什么特性?分析ADC外部引脚的特性对ADC接口设计有什么意义? 【解】

(1)任何一种A/D转换芯片一般具有以下信号线:

①模拟信号输入线; ②数字量输出线: ③转换启动线(输入); ④转换结束线(输出)。

(2)①模拟信号输入线来回被转换的对象,有单通道输入或多通道输入之分。对于具有多通信模拟量输入的A/D转换器,还需设置地址线,以便进行通道选择。

②数字输出线是ADC将数字量送给CPU的数据线,数据线的根数表示ADC的分辨率; ③转换启动是由系统控制器发生的一种控制信号,此信号一到A/D转换就开始,此信号没到,A/D转换器不会自动开始转换,并且是设1次启动信号只能转换一次,采集一个数据。 ④接口转换器的转换结束线与转换完毕后由ADC发出A/D转换结束信号,它是一种状态信号。转换结束信号的逻辑定义,有的是高电平有效,有的是低电平有效。

9.22 ADC0809如果需要多通道巡回采样,硬件如何设置?软件如何设置?

【解】ADC0809中ADD A、ADD B、ADD C为8选1模拟开关的三位通道地址输入端,用来选择对应的输入通道。巡回采样时,硬件引脚C、B、A通常与系统地址总线的A2、A1、A0连接;软件循环修改端口地址轮流采样。如下表例: C(A2)、B(A1)、A(A0) 000 模拟开关输出Vx IN0

本文来源:https://www.bwwdw.com/article/nkix.html

Top