微型计算机原理及应用技术_第二版_课后作业解答(全集)

第1章 计算机基础知识

3. 填空:

(1) (1234)10=( )2=( )16

(2) (34.6875)10=( )2=( )16 (3) (271.33)10=( )2=( )16

(4) ([1**********]1)2=( )10=( )16 (5) (1AB.E)16=( )10=( )2 (6) (10101010.0111)2=( )10=( )16 【解】

(1) (1234)10=( [1**********] )2=( 4D2 )16 (2) (34.6875)10=( 100010.1011 )2=( 22.B )16 (3) (271.33)10=( 100001111.010101 )2=( 10F.54 )16 (4) ([1**********]1)2=( 2761 )10=( AC9 )16 (5) (1AB.E)16=( 427.875 )10=(110101011.111 )2 (6) (10101010.0111)2=( 170.4375 )10=( AA.7 )16

4. 已知X=36,Y=-136,Z=-1250,请写出X 、Y 、Z 的16位原码、反码和补码。 【解】

[X]原=0000 0000 0010 0100 [Y]原=1000 0000 1000 1000 [Z]原=1000 0100 1110 0010 [X]反=0000 0000 0010 0100 [Y]反=1111 1111 0111 0111 [Z]反=1111 1011 0001 1101 [X]补=0000 0000 0010 0100 [Y]补=1111 1111 0111 1000 [Z]补=1111 1011 0001 1110

5. 已知[X]补=01010101B,[Y]补=10101010B,[Z]补=[**************]1B,求X 、Y 、Z 及X +Y 、Y -Z 的十进制值为多少?

【解】Y -Z 运算时Y 需要扩展符号位 X =85 Y =-86 Z =-28673

X +Y =01010101B +10101010B =11111111B =-1 Y -Z =11111111 10101010B-10001111 11111111B

=11111111 10101010B+01110000 00000001B =0110 1111 1010 1011B =28587

8. 将下列8421BCD 码表示为十进制数和二进制数:

(1) 01111001 (2) [1**********]1 (3) [1**********]1 (4) [1**********]0 【解】

(1) 79, 1001111B (2) 285, 100011101B (3) 607, 1001011111B (4) 590,

1001001110B

12. 微型计算机由哪几部分组成,各部分的功能是什么?

【解】微型计算机由运算器、控制器、存储器、输入设备、输出设备五大部分组成。

运算器完成算术运算和逻辑运算;控制器分析命令并指挥协调各部件统一行动完成命令规定的各种动作或操作;存储器存放原始数据、中间结果和最终结果以及程序;输入设备、输出设备与外界交换信息。

13. CPU在内部结构上由哪几部分组成,CPU 应具备什么功能? 【解】微处理器(CPU )由运算器和控制器组成。

CPU 应具备的功能:对数据进行处理并对处理过程进行控制。

17. 如果某几种CPU 的地址总线分别有8、16、20、32条,它们各自能寻址的存储器的容量是多少?

【解】地址总线8条: 28=256B

地址总线16条:2=64KB 地址总线20条:220=1MB 地址总线32条:232=4GB

18. 什么是硬件,什么是软件,硬件和软件的关系如何?

【解】硬件是指组成计算机的各种电子的、机械的、光磁学的物理器件和设备,它们构成了计算机的物理实体。软件则是指为了运行、管理和维护计算机而编制的各种程序及其有关的文档资料的总称。硬件是基础,软件是灵魂,两者既相互独立,又相互依存,缺一不可。硬件和软件合起来才组成一个完整的计算机系统。 19. 说明位、字节、字长的概念及它们之间的关系。

【解】(1) 位(bit )。位是计算机所能表示的最基本最小的数据单位。它只能有两种状态“0”和“1”,即二进制位。

(2) 字(Word )。计算机中作为一个整体参与运算、处理和传送的一串二进制数,是计算机中信息的基本单位。

(3) 字长(Word Length)。计算机中每个字所包含的二进制位数称为字长。 它们之间的关系:字由位构成,字长指每个字所包含的位的个数。

1. 8086 CPU 由哪两部分构成,它们的主要功能是什么? 在执行指令期间,EU 能直接访问存储器吗,为什么?

【解】8086CPU 由执行部件(EU )和总线接口部件(BIU )两部分组成。

执行部件由内部寄存器组、算术逻辑运算单元(ALU )与标志寄存器(FR )及内部控制逻辑等三部分组成。寄存器用于存储操作数和中间结果;算术逻辑单元完成16位或8位算术逻辑运算,运算结果送上ALU 内部数据总线,同时在标志寄存器中建立相应的标志;内部控制

16

逻辑电路的主要功能是从指令队列缓冲器中取出指令,对指令进行译码,并产生各种控制信号,控制各部件的协同工作以完成指令的执行过程。

总线接口部件(BIU )负责CPU 与存储器、I/O设备之间传送数据、地址、状态及控制信息。

每当EU 部件要执行一条指令时,它就从指令队列头部取出指令,后续指令自动向前推进。EU 要花几个时钟周期执行指令,指令执行中若需要访问内存或I/O设备,EU 就向BIU 申请总线周期,若BIU 总线空闲,则立即响应,若BIU 正在取一条指令,则待取指令操作完成后再响应EU 的总线请求。

3. 8086 CPU 中有哪些寄存器,各有什么用途? 【解】8086共有8个16位的内部寄存器,分为两组:

① 通用数据寄存器。四个通用数据寄存器AX 、BX 、CX 、DX 均可用作16位寄存器也可用作8位寄存器。用作8位寄存器时分别记为AH 、AL 、BH 、BL 、CH 、CL 、DH 、DL 。

AX (AH 、AL )累加器。有些指令约定以AX (或AL )为源或目的寄存器。实际上大多数情况下,8086的所有通用寄存器均可充当累加器。

BX (BH 、BL )基址寄存器。BX 可用作间接寻址的地址寄存器和基地址寄存器,BH 、BL 可用作8位通用数据寄存器。

CX (CH 、CL )计数寄存器。CX 在循环和串操作中充当计数器,指令执行后CX 内容自动修改,因此称为计数寄存器。

DX (DH 、DL )数据寄存器。除用作通用寄存器外,在I/O指令中可用作端口地址寄存器,乘除指令中用作辅助累加器。

② 指针和变址寄存器。

BP (Basic Pointer Register)基址指针寄存器。 SP (Stack Pointer Register)堆栈指针寄存器。 SI (Source Index Register)源变址寄存器。 DI (Destination Index Register)目的变址寄存器。

BP 、SP 称为指针寄存器,用来指示相对于段起始地址的偏移量。BP 和SP 一般用于堆栈段。SI 、DI 称为变址寄存器,可用作间接寻址、变址寻址和基址变址寻址的寄存器。SI 一般用于数据段,DI 一般用于数据段或附加段。

标志寄存器(FR ):是一个16位寄存器,算术逻辑单元进行算术逻辑运算后,在标志寄存器中建立相应的标志。

段地址寄存器(CS 、DS 、SS 、ES )。用于存放段地址,根据其主要用途,分为代码段寄存器CS 、数据段寄存器DS 、堆栈段寄存器SS 、附加段寄存器ES 。

代码段寄存器CS :代码段是存放程序代码的存储区域,代码段寄存器用来存放代码段存储区域的起始地址。

数据段寄存器DS :数据段是存放程序中所使用的数据的存储区域,数据段寄存器用来存放程序的数据存储区的起始地址。

堆栈段寄存器SS :堆栈段寄存器用来存放堆栈存储区的起始地址。由堆栈段寄存器SS 与堆栈指针寄存器SP 来确定当前堆栈指令的操作地址。

附加段寄存器ES :附加段是为某些字符串操作指令存放目的操作数而设置的一个附加的

数据段,附加段寄存器用来存放该附加数据段存储区域的起始地址。

指令指针寄存器(IP )。又称程序计数器,是16位寄存器。IP 中存放当前将要执行的指令的有效地址,每取出一条指令IP 自动增量,即指向了下一条指令。

指令队列缓冲器:是一个与CPU 速度相匹配的高速缓冲寄存器。在EU 执行指令的同时,BIU 可以从内存中取出下一条或下几条指令放到指令缓冲器中,EU 执行完一条指令后,可以立即从指令缓冲器中执行下一条指令。

4. 状态标志与控制标志有何不同,程序中是怎样利用这两类标志的?标志寄存器有哪些标志位,各在什么情况下置位?

【解】状态标志根据算术逻辑运算结果由硬件自动设定,它们反映运算结果的某些特征或状态,可作为后继操作(如条件转移)的判断依据。控制标志由用户通过指令来设定,它们可控制机器或程序的某些运行过程。

标志寄存器的内容如下: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

CF (Carry Flag)进位标志,反映在运算结果的最高位有无进位或借位。如果运算结果的最高位产生了进位(加法)或借位(减法)则CF=1,否则CF=0。

PF (Parity Flag)奇偶标志,反映运算结果中“1”的个数的奇偶性,主要用于判断数据传送过程中是否出错。若结果的低8位中有偶数个“1”则PF=1,否则PF=0。

AF (Auxiliary Carry Flag)辅助进位标志,又称半进位标志。加减运算时,若D 3向D 4

产生了进位或借位则AF=1,否则AF=0。在BCD 码运算时,该标志用于十进制调整。

ZF (Zero Flag)零标志,反映运算结果是否为0。 若结果为零则ZF=1,否则ZF=0。 SF (Sign Flag )符号标志,反映运算结果最高位即符号位的状态。如果运算结果的最高位为1则SF=1(对带符号数即为负数),否则SF=0(对带符号数即为正数)。

OF (Overflow Flag )溢出标志,反映运算结果是否超出了带符号数的表数范围。若超出了机器的表数的范围,即为产生溢出,则OF=1,否则OF=0。

DF (Direction Flag )方向标志,用于串处理指令中控制串处理的方向。当DF=1时,每次操作后变址寄存器SI 、DI 自动减量,因此处理方向是由高地址向低地址方向进行。当DF=0,则SI 、DI 自动增量,处理方向由低地址向高地址方向进行。该标志由方向控制指令STD 或CLD 设置或清除。

IF (Interrupt Flag )中断允许标志,用于控制CPU 是否允许响应可屏蔽中断请求。IF=1为允许响应可屏蔽中断请求,IF=0则禁止响应可屏蔽中断请求。该标志可由中断控制指令STI 或CLI 设置或清除。

TF (Trap Flag)陷阱标志,用于单步操作。TF=1时,每执行一条用户程序指令后自动产生陷阱,进入系统的单步中断处理程序。TF=0时,用户程序会连续不断地执行,不会产生单步中断。

5. 求出下列运算后各个标志的状态,并说明进位标志和溢出标志的区别。 (1) 1278H + 3469H (2) 54E3H - 27A0H (3) 3881H + 3597H (4) 01E3H - 01E3H

【解】CF 进位标志,反映在运算结果的最高位有无进位或借位。OF 溢出标志,反映运算结果是否超出了带符号数的表数范围。机器实际处理时判断是否溢出的方法是根据最高位的进位(CF )与次高位的进位是否相同来确定,若两者不相同则OF=1(表示有溢出),否则OF=0(表示无溢出)。 (1)

0001 0010 0111 1000 + 0011 0100 0110 1001

0100 0110 1110 0001

OF DF IF TF SF ZF -- AF -- PF -- CF

(2)

0101 0100 1110 0011 0010 1100 0100 0011

OF DF IF TF SF ZF -- AF -- PF -- CF

(3)

0011 1000 1000 0001 0110 1110 0001 1000

OF DF IF TF SF ZF -- AF -- PF -- CF

(4)

0000 0001 1110 0011 - 0000 0001 1110 0011 0000 0000 0000 0000 运算后各个标志的状态:

OF DF IF TF SF ZF -- AF -- PF -- CF

+ 0011 0101 1001 0111 运算后各个标志的状态:

- 0010 0111 1010 0000 运算后各个标志的状态:

运算后各个标志的状态:

6. 8086 CPU 中存储器的逻辑地址和物理地址之间有什么关系,各有多少值?

【解】物理地址为某一个存储单元的实际地址,对于8086它是一个20位的地址。物理地址从00000H ~FFFFFH 变化,对应1MB 的空间。

逻辑地址,又称偏移地址或有效地址,即对段首的偏移量。偏移地址从0000H ~FFFFH 变化,对应64KB 的空间。

物理地址的获得方法是:将段寄存器的内容左移4位(即×16),与逻辑地址相加,得到

20位物理地址。根据寻址方式的不同,偏移地址可以来自程序计数器(IP )或其它寄存器。 7. 8086CPU使用的存储器为什么要分段,怎样分段?为什么要设置段寄存器,有几个段寄存器? 各段寄存器有什么意义?

【解】8086 CPU 内部数据结构是16位的,即所有的寄存器都是16位的,而外部寻址空间为1MB ,即需要20位地址线。为了能用内部寄存器中的16位地址来寻址1MB 空间,8086将1MB 空间以16字节为一个内存节,共分成64K 个节。节的起始地址分别为00000H 、00010H 、00020H 、„、FFFF0H ,称为段基址。节的起始地址的后4位二进制数为全0,称为节的段地址。

用于存放段地址的寄存器称为段寄存器,根据其主要用途,分为代码段寄存器CS 、数据段寄存器DS 、堆栈段寄存器SS 、附加段寄存器ES 。

代码段寄存器CS :用来存放代码段存储区域的起始地址。 数据段寄存器DS :数存放程序的数据存储区的起始地址。

堆栈段寄存器SS :用来存放堆栈存储区的起始地址。由堆栈段寄存器SS 与堆栈指针寄存器SP 来确定当前堆栈指令的操作地址。

附加段寄存器ES :附加段是为某些字符串操作指令存放目的操作数而设置的一个附加的数据段,附加段寄存器用来存放该附加数据段存储区域的起始地址。

12. 8086的I/O端口寻址范围是多少?什么是I/O端口与内存分别独立编址?

【解】8086的I/O端口使用16位地址A15~A0,I/O端口地址范围为0000H ~FFFFH ,可寻址空间为64KB 。

I/O端口与内存分别独立编址时,指令访问的是I/O端口还是内存,由地址信息无法区分,由M/IO 信号区分是I/O端口的寻址与内存寻址 。 14. 什么是基地址和位移量,它们之间有何联系?

【解】8086 CPU 内部数据结构是16位的,而外部寻址空间为1MB 。为了能用内部寄存器中的16位地址来寻址1MB 空间,8086将1MB 空间以16字节为一个内存节(Paragraph ),共分成64K 个节。节的起始地址称为段基址。偏移地址是存储地址对段首的偏移量。偏移地址从0000H ~FFFFH 变化,对应64KB 的空间。

它们之间有何联系:物理地址=基地址×16+位移量。

15. 设CS=1200H,IP=0FF00H,此时指令的物理地址是多少?指向这一物理地址的CS 和IP 的值是惟一的吗?

【解】指令的物理地址:12000H +0FF00H =21F00H

指向这一物理地址的CS 和IP 的值不是惟一的。

16. 若CS=1000H,指出当前代码段可寻址的存储空间的大小和地址范围。 【解】当前代码段可寻址的存储空间的大小:64KB

当前代码段可寻址的存储空间的地址范围:10000H ~1FFFFH

1. 若DS=3000H,BP=2000H,SI=1000H,[32000H]=00H,[32001H]=40H,SS=3000H,[31000H]=20H,[31001H]=60H,[33000H]=50H,[33001H]=60H,说明下列各条指令执行后,AX 中的内容是什么?并说明各条指令中源操作数的寻址方式。

(1) MOV AX,DS (3) MOV AX,[SI]

(2) MOV AX,[2000H] (4) MOV AX,[BP]

(5) MOV AX,[BP+SI]

【解】

(1) AX =3000H 寄存器寻址 (2) AX =4000H 直接寻址 (3) AX =6020H 寄存器间接寻址 (4) AX =4000H 寄存器间接寻址 (5) AX =6020H 基址加变址寻址 2. 指出下列指令中的非法指令。

(1) MOV BX ,AL (3) PUSH 4567H

(5) ADD AL ,148H (7) MOV BH ,SI

【解】非法指令: (1) MOV BX,AL (3) PUSH

4567H

AX

BX 和AL 的长度不一致

CS 段寄存器不能作目的操作数

只能将寄存器或存储单元的内容压入堆栈,不能是立即数 运算溢出

立即数不能直接传送给DS 段寄存器 BH 和SI 的长度不一致 目的操作数不能是立即数

(2) MOV CS,2000H (4) XCHG VAR1,VAR2 (5) ADD AL,148H (7) MOV BH,SI (8) SUB 38H,AL (1) PUSH

(6) MOV DS,2000H

(2) MOV CS,2000H (4) XCHG VAR1,VAR2 (6) MOV DS,2000H (8) SUB 38H,AL

两个存储单元之间不能直接交换数据

3. 若SP=2000H,AX=3355H,BX=4466H,试指出下列指令或程序段执行后有关寄存器的内容。

执行后AX=?,SP=?

PUSH BX POP DX POP CX

(2) PUSH AX

执行后AX=?,CX=?,DX=?,SP=?

(2) 执行后AX=3355H,CX=3355H,DX=4466H,SP=2000H

【解】(1) 执行后AX=3355H,SP=1FFEH

4. 请按下面的要求写出相应的汇编指令或指令序列。

(1) 将1234H 送入DS 中。

(2) 将5678H 与AX 中的数相加,结果放在AX 中。 (3) 将DATAX 和DATAY 相加,其和放在DATAY 中。 (4) 将AX 中的高4位变为全0。 (5) 将BX 中的低2位变为全1。 (6) 将CX 中的D3~D7位取反。

【解】

(1)

MOV AX,1234H

MOV DS,AX

(2) A DD AX,5678H (3) M OV AX,DATAX

ADD AX,DATAY MOV DATAY,AX

(4) A ND AX ,0FFFH (5) O R AX ,0003H (6) MOV AX,CX

AND AX,07H XOR CX,0FFFFH AND CX,0FFF8H ADD CX,AX

5. 若AL=0FFH,BL=03H,指出下列指令执行后标志AF 、OF 、ZF 、SF 、PF 、CF 的状态。

(1) ADD BL,AL (3) SUB BL,AL (5) AND BL,AL (7) CMP BL,AL

【解】执行后:

(1) ADD (2) INC (3) SUB (4) NEG (5) AND (6) MUL (7) CMP

BL ,AL BL BL ,AL BL BL ,AL BL BL ,AL

AF 1 0 1 1 任意值 任意值 1 任意值 任意值 任意值

OF 0 0 0 0 0 1 0 1 0 0

ZF 0 0 0 0 0 任意值 0 任意值 0 0

SF 0 0 0 1 0 任意值 0 任意值 1 1

PF 0 0 0 0 1 任意值 0 任意值 1 1

CF 1 不影响 1 1 0 1 1 1 0 0

(2) INC BL (4) NEG BL (6) MUL BL (8) IMUL BL

(9) OR BL,AL (10)XOR BL,BL

(8) IMUL BL (9) OR BL,AL (10) XOR BL,BL

9. 执行下列程序段,指出各相关寄存器的内容。

MOV DEC SUB AND MOV SAL

AX,0A0BH AX AX,0FFH AX,00FFH CL,3 AL,CL

ADD AL,25H

XCHG AL,AH PUSH AX POP INC

BX BL

【解】各相关寄存器的内容:

MOV DEC SUB AND MOV SAL ADD

AX,0A0BH ;AX :0A0BH AX

;AX :0A0AH

;AX :090BH ;AX :000BH ;CL :03H ;AX :0058H

AX,0FFH AX,00FFH CL,3 AL,CL AL,25H

;AX :007DH

;AX :7D00H ;AX :7D00H

XCHG AL,AH PUSH AX POP INC

BX BL

;BX :7D00H

;BX :7D01H

10. 用串操作指令将100H 个字符从2100H 处搬到1000H 处,并且从中检索与AL 中所存字符相同的存储单元,并将该单元的内容替换成空格,本程序只替换检索到的第一个相同的单元。请在下列空格中填入合适的指令,使程序段完成上述功能。

MOV SI,2100H (1) MOV CX,100H CLD

(2) MOV DI,1000H MOV CX,100H (3) JNZ K1

(4) MOV [DI],20H K1: ┇

【解】

(1) MOV DI,1000H (2) REP MOVSB (3) REPNE SCASB (4) DEC DI

12. 编程求出AX 中存放的16位二进制数中‘1’的个数,将其存入CL 中(若

AX=[**************]1B则将8存入CL )。 【解】程序段如下:

MOV CX,16 XOR BX,BX

L1: SHL AX,1

;最低位移入CF RCL BL,1

;CF 移入最低位

ADD BH,BL XOR BL,BL LOOP L1 MOV CL,BH

1. 下列语句在存储器中分别为变量分配多少字节?

VR1 DW 9

VR2

DW 4 DUP(?)

CONT EQU 10 VR3 DD CONT DUP(?)

VR4 DB 2 DUP(?,CONT DUP(0)) VR5

DB ‘HOW ARE YOU?’

【解】VR1:2B ; VR2:8B ; CONT:1B ; VR3:40B ;7. 对下面程序进行注释,并说明其功能。

DATA SEGMENT A

DB ‘123ABC ’ DATA ENDS CODE

SEGMENT

ASSUME CS :CODE ,DS :DATA

START :

MOV AX,DATA MOV DS,AX LEA BX,A MOV CX,6 MOV AH,2

LP :

MOV AL,[BX] XCHG AL,DL INC BX INT 21H LOOP LP MOV AH,4CH INT 21H

CODE

ENDS END START

【解】注释如下:

:44B ;:12B VR4 VR5

DATA SEGMENT A

;数据段开始

DB ‘123ABC ’

;数据段结束

;代码段开始

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE ,DS :DATA

START :

MOV AX,DATA MOV DS,AX LEA BX,A MOV CX,6 MOV AH,2

LP : MOV AL,[BX]

XCHG AL,DL INC BX

INT 21H

;系统功能调用,功能号:2 ,

;将字符1、2、3、“A ”、“B ”、“C ”送屏幕显示

LOOP LP

;CX =6,循环6次 ;装填数据段

;传送变量的地址

MOV AH,4CH INT 21H

CODE ENDS

;返回DOS

;代码段结束

;源程序结束

END START

程序的功能:显示从A 开始的6个字节单元中的字符。 11. 分析下列程序,指出运行结果。

DATA SEGMENT SUM

DW ?

DATA ENDS CODE SEGMENT

ASSUME CS:CODE ,DS :DATA

START :

MOV AX,DATA MOV DS,AX XOR AX,AX MOV CX,10 MOV BX,2

LP : ADD AX,BX

INC BX INC BX LOOP LP MOV SUM,AX MOV AH,4CH INT 21H

CODE ENDS

END START

请问:

(1) 该程序完成的功能是_______________________________。 (2) 程序执行后,SUM 单元的内容是_______________。 【解】

(1) 该程序完成的功能是计算0~20的偶数和。 (2) 程序执行后,SUM 单元的内容是110。

12. 从ARRAY 开始的单元中存有10个16位无符号数,试编一完整程序找出其中最小数并存入MIN 单元。 【解】程序代码如下:

DATA SEGMENT

;数据段开始

ARRAY DW 0F454H ,4540H ,0D214H ,8354H ,8210H ,

0A673H,5656H ,0021H ,0567H ,4228H

DW ?

;数据段结束

;代码段开始

MIN

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE ,DS :DATA

START :

MOV AX,DATA MOV DS,AX LEA BX,ARRAY MOV AX,[BX] MOV CX,9

LP1: INC BX

INC BX CMP AX,[BX] JB CONT1

;AX=[BX],AX ←[BX]

;装填数据段

;传送变量的地址

MOV AX,[BX]

CONT1:

LOOP LP1 MOV MIN,AX MOV AH,4CH INT 21H

CODE ENDS

;返回DOS

;代码段结束

;源程序结束

END START

13. 从DAT 开始的数据区中放有100个8位的无符号数,编程统计其中奇数的个数,将结果存入RESULT 单元。 【解】程序代码如下:

DATA SEGMENT DAT

;数据段开始

DB 26,45,44,32,90,2,1,81,2,120,5„„

RESULT DB ?

;数据段结束

;代码段开始

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE ,DS :DATA

START :

MOV AX,DATA MOV DS,AX LEA BX,DAT XOR AX,AX XOR DX,DX MOV DL,2 MOV CX,100

LP1: MOV AL,[BX]

DIV DL CMP AH,0 JE CONT1 INC DH

CONT1:

INC BX LOOP LP1 MOV RESULT,DH MOV AH,4CH INT 21H

CODE ENDS

;返回DOS

;DH 用作计数器

;余数在AH 中

;装填数据段 ;传送变量的地址

;代码段结束

;源程序结束

END START

4. 利用若干2114芯片和2716芯片采用75LS138译码,构成7K 容量的存储器,要求有5KRAM

及2KROM ,请设计电路图。

【解】2114芯片为1K ×4的存储芯片,所以每两片构成一个1K 容量的存储器。5KRAM 需要10个2114芯片。2KROM 需要1个2716芯片。电路图如图6-5所示。其中ROM 的地址范围是:80000H ~807FFH ,RAM 的地址范围是:80800H ~81BFFH 。

图6-5 存储器连接示意图

1. CPU与外设交换数据的方式有几种,各有什么特点?

【解】CPU 与外设交换数据的方式有两种:程序控制传递方式和DMA (直接存储器存取)传递方式,其中程序控制的数据传送分为无条件传送、查询传送和中断传送三种。

程序控制传递方式的特点是,以CPU 为中心,数据传送的控制来自CPU ,通过预先编制好的输入或输出程序(传送指令和I/O指令)实现数据的传送 。这种传送方式的数据传送速度较低,传送路径经过CPU 内部的寄存器,同时数据的输入输出的响应比较慢。

DMA (Direct Memory Access )传递方式是一种不需要CPU 干预也不需要软件介入的高速数据传送方式。由于CPU 只启动而不干预这一传送过程,同时整个传送过程只由硬件完成而不需要软件介入,所以其数据传送速率可以很高。 4. 什么叫中断,采用中断技术有哪些好处?

【解】中断是外设随机地(指主程序运行到任何一条指令时)或程序预先安排产生中断请求信号,暂停CPU 正在运行的程序,转入执行称为中断服务的子程序,中断服务完毕后,返回到主程序被中断处继续执行的过程。

CPU 与外设采用中断技术交换数据,可以克服无条件传递和查询传送的缺点,即CPU 和外设只能串行工作。这样可以提高系统的工作效率,充分发挥CPU 的高速运算的能力。 5. 什么叫中断系统,它具备哪些功能?

【解】计算机系统中完成中断处理过程的软硬件称为中断系统。

中断系统应具有以下功能:

(1) 能实现中断响应、中断服务和中断返回

当有中断源发出中断请求时,CPU 能决定是否响应此中断,若接受这个中断请求,CPU 能在保护断点(现行CS :IP 值)后,转去执行相应的中断服务程序,中断处理完成后能恢复断点,继续执行程序。

(2) 能实现中断优先级排队

当两个或多个中断源同时提出中断请求时,CPU 要能根据各中断请求的轻重缓急程度,分别处理,即给每个中断源一个优先级别,保证首先处理优先级高的中断申请。

(3) 能实现中断嵌套

若中断处理过程中,又有新的优先级较高的中断请求,且当中断允许时,CPU 应能暂停正在执行的中断服务程序,转去响应与处理优先级较高的中断申请,待处理结束后,再返回原先较低的中断处理过程。

6. CPU在什么情况下才响应中断,中断处理过程一般包括哪些步骤?

【解】CPU 每执行完一条指令后,当查询到有中断请求且此时CPU 允许中断(即中断允许标志位IF=1,开中断),CPU 才能响应中断。

CPU 中断处理的具体过程一般包括以下步骤:中断请求、中断判优、中断响应、中断处理及中断返回。

7. 何谓非屏蔽中断和可屏蔽中断?

【解】何谓非屏蔽中断和可屏蔽中断都是硬件中断(也称外部中断)。非屏蔽中断通过CPU 的NMI 端引入,它不受内部中断允许标志位IF 的屏蔽,一般在一个系统中只允许有一个非屏蔽中断。可屏蔽中断是通过CPU 的INTR 引入 ,它受内部中断允许标志IF 的控制。只有在IF=1时,CPU 才能响应中断源的请求。当IF=0时,中断请求被屏蔽。通常在一个系统中,通过中断控制器(8259A )的配合,可屏蔽中断可以有一个或多个。 10. 简述8086/8088CPU的中断结构及中断处理过程。

【解】8086/8088CPU可以处理256种类型的中断源,这些中断源可分为硬件中断和软件中断两大类。CPU 响应中断后,把正在执行程序的当前地址(CS ∶IP )压入堆栈保存,将中断服务程序入口地址送入CS ∶IP ,由此开始执行中断服务程序。在8086系统中,允许引入256种类型中断源(类型码为0~255),相应有256个中断服务程序首址。存放中断地址的一段内存空间称中断向量表。断类型码与中断向量所在位置(中断向量地址指针)之间的对应关系为:中断向量地址指针=4*中断类型码

内部中断的处理过程:

(1)CPU 取得中断类型码,将类型码乘4作为向量表指针。(2)把CPU 标志寄存器入栈,保护各个标志,此操作类似于PUSHF 指令。(3)清除IF 和TF 标志,屏蔽新的INTR 中断和单步中断。(4)保存断点,即把断点处IP 和CS 压栈,先压CS 值后压IP 值。(5)从中断向量表中取中断服务程序入口地址分别送入IP 和CS 中。(6)按新的地址执行中断服务程序。

CPU 执行中断服务程序的最后一条中断返回指令IRET 后,返回到断点处继续执行原程序。 11. 8086/8088的中断系统分哪几类,其优先顺序如何?

【解】8086/8088CPU可以处理256种类型的中断源,这些中断源可分为硬件中断和软件中断两大类。硬件中断是由外部硬件产生的,它又可分为非屏蔽中断和可屏蔽中断。一般在一个系统中只允许有一个非屏蔽中断,可屏蔽中断可以有一个或多个。软件中断是CPU 根据软件的某些指令或者软件对标志寄存器某个标志位的设置而产生的。

8086/8088系统中,中断优先权排队次序从高到低为:除法出错、指令中断、溢出中断、非屏蔽中断、可屏蔽中断、单步中断。

12. 中断入口地址表的功能是什么?已知中断类型码分别为84H 和0FAH ,它们的中断入口在中断入口地址表的什么位置上?

【解】CPU 响应中断后,把正在执行程序的当前地址(CS :IP )压入堆栈保存,将中断服务程序入口地址送入CS :IP ,由此开始执行中断服务程序。在8086系统中,允许引入256种

类型中断源(类型码为0~255),相应有256个中断服务程序首址。这些地址就存放在中断入口地址表中。

中断类型码分别为84H 的中断源所对应的中断服务程序首址存放在0000∶0210H (4×84H =210H )开始的4个单元中。

中断类型码分别为0FAH 的中断源所对应的中断服务程序首址存放在0000∶03E8H (4×0FAH =3E8H )开始的4个单元中。

17. 试编写出只有一片8259A 的8086系统中8259A 的初始化程序。8259A 的地址为02C0H 和02C1H ,要求:(1)中断请求采用电平触发。(2)IRQ 请求的中断类型是16。(3)采用缓冲器方式。(4)采用普通的EOI 命令。 【解】

ICW 1的内容:1BH

A 0 偶地址

D 7 D 6 D 5 D 4 识别位

D 3 电平触发

D 2 调用地址间隔为8

D 1 单片

D 0

8086/8088系统必须设ICW 4。

8086/8088系统无效,置0。

ICW 2的内容:10H

A

0 奇地址

D 7 中断类型

D 6 D 5 D 4 D 3 D 2 自动填入

D 1 D 0 ICW 4

的内容:0DH

A 0 奇地址

D 7 D 6 D 5 D 4 全嵌套方式

D 3 D 2

D 1 正常EOI 结束

D 0 工作于8086/8088系统

未定义,置0。 缓冲方式/主

根据系统要求初始化编程如下:

MOV AL,1BH MOV DX,02C0H OUT DX,AL MOV AL,10H MOV DX,02C1H OUT DX,AL MOV AL,0DH OUT DX,AL

;设置ICW 4,全嵌套方式,缓冲方式,正常EIO

;设置ICW 2,类型码为10H (IR 0)。

;设置ICW 1为电平触发,单片8259A ,需要ICW 4。

1.填空题

(1) 8255A 内部包括两组控制电路,其中A 组控制______的工作方式和读写操作,B 组控制

______的工作方式和读写操作。

(2) 8255A 的端口A 工作于方式2时,使用端口C 的______位作为与CPU 的外部设备的联络信

号。

(3) 当8255A 的端口A 和端口B 均工作于方式1输出时,端口C 的PC 4和PC 5可以作为_____

使用。

(4) 8255A 的端口A 工作于方式2时,端口B 可以工作于______。

(5) 8255A 中,可以按位进行置位/复位的端口是______,其置位/复位操作是通过向______

口地址写入_______实现的。

(6) 8251A 工作在同步方式时,最大波特率为______;工作在异步方式时,最大波特率为

______。

(7) 8251A 工作在异步方式时,每个字符的数据位长度可以是______,停止位长度可以是

______。

(8) 8251A 从串行输入线接收到一个字符后,将信号______置为有效。

(9) 8251A 工作在同步方式时,同步检测引脚SYNDET 可以作为输入或者输出信号使用。若工

作在外同步方式,该引脚作为______;若工作在内同步方式,该引脚作为______。 (10) 【解】

(1) 端口A 、端口C 高4位(PC 7~PC 4)

端口B 、端口C 低4位(PC 3~PC 0) (2) PC 3~PC 7 (3) STB

A

8253工作于方式0下,控制信号GATE 变成低电平后,对计数器的影响是______。

(端口A 的选通输入信号)、IBF A (输入缓冲器满信号)

(4) 方式0或方式1 (5) 端口C ;控制;控制字 (6) 64 Kbit/s ;19.2 Kbit/s

(7) 5、6、7、或8位 ;1个、1.5或2位 (8) R X RDY

(9) 输入端;输出端 (10)

计数暂停

2.已知8255A 的端口A 、B 、C 和控制口地址分别为120H 、122H 、124H 和126H ,试按下列要求设计初始化程序:

(1) 将端口A 和端口B 设置成方式0,端口A 、端口C 作为输出口,端口B 作为输入口。 (2) 将端口A 设置成方式2,端口B 设置成方式1,端口B 作为输出口。

(3) 将端口A 和端口B 均设置成方式1的输入状态,且PC6、PC7设置成输出位。 【解】

(1) 方式选择控制字的内容:82H

D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0

控制字标志 端口A 设置成方式0 端口A 为输出口

端口C (7-4)作为输出口

端口B 设置成方式0

端口B 为输入口

端口C (3-0)作为输出口

初始化程序:

MOV AL,82H ;方式选择控制字送AL

OUT 126H,AL ;方式选择控制字输出给8255A 控制端口

(2) 方式选择控制字的内容:0C4H

D 7 控制字标志

D 6 D 5 D 4

D 3

D 2 端口B 设置成方式1

D 1 端口B 为输出口

D 0

端口A 设置成方式2

初始化程序:

MOV AL,0C4H ;方式选择控制字送AL

OUT 126H,AL ;方式选择控制字输出给8255A 控制端口

(3) 方式选择控制字的内容:0B6H

D 7 控制字标志

D 6 D 5 D 4 端口A 为输入口

D 3 端口C (7-4)作为输出口

D 2 端口B 设置成方式1

D 1 端口B 为输入口

D 0

端口A 设置成方式1

初始化程序:

MOV AL,0B6H ;方式选择控制字送AL

OUT 126H,AL ;方式选择控制字输出给8255A 控制端口

5. 图8-80(见教材)是一个检测开关状态并控制相应的继电器通断的电路。要求当开关S 0~S 7之一闭合时,使相应的继电器K 0~K 7之一吸合(即让驱动电流流过继电器线圈);若开关处于断开状态,则使相应的继电器释放。系统每隔20ms 应检测一遍开关状态,并对继电器做相应控制。图中8255A 的4个端口地址分别为2C0H 、2C2H 、2C4H 和2C6H 。试完成: (1) 8255A 的初始化编程(初始状态所有继电器的线圈均无电流通过)。

(2) 设系统中具有一个2MHz 的时钟信号源,另由一片8253来实现20ms 的定时,每当20ms

到时自动向CPU 申请中断。编写中断服务程序,并在其中完成开关的检测和继电器的控制。 【解】

(1) 8255A 的初始化编程:

8255A 的方式选择控制字的内容:82H

D 7 控制字标志

D 6 D 5 D 4 端口A 为输出口

D 3 端口C

D 2 端口B 设置成方式0

D

1 端口B 为输入口

D 0 端口C

端口A 设置成方式0

初始化程序:

MOV AL,82H OUT 2C6H,AL MOV AL,00H OUT 2C0H,AL

;方式选择控制字送AL

;方式选择控制字输出给8255A 控制端口 ;

; 8255A PA端口输出0,使所有继电器的线圈均无电流通过

(2) 开关S 0~S 7之一闭合时,相应的PB 0~PB 7的输入为1;PA 0~PA 7输出高电平(1)时,可以

使相应的继电器K 0~K 7吸合; 中断服务程序:

PUSH AX IN AL,2C2H

;从端口B 输入数据 ;从端口A 输出数据

OUT 2C0H,AL POP AX STI

IRET

; 中断返回

6.设8086系统中有一片8251A 芯片,其端口地址分别为130H 和132H 。请按以下要求分别编出8251A 的初始化程序:

(1) 全双工异步方式通信,波特率系数为16,每个字符数据为7位,偶校验,1.5个停止位,

传送过程错误不复位,且不使用调制解调器。

(2) 全双工同步方式通信,每个字符数据为8位,不带校验,内同步,两个同步字符分别为

EFH 和FEH 。 【解】

(1) 8251A的方式选择控制字的内容:0BAH

D 7 1.5个停止位

D 6 D 5 偶校验

D 4 D 3 D 2 D 1 D 0

每个字符数据为7位 波特率系数为16

初始化程序:

MOV AL,0BAH OUT 132H,AL

;方式选择控制字送AL

;方式选择控制字输出给8255A 控制端口

(2) 8251A的方式选择控制字的内容:0CH

D 7 D 6 D 5 无校验

D 4 D 3 D 2 D 1 同步方式

D 0

内同步,两个同步字符 每个字符数据为8位

初始化程序:

MOV AL,40H OUT 132H,AL MOV AL,0CH OUT 132H,AL MOV AL,0EFH

;复位8251A

;方式选择控制字送AL

;方式选择控制字输出给8255A 控制端口

OUT 132H,AL MOV AL,0FEH OUT 132H,AL

;写入第一个同步字符

;写入第二个同步字符

8.已知某系统中8253的口地址为1E0H 、1E2H 、1E4H 、1E6H ,系统时钟为2MHz 。试编写8253的初始化程序,使其通道0产生周期为1ms 的方波输出。

【解】通道0工作于方式3(方波发生器),计数值为2000(07D0H ) 初始化程序如下:

MOV AL,36H ;控制字送AL OUT 1E6H,AL MOV AL,0D0H OUT 1E0H,AL MOV AL,07H OUT 1E0H,AL

;向控制口写入控制字

;低8位计数值是0D0H

;向通道0写入计数初值的低8位

;高8位计数值为07H

;向通道0写入计数初值的低8位

第1章 计算机基础知识

3. 填空:

(1) (1234)10=( )2=( )16

(2) (34.6875)10=( )2=( )16 (3) (271.33)10=( )2=( )16

(4) ([1**********]1)2=( )10=( )16 (5) (1AB.E)16=( )10=( )2 (6) (10101010.0111)2=( )10=( )16 【解】

(1) (1234)10=( [1**********] )2=( 4D2 )16 (2) (34.6875)10=( 100010.1011 )2=( 22.B )16 (3) (271.33)10=( 100001111.010101 )2=( 10F.54 )16 (4) ([1**********]1)2=( 2761 )10=( AC9 )16 (5) (1AB.E)16=( 427.875 )10=(110101011.111 )2 (6) (10101010.0111)2=( 170.4375 )10=( AA.7 )16

4. 已知X=36,Y=-136,Z=-1250,请写出X 、Y 、Z 的16位原码、反码和补码。 【解】

[X]原=0000 0000 0010 0100 [Y]原=1000 0000 1000 1000 [Z]原=1000 0100 1110 0010 [X]反=0000 0000 0010 0100 [Y]反=1111 1111 0111 0111 [Z]反=1111 1011 0001 1101 [X]补=0000 0000 0010 0100 [Y]补=1111 1111 0111 1000 [Z]补=1111 1011 0001 1110

5. 已知[X]补=01010101B,[Y]补=10101010B,[Z]补=[**************]1B,求X 、Y 、Z 及X +Y 、Y -Z 的十进制值为多少?

【解】Y -Z 运算时Y 需要扩展符号位 X =85 Y =-86 Z =-28673

X +Y =01010101B +10101010B =11111111B =-1 Y -Z =11111111 10101010B-10001111 11111111B

=11111111 10101010B+01110000 00000001B =0110 1111 1010 1011B =28587

8. 将下列8421BCD 码表示为十进制数和二进制数:

(1) 01111001 (2) [1**********]1 (3) [1**********]1 (4) [1**********]0 【解】

(1) 79, 1001111B (2) 285, 100011101B (3) 607, 1001011111B (4) 590,

1001001110B

12. 微型计算机由哪几部分组成,各部分的功能是什么?

【解】微型计算机由运算器、控制器、存储器、输入设备、输出设备五大部分组成。

运算器完成算术运算和逻辑运算;控制器分析命令并指挥协调各部件统一行动完成命令规定的各种动作或操作;存储器存放原始数据、中间结果和最终结果以及程序;输入设备、输出设备与外界交换信息。

13. CPU在内部结构上由哪几部分组成,CPU 应具备什么功能? 【解】微处理器(CPU )由运算器和控制器组成。

CPU 应具备的功能:对数据进行处理并对处理过程进行控制。

17. 如果某几种CPU 的地址总线分别有8、16、20、32条,它们各自能寻址的存储器的容量是多少?

【解】地址总线8条: 28=256B

地址总线16条:2=64KB 地址总线20条:220=1MB 地址总线32条:232=4GB

18. 什么是硬件,什么是软件,硬件和软件的关系如何?

【解】硬件是指组成计算机的各种电子的、机械的、光磁学的物理器件和设备,它们构成了计算机的物理实体。软件则是指为了运行、管理和维护计算机而编制的各种程序及其有关的文档资料的总称。硬件是基础,软件是灵魂,两者既相互独立,又相互依存,缺一不可。硬件和软件合起来才组成一个完整的计算机系统。 19. 说明位、字节、字长的概念及它们之间的关系。

【解】(1) 位(bit )。位是计算机所能表示的最基本最小的数据单位。它只能有两种状态“0”和“1”,即二进制位。

(2) 字(Word )。计算机中作为一个整体参与运算、处理和传送的一串二进制数,是计算机中信息的基本单位。

(3) 字长(Word Length)。计算机中每个字所包含的二进制位数称为字长。 它们之间的关系:字由位构成,字长指每个字所包含的位的个数。

1. 8086 CPU 由哪两部分构成,它们的主要功能是什么? 在执行指令期间,EU 能直接访问存储器吗,为什么?

【解】8086CPU 由执行部件(EU )和总线接口部件(BIU )两部分组成。

执行部件由内部寄存器组、算术逻辑运算单元(ALU )与标志寄存器(FR )及内部控制逻辑等三部分组成。寄存器用于存储操作数和中间结果;算术逻辑单元完成16位或8位算术逻辑运算,运算结果送上ALU 内部数据总线,同时在标志寄存器中建立相应的标志;内部控制

16

逻辑电路的主要功能是从指令队列缓冲器中取出指令,对指令进行译码,并产生各种控制信号,控制各部件的协同工作以完成指令的执行过程。

总线接口部件(BIU )负责CPU 与存储器、I/O设备之间传送数据、地址、状态及控制信息。

每当EU 部件要执行一条指令时,它就从指令队列头部取出指令,后续指令自动向前推进。EU 要花几个时钟周期执行指令,指令执行中若需要访问内存或I/O设备,EU 就向BIU 申请总线周期,若BIU 总线空闲,则立即响应,若BIU 正在取一条指令,则待取指令操作完成后再响应EU 的总线请求。

3. 8086 CPU 中有哪些寄存器,各有什么用途? 【解】8086共有8个16位的内部寄存器,分为两组:

① 通用数据寄存器。四个通用数据寄存器AX 、BX 、CX 、DX 均可用作16位寄存器也可用作8位寄存器。用作8位寄存器时分别记为AH 、AL 、BH 、BL 、CH 、CL 、DH 、DL 。

AX (AH 、AL )累加器。有些指令约定以AX (或AL )为源或目的寄存器。实际上大多数情况下,8086的所有通用寄存器均可充当累加器。

BX (BH 、BL )基址寄存器。BX 可用作间接寻址的地址寄存器和基地址寄存器,BH 、BL 可用作8位通用数据寄存器。

CX (CH 、CL )计数寄存器。CX 在循环和串操作中充当计数器,指令执行后CX 内容自动修改,因此称为计数寄存器。

DX (DH 、DL )数据寄存器。除用作通用寄存器外,在I/O指令中可用作端口地址寄存器,乘除指令中用作辅助累加器。

② 指针和变址寄存器。

BP (Basic Pointer Register)基址指针寄存器。 SP (Stack Pointer Register)堆栈指针寄存器。 SI (Source Index Register)源变址寄存器。 DI (Destination Index Register)目的变址寄存器。

BP 、SP 称为指针寄存器,用来指示相对于段起始地址的偏移量。BP 和SP 一般用于堆栈段。SI 、DI 称为变址寄存器,可用作间接寻址、变址寻址和基址变址寻址的寄存器。SI 一般用于数据段,DI 一般用于数据段或附加段。

标志寄存器(FR ):是一个16位寄存器,算术逻辑单元进行算术逻辑运算后,在标志寄存器中建立相应的标志。

段地址寄存器(CS 、DS 、SS 、ES )。用于存放段地址,根据其主要用途,分为代码段寄存器CS 、数据段寄存器DS 、堆栈段寄存器SS 、附加段寄存器ES 。

代码段寄存器CS :代码段是存放程序代码的存储区域,代码段寄存器用来存放代码段存储区域的起始地址。

数据段寄存器DS :数据段是存放程序中所使用的数据的存储区域,数据段寄存器用来存放程序的数据存储区的起始地址。

堆栈段寄存器SS :堆栈段寄存器用来存放堆栈存储区的起始地址。由堆栈段寄存器SS 与堆栈指针寄存器SP 来确定当前堆栈指令的操作地址。

附加段寄存器ES :附加段是为某些字符串操作指令存放目的操作数而设置的一个附加的

数据段,附加段寄存器用来存放该附加数据段存储区域的起始地址。

指令指针寄存器(IP )。又称程序计数器,是16位寄存器。IP 中存放当前将要执行的指令的有效地址,每取出一条指令IP 自动增量,即指向了下一条指令。

指令队列缓冲器:是一个与CPU 速度相匹配的高速缓冲寄存器。在EU 执行指令的同时,BIU 可以从内存中取出下一条或下几条指令放到指令缓冲器中,EU 执行完一条指令后,可以立即从指令缓冲器中执行下一条指令。

4. 状态标志与控制标志有何不同,程序中是怎样利用这两类标志的?标志寄存器有哪些标志位,各在什么情况下置位?

【解】状态标志根据算术逻辑运算结果由硬件自动设定,它们反映运算结果的某些特征或状态,可作为后继操作(如条件转移)的判断依据。控制标志由用户通过指令来设定,它们可控制机器或程序的某些运行过程。

标志寄存器的内容如下: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

CF (Carry Flag)进位标志,反映在运算结果的最高位有无进位或借位。如果运算结果的最高位产生了进位(加法)或借位(减法)则CF=1,否则CF=0。

PF (Parity Flag)奇偶标志,反映运算结果中“1”的个数的奇偶性,主要用于判断数据传送过程中是否出错。若结果的低8位中有偶数个“1”则PF=1,否则PF=0。

AF (Auxiliary Carry Flag)辅助进位标志,又称半进位标志。加减运算时,若D 3向D 4

产生了进位或借位则AF=1,否则AF=0。在BCD 码运算时,该标志用于十进制调整。

ZF (Zero Flag)零标志,反映运算结果是否为0。 若结果为零则ZF=1,否则ZF=0。 SF (Sign Flag )符号标志,反映运算结果最高位即符号位的状态。如果运算结果的最高位为1则SF=1(对带符号数即为负数),否则SF=0(对带符号数即为正数)。

OF (Overflow Flag )溢出标志,反映运算结果是否超出了带符号数的表数范围。若超出了机器的表数的范围,即为产生溢出,则OF=1,否则OF=0。

DF (Direction Flag )方向标志,用于串处理指令中控制串处理的方向。当DF=1时,每次操作后变址寄存器SI 、DI 自动减量,因此处理方向是由高地址向低地址方向进行。当DF=0,则SI 、DI 自动增量,处理方向由低地址向高地址方向进行。该标志由方向控制指令STD 或CLD 设置或清除。

IF (Interrupt Flag )中断允许标志,用于控制CPU 是否允许响应可屏蔽中断请求。IF=1为允许响应可屏蔽中断请求,IF=0则禁止响应可屏蔽中断请求。该标志可由中断控制指令STI 或CLI 设置或清除。

TF (Trap Flag)陷阱标志,用于单步操作。TF=1时,每执行一条用户程序指令后自动产生陷阱,进入系统的单步中断处理程序。TF=0时,用户程序会连续不断地执行,不会产生单步中断。

5. 求出下列运算后各个标志的状态,并说明进位标志和溢出标志的区别。 (1) 1278H + 3469H (2) 54E3H - 27A0H (3) 3881H + 3597H (4) 01E3H - 01E3H

【解】CF 进位标志,反映在运算结果的最高位有无进位或借位。OF 溢出标志,反映运算结果是否超出了带符号数的表数范围。机器实际处理时判断是否溢出的方法是根据最高位的进位(CF )与次高位的进位是否相同来确定,若两者不相同则OF=1(表示有溢出),否则OF=0(表示无溢出)。 (1)

0001 0010 0111 1000 + 0011 0100 0110 1001

0100 0110 1110 0001

OF DF IF TF SF ZF -- AF -- PF -- CF

(2)

0101 0100 1110 0011 0010 1100 0100 0011

OF DF IF TF SF ZF -- AF -- PF -- CF

(3)

0011 1000 1000 0001 0110 1110 0001 1000

OF DF IF TF SF ZF -- AF -- PF -- CF

(4)

0000 0001 1110 0011 - 0000 0001 1110 0011 0000 0000 0000 0000 运算后各个标志的状态:

OF DF IF TF SF ZF -- AF -- PF -- CF

+ 0011 0101 1001 0111 运算后各个标志的状态:

- 0010 0111 1010 0000 运算后各个标志的状态:

运算后各个标志的状态:

6. 8086 CPU 中存储器的逻辑地址和物理地址之间有什么关系,各有多少值?

【解】物理地址为某一个存储单元的实际地址,对于8086它是一个20位的地址。物理地址从00000H ~FFFFFH 变化,对应1MB 的空间。

逻辑地址,又称偏移地址或有效地址,即对段首的偏移量。偏移地址从0000H ~FFFFH 变化,对应64KB 的空间。

物理地址的获得方法是:将段寄存器的内容左移4位(即×16),与逻辑地址相加,得到

20位物理地址。根据寻址方式的不同,偏移地址可以来自程序计数器(IP )或其它寄存器。 7. 8086CPU使用的存储器为什么要分段,怎样分段?为什么要设置段寄存器,有几个段寄存器? 各段寄存器有什么意义?

【解】8086 CPU 内部数据结构是16位的,即所有的寄存器都是16位的,而外部寻址空间为1MB ,即需要20位地址线。为了能用内部寄存器中的16位地址来寻址1MB 空间,8086将1MB 空间以16字节为一个内存节,共分成64K 个节。节的起始地址分别为00000H 、00010H 、00020H 、„、FFFF0H ,称为段基址。节的起始地址的后4位二进制数为全0,称为节的段地址。

用于存放段地址的寄存器称为段寄存器,根据其主要用途,分为代码段寄存器CS 、数据段寄存器DS 、堆栈段寄存器SS 、附加段寄存器ES 。

代码段寄存器CS :用来存放代码段存储区域的起始地址。 数据段寄存器DS :数存放程序的数据存储区的起始地址。

堆栈段寄存器SS :用来存放堆栈存储区的起始地址。由堆栈段寄存器SS 与堆栈指针寄存器SP 来确定当前堆栈指令的操作地址。

附加段寄存器ES :附加段是为某些字符串操作指令存放目的操作数而设置的一个附加的数据段,附加段寄存器用来存放该附加数据段存储区域的起始地址。

12. 8086的I/O端口寻址范围是多少?什么是I/O端口与内存分别独立编址?

【解】8086的I/O端口使用16位地址A15~A0,I/O端口地址范围为0000H ~FFFFH ,可寻址空间为64KB 。

I/O端口与内存分别独立编址时,指令访问的是I/O端口还是内存,由地址信息无法区分,由M/IO 信号区分是I/O端口的寻址与内存寻址 。 14. 什么是基地址和位移量,它们之间有何联系?

【解】8086 CPU 内部数据结构是16位的,而外部寻址空间为1MB 。为了能用内部寄存器中的16位地址来寻址1MB 空间,8086将1MB 空间以16字节为一个内存节(Paragraph ),共分成64K 个节。节的起始地址称为段基址。偏移地址是存储地址对段首的偏移量。偏移地址从0000H ~FFFFH 变化,对应64KB 的空间。

它们之间有何联系:物理地址=基地址×16+位移量。

15. 设CS=1200H,IP=0FF00H,此时指令的物理地址是多少?指向这一物理地址的CS 和IP 的值是惟一的吗?

【解】指令的物理地址:12000H +0FF00H =21F00H

指向这一物理地址的CS 和IP 的值不是惟一的。

16. 若CS=1000H,指出当前代码段可寻址的存储空间的大小和地址范围。 【解】当前代码段可寻址的存储空间的大小:64KB

当前代码段可寻址的存储空间的地址范围:10000H ~1FFFFH

1. 若DS=3000H,BP=2000H,SI=1000H,[32000H]=00H,[32001H]=40H,SS=3000H,[31000H]=20H,[31001H]=60H,[33000H]=50H,[33001H]=60H,说明下列各条指令执行后,AX 中的内容是什么?并说明各条指令中源操作数的寻址方式。

(1) MOV AX,DS (3) MOV AX,[SI]

(2) MOV AX,[2000H] (4) MOV AX,[BP]

(5) MOV AX,[BP+SI]

【解】

(1) AX =3000H 寄存器寻址 (2) AX =4000H 直接寻址 (3) AX =6020H 寄存器间接寻址 (4) AX =4000H 寄存器间接寻址 (5) AX =6020H 基址加变址寻址 2. 指出下列指令中的非法指令。

(1) MOV BX ,AL (3) PUSH 4567H

(5) ADD AL ,148H (7) MOV BH ,SI

【解】非法指令: (1) MOV BX,AL (3) PUSH

4567H

AX

BX 和AL 的长度不一致

CS 段寄存器不能作目的操作数

只能将寄存器或存储单元的内容压入堆栈,不能是立即数 运算溢出

立即数不能直接传送给DS 段寄存器 BH 和SI 的长度不一致 目的操作数不能是立即数

(2) MOV CS,2000H (4) XCHG VAR1,VAR2 (5) ADD AL,148H (7) MOV BH,SI (8) SUB 38H,AL (1) PUSH

(6) MOV DS,2000H

(2) MOV CS,2000H (4) XCHG VAR1,VAR2 (6) MOV DS,2000H (8) SUB 38H,AL

两个存储单元之间不能直接交换数据

3. 若SP=2000H,AX=3355H,BX=4466H,试指出下列指令或程序段执行后有关寄存器的内容。

执行后AX=?,SP=?

PUSH BX POP DX POP CX

(2) PUSH AX

执行后AX=?,CX=?,DX=?,SP=?

(2) 执行后AX=3355H,CX=3355H,DX=4466H,SP=2000H

【解】(1) 执行后AX=3355H,SP=1FFEH

4. 请按下面的要求写出相应的汇编指令或指令序列。

(1) 将1234H 送入DS 中。

(2) 将5678H 与AX 中的数相加,结果放在AX 中。 (3) 将DATAX 和DATAY 相加,其和放在DATAY 中。 (4) 将AX 中的高4位变为全0。 (5) 将BX 中的低2位变为全1。 (6) 将CX 中的D3~D7位取反。

【解】

(1)

MOV AX,1234H

MOV DS,AX

(2) A DD AX,5678H (3) M OV AX,DATAX

ADD AX,DATAY MOV DATAY,AX

(4) A ND AX ,0FFFH (5) O R AX ,0003H (6) MOV AX,CX

AND AX,07H XOR CX,0FFFFH AND CX,0FFF8H ADD CX,AX

5. 若AL=0FFH,BL=03H,指出下列指令执行后标志AF 、OF 、ZF 、SF 、PF 、CF 的状态。

(1) ADD BL,AL (3) SUB BL,AL (5) AND BL,AL (7) CMP BL,AL

【解】执行后:

(1) ADD (2) INC (3) SUB (4) NEG (5) AND (6) MUL (7) CMP

BL ,AL BL BL ,AL BL BL ,AL BL BL ,AL

AF 1 0 1 1 任意值 任意值 1 任意值 任意值 任意值

OF 0 0 0 0 0 1 0 1 0 0

ZF 0 0 0 0 0 任意值 0 任意值 0 0

SF 0 0 0 1 0 任意值 0 任意值 1 1

PF 0 0 0 0 1 任意值 0 任意值 1 1

CF 1 不影响 1 1 0 1 1 1 0 0

(2) INC BL (4) NEG BL (6) MUL BL (8) IMUL BL

(9) OR BL,AL (10)XOR BL,BL

(8) IMUL BL (9) OR BL,AL (10) XOR BL,BL

9. 执行下列程序段,指出各相关寄存器的内容。

MOV DEC SUB AND MOV SAL

AX,0A0BH AX AX,0FFH AX,00FFH CL,3 AL,CL

ADD AL,25H

XCHG AL,AH PUSH AX POP INC

BX BL

【解】各相关寄存器的内容:

MOV DEC SUB AND MOV SAL ADD

AX,0A0BH ;AX :0A0BH AX

;AX :0A0AH

;AX :090BH ;AX :000BH ;CL :03H ;AX :0058H

AX,0FFH AX,00FFH CL,3 AL,CL AL,25H

;AX :007DH

;AX :7D00H ;AX :7D00H

XCHG AL,AH PUSH AX POP INC

BX BL

;BX :7D00H

;BX :7D01H

10. 用串操作指令将100H 个字符从2100H 处搬到1000H 处,并且从中检索与AL 中所存字符相同的存储单元,并将该单元的内容替换成空格,本程序只替换检索到的第一个相同的单元。请在下列空格中填入合适的指令,使程序段完成上述功能。

MOV SI,2100H (1) MOV CX,100H CLD

(2) MOV DI,1000H MOV CX,100H (3) JNZ K1

(4) MOV [DI],20H K1: ┇

【解】

(1) MOV DI,1000H (2) REP MOVSB (3) REPNE SCASB (4) DEC DI

12. 编程求出AX 中存放的16位二进制数中‘1’的个数,将其存入CL 中(若

AX=[**************]1B则将8存入CL )。 【解】程序段如下:

MOV CX,16 XOR BX,BX

L1: SHL AX,1

;最低位移入CF RCL BL,1

;CF 移入最低位

ADD BH,BL XOR BL,BL LOOP L1 MOV CL,BH

1. 下列语句在存储器中分别为变量分配多少字节?

VR1 DW 9

VR2

DW 4 DUP(?)

CONT EQU 10 VR3 DD CONT DUP(?)

VR4 DB 2 DUP(?,CONT DUP(0)) VR5

DB ‘HOW ARE YOU?’

【解】VR1:2B ; VR2:8B ; CONT:1B ; VR3:40B ;7. 对下面程序进行注释,并说明其功能。

DATA SEGMENT A

DB ‘123ABC ’ DATA ENDS CODE

SEGMENT

ASSUME CS :CODE ,DS :DATA

START :

MOV AX,DATA MOV DS,AX LEA BX,A MOV CX,6 MOV AH,2

LP :

MOV AL,[BX] XCHG AL,DL INC BX INT 21H LOOP LP MOV AH,4CH INT 21H

CODE

ENDS END START

【解】注释如下:

:44B ;:12B VR4 VR5

DATA SEGMENT A

;数据段开始

DB ‘123ABC ’

;数据段结束

;代码段开始

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE ,DS :DATA

START :

MOV AX,DATA MOV DS,AX LEA BX,A MOV CX,6 MOV AH,2

LP : MOV AL,[BX]

XCHG AL,DL INC BX

INT 21H

;系统功能调用,功能号:2 ,

;将字符1、2、3、“A ”、“B ”、“C ”送屏幕显示

LOOP LP

;CX =6,循环6次 ;装填数据段

;传送变量的地址

MOV AH,4CH INT 21H

CODE ENDS

;返回DOS

;代码段结束

;源程序结束

END START

程序的功能:显示从A 开始的6个字节单元中的字符。 11. 分析下列程序,指出运行结果。

DATA SEGMENT SUM

DW ?

DATA ENDS CODE SEGMENT

ASSUME CS:CODE ,DS :DATA

START :

MOV AX,DATA MOV DS,AX XOR AX,AX MOV CX,10 MOV BX,2

LP : ADD AX,BX

INC BX INC BX LOOP LP MOV SUM,AX MOV AH,4CH INT 21H

CODE ENDS

END START

请问:

(1) 该程序完成的功能是_______________________________。 (2) 程序执行后,SUM 单元的内容是_______________。 【解】

(1) 该程序完成的功能是计算0~20的偶数和。 (2) 程序执行后,SUM 单元的内容是110。

12. 从ARRAY 开始的单元中存有10个16位无符号数,试编一完整程序找出其中最小数并存入MIN 单元。 【解】程序代码如下:

DATA SEGMENT

;数据段开始

ARRAY DW 0F454H ,4540H ,0D214H ,8354H ,8210H ,

0A673H,5656H ,0021H ,0567H ,4228H

DW ?

;数据段结束

;代码段开始

MIN

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE ,DS :DATA

START :

MOV AX,DATA MOV DS,AX LEA BX,ARRAY MOV AX,[BX] MOV CX,9

LP1: INC BX

INC BX CMP AX,[BX] JB CONT1

;AX=[BX],AX ←[BX]

;装填数据段

;传送变量的地址

MOV AX,[BX]

CONT1:

LOOP LP1 MOV MIN,AX MOV AH,4CH INT 21H

CODE ENDS

;返回DOS

;代码段结束

;源程序结束

END START

13. 从DAT 开始的数据区中放有100个8位的无符号数,编程统计其中奇数的个数,将结果存入RESULT 单元。 【解】程序代码如下:

DATA SEGMENT DAT

;数据段开始

DB 26,45,44,32,90,2,1,81,2,120,5„„

RESULT DB ?

;数据段结束

;代码段开始

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE ,DS :DATA

START :

MOV AX,DATA MOV DS,AX LEA BX,DAT XOR AX,AX XOR DX,DX MOV DL,2 MOV CX,100

LP1: MOV AL,[BX]

DIV DL CMP AH,0 JE CONT1 INC DH

CONT1:

INC BX LOOP LP1 MOV RESULT,DH MOV AH,4CH INT 21H

CODE ENDS

;返回DOS

;DH 用作计数器

;余数在AH 中

;装填数据段 ;传送变量的地址

;代码段结束

;源程序结束

END START

4. 利用若干2114芯片和2716芯片采用75LS138译码,构成7K 容量的存储器,要求有5KRAM

及2KROM ,请设计电路图。

【解】2114芯片为1K ×4的存储芯片,所以每两片构成一个1K 容量的存储器。5KRAM 需要10个2114芯片。2KROM 需要1个2716芯片。电路图如图6-5所示。其中ROM 的地址范围是:80000H ~807FFH ,RAM 的地址范围是:80800H ~81BFFH 。

图6-5 存储器连接示意图

1. CPU与外设交换数据的方式有几种,各有什么特点?

【解】CPU 与外设交换数据的方式有两种:程序控制传递方式和DMA (直接存储器存取)传递方式,其中程序控制的数据传送分为无条件传送、查询传送和中断传送三种。

程序控制传递方式的特点是,以CPU 为中心,数据传送的控制来自CPU ,通过预先编制好的输入或输出程序(传送指令和I/O指令)实现数据的传送 。这种传送方式的数据传送速度较低,传送路径经过CPU 内部的寄存器,同时数据的输入输出的响应比较慢。

DMA (Direct Memory Access )传递方式是一种不需要CPU 干预也不需要软件介入的高速数据传送方式。由于CPU 只启动而不干预这一传送过程,同时整个传送过程只由硬件完成而不需要软件介入,所以其数据传送速率可以很高。 4. 什么叫中断,采用中断技术有哪些好处?

【解】中断是外设随机地(指主程序运行到任何一条指令时)或程序预先安排产生中断请求信号,暂停CPU 正在运行的程序,转入执行称为中断服务的子程序,中断服务完毕后,返回到主程序被中断处继续执行的过程。

CPU 与外设采用中断技术交换数据,可以克服无条件传递和查询传送的缺点,即CPU 和外设只能串行工作。这样可以提高系统的工作效率,充分发挥CPU 的高速运算的能力。 5. 什么叫中断系统,它具备哪些功能?

【解】计算机系统中完成中断处理过程的软硬件称为中断系统。

中断系统应具有以下功能:

(1) 能实现中断响应、中断服务和中断返回

当有中断源发出中断请求时,CPU 能决定是否响应此中断,若接受这个中断请求,CPU 能在保护断点(现行CS :IP 值)后,转去执行相应的中断服务程序,中断处理完成后能恢复断点,继续执行程序。

(2) 能实现中断优先级排队

当两个或多个中断源同时提出中断请求时,CPU 要能根据各中断请求的轻重缓急程度,分别处理,即给每个中断源一个优先级别,保证首先处理优先级高的中断申请。

(3) 能实现中断嵌套

若中断处理过程中,又有新的优先级较高的中断请求,且当中断允许时,CPU 应能暂停正在执行的中断服务程序,转去响应与处理优先级较高的中断申请,待处理结束后,再返回原先较低的中断处理过程。

6. CPU在什么情况下才响应中断,中断处理过程一般包括哪些步骤?

【解】CPU 每执行完一条指令后,当查询到有中断请求且此时CPU 允许中断(即中断允许标志位IF=1,开中断),CPU 才能响应中断。

CPU 中断处理的具体过程一般包括以下步骤:中断请求、中断判优、中断响应、中断处理及中断返回。

7. 何谓非屏蔽中断和可屏蔽中断?

【解】何谓非屏蔽中断和可屏蔽中断都是硬件中断(也称外部中断)。非屏蔽中断通过CPU 的NMI 端引入,它不受内部中断允许标志位IF 的屏蔽,一般在一个系统中只允许有一个非屏蔽中断。可屏蔽中断是通过CPU 的INTR 引入 ,它受内部中断允许标志IF 的控制。只有在IF=1时,CPU 才能响应中断源的请求。当IF=0时,中断请求被屏蔽。通常在一个系统中,通过中断控制器(8259A )的配合,可屏蔽中断可以有一个或多个。 10. 简述8086/8088CPU的中断结构及中断处理过程。

【解】8086/8088CPU可以处理256种类型的中断源,这些中断源可分为硬件中断和软件中断两大类。CPU 响应中断后,把正在执行程序的当前地址(CS ∶IP )压入堆栈保存,将中断服务程序入口地址送入CS ∶IP ,由此开始执行中断服务程序。在8086系统中,允许引入256种类型中断源(类型码为0~255),相应有256个中断服务程序首址。存放中断地址的一段内存空间称中断向量表。断类型码与中断向量所在位置(中断向量地址指针)之间的对应关系为:中断向量地址指针=4*中断类型码

内部中断的处理过程:

(1)CPU 取得中断类型码,将类型码乘4作为向量表指针。(2)把CPU 标志寄存器入栈,保护各个标志,此操作类似于PUSHF 指令。(3)清除IF 和TF 标志,屏蔽新的INTR 中断和单步中断。(4)保存断点,即把断点处IP 和CS 压栈,先压CS 值后压IP 值。(5)从中断向量表中取中断服务程序入口地址分别送入IP 和CS 中。(6)按新的地址执行中断服务程序。

CPU 执行中断服务程序的最后一条中断返回指令IRET 后,返回到断点处继续执行原程序。 11. 8086/8088的中断系统分哪几类,其优先顺序如何?

【解】8086/8088CPU可以处理256种类型的中断源,这些中断源可分为硬件中断和软件中断两大类。硬件中断是由外部硬件产生的,它又可分为非屏蔽中断和可屏蔽中断。一般在一个系统中只允许有一个非屏蔽中断,可屏蔽中断可以有一个或多个。软件中断是CPU 根据软件的某些指令或者软件对标志寄存器某个标志位的设置而产生的。

8086/8088系统中,中断优先权排队次序从高到低为:除法出错、指令中断、溢出中断、非屏蔽中断、可屏蔽中断、单步中断。

12. 中断入口地址表的功能是什么?已知中断类型码分别为84H 和0FAH ,它们的中断入口在中断入口地址表的什么位置上?

【解】CPU 响应中断后,把正在执行程序的当前地址(CS :IP )压入堆栈保存,将中断服务程序入口地址送入CS :IP ,由此开始执行中断服务程序。在8086系统中,允许引入256种

类型中断源(类型码为0~255),相应有256个中断服务程序首址。这些地址就存放在中断入口地址表中。

中断类型码分别为84H 的中断源所对应的中断服务程序首址存放在0000∶0210H (4×84H =210H )开始的4个单元中。

中断类型码分别为0FAH 的中断源所对应的中断服务程序首址存放在0000∶03E8H (4×0FAH =3E8H )开始的4个单元中。

17. 试编写出只有一片8259A 的8086系统中8259A 的初始化程序。8259A 的地址为02C0H 和02C1H ,要求:(1)中断请求采用电平触发。(2)IRQ 请求的中断类型是16。(3)采用缓冲器方式。(4)采用普通的EOI 命令。 【解】

ICW 1的内容:1BH

A 0 偶地址

D 7 D 6 D 5 D 4 识别位

D 3 电平触发

D 2 调用地址间隔为8

D 1 单片

D 0

8086/8088系统必须设ICW 4。

8086/8088系统无效,置0。

ICW 2的内容:10H

A

0 奇地址

D 7 中断类型

D 6 D 5 D 4 D 3 D 2 自动填入

D 1 D 0 ICW 4

的内容:0DH

A 0 奇地址

D 7 D 6 D 5 D 4 全嵌套方式

D 3 D 2

D 1 正常EOI 结束

D 0 工作于8086/8088系统

未定义,置0。 缓冲方式/主

根据系统要求初始化编程如下:

MOV AL,1BH MOV DX,02C0H OUT DX,AL MOV AL,10H MOV DX,02C1H OUT DX,AL MOV AL,0DH OUT DX,AL

;设置ICW 4,全嵌套方式,缓冲方式,正常EIO

;设置ICW 2,类型码为10H (IR 0)。

;设置ICW 1为电平触发,单片8259A ,需要ICW 4。

1.填空题

(1) 8255A 内部包括两组控制电路,其中A 组控制______的工作方式和读写操作,B 组控制

______的工作方式和读写操作。

(2) 8255A 的端口A 工作于方式2时,使用端口C 的______位作为与CPU 的外部设备的联络信

号。

(3) 当8255A 的端口A 和端口B 均工作于方式1输出时,端口C 的PC 4和PC 5可以作为_____

使用。

(4) 8255A 的端口A 工作于方式2时,端口B 可以工作于______。

(5) 8255A 中,可以按位进行置位/复位的端口是______,其置位/复位操作是通过向______

口地址写入_______实现的。

(6) 8251A 工作在同步方式时,最大波特率为______;工作在异步方式时,最大波特率为

______。

(7) 8251A 工作在异步方式时,每个字符的数据位长度可以是______,停止位长度可以是

______。

(8) 8251A 从串行输入线接收到一个字符后,将信号______置为有效。

(9) 8251A 工作在同步方式时,同步检测引脚SYNDET 可以作为输入或者输出信号使用。若工

作在外同步方式,该引脚作为______;若工作在内同步方式,该引脚作为______。 (10) 【解】

(1) 端口A 、端口C 高4位(PC 7~PC 4)

端口B 、端口C 低4位(PC 3~PC 0) (2) PC 3~PC 7 (3) STB

A

8253工作于方式0下,控制信号GATE 变成低电平后,对计数器的影响是______。

(端口A 的选通输入信号)、IBF A (输入缓冲器满信号)

(4) 方式0或方式1 (5) 端口C ;控制;控制字 (6) 64 Kbit/s ;19.2 Kbit/s

(7) 5、6、7、或8位 ;1个、1.5或2位 (8) R X RDY

(9) 输入端;输出端 (10)

计数暂停

2.已知8255A 的端口A 、B 、C 和控制口地址分别为120H 、122H 、124H 和126H ,试按下列要求设计初始化程序:

(1) 将端口A 和端口B 设置成方式0,端口A 、端口C 作为输出口,端口B 作为输入口。 (2) 将端口A 设置成方式2,端口B 设置成方式1,端口B 作为输出口。

(3) 将端口A 和端口B 均设置成方式1的输入状态,且PC6、PC7设置成输出位。 【解】

(1) 方式选择控制字的内容:82H

D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0

控制字标志 端口A 设置成方式0 端口A 为输出口

端口C (7-4)作为输出口

端口B 设置成方式0

端口B 为输入口

端口C (3-0)作为输出口

初始化程序:

MOV AL,82H ;方式选择控制字送AL

OUT 126H,AL ;方式选择控制字输出给8255A 控制端口

(2) 方式选择控制字的内容:0C4H

D 7 控制字标志

D 6 D 5 D 4

D 3

D 2 端口B 设置成方式1

D 1 端口B 为输出口

D 0

端口A 设置成方式2

初始化程序:

MOV AL,0C4H ;方式选择控制字送AL

OUT 126H,AL ;方式选择控制字输出给8255A 控制端口

(3) 方式选择控制字的内容:0B6H

D 7 控制字标志

D 6 D 5 D 4 端口A 为输入口

D 3 端口C (7-4)作为输出口

D 2 端口B 设置成方式1

D 1 端口B 为输入口

D 0

端口A 设置成方式1

初始化程序:

MOV AL,0B6H ;方式选择控制字送AL

OUT 126H,AL ;方式选择控制字输出给8255A 控制端口

5. 图8-80(见教材)是一个检测开关状态并控制相应的继电器通断的电路。要求当开关S 0~S 7之一闭合时,使相应的继电器K 0~K 7之一吸合(即让驱动电流流过继电器线圈);若开关处于断开状态,则使相应的继电器释放。系统每隔20ms 应检测一遍开关状态,并对继电器做相应控制。图中8255A 的4个端口地址分别为2C0H 、2C2H 、2C4H 和2C6H 。试完成: (1) 8255A 的初始化编程(初始状态所有继电器的线圈均无电流通过)。

(2) 设系统中具有一个2MHz 的时钟信号源,另由一片8253来实现20ms 的定时,每当20ms

到时自动向CPU 申请中断。编写中断服务程序,并在其中完成开关的检测和继电器的控制。 【解】

(1) 8255A 的初始化编程:

8255A 的方式选择控制字的内容:82H

D 7 控制字标志

D 6 D 5 D 4 端口A 为输出口

D 3 端口C

D 2 端口B 设置成方式0

D

1 端口B 为输入口

D 0 端口C

端口A 设置成方式0

初始化程序:

MOV AL,82H OUT 2C6H,AL MOV AL,00H OUT 2C0H,AL

;方式选择控制字送AL

;方式选择控制字输出给8255A 控制端口 ;

; 8255A PA端口输出0,使所有继电器的线圈均无电流通过

(2) 开关S 0~S 7之一闭合时,相应的PB 0~PB 7的输入为1;PA 0~PA 7输出高电平(1)时,可以

使相应的继电器K 0~K 7吸合; 中断服务程序:

PUSH AX IN AL,2C2H

;从端口B 输入数据 ;从端口A 输出数据

OUT 2C0H,AL POP AX STI

IRET

; 中断返回

6.设8086系统中有一片8251A 芯片,其端口地址分别为130H 和132H 。请按以下要求分别编出8251A 的初始化程序:

(1) 全双工异步方式通信,波特率系数为16,每个字符数据为7位,偶校验,1.5个停止位,

传送过程错误不复位,且不使用调制解调器。

(2) 全双工同步方式通信,每个字符数据为8位,不带校验,内同步,两个同步字符分别为

EFH 和FEH 。 【解】

(1) 8251A的方式选择控制字的内容:0BAH

D 7 1.5个停止位

D 6 D 5 偶校验

D 4 D 3 D 2 D 1 D 0

每个字符数据为7位 波特率系数为16

初始化程序:

MOV AL,0BAH OUT 132H,AL

;方式选择控制字送AL

;方式选择控制字输出给8255A 控制端口

(2) 8251A的方式选择控制字的内容:0CH

D 7 D 6 D 5 无校验

D 4 D 3 D 2 D 1 同步方式

D 0

内同步,两个同步字符 每个字符数据为8位

初始化程序:

MOV AL,40H OUT 132H,AL MOV AL,0CH OUT 132H,AL MOV AL,0EFH

;复位8251A

;方式选择控制字送AL

;方式选择控制字输出给8255A 控制端口

OUT 132H,AL MOV AL,0FEH OUT 132H,AL

;写入第一个同步字符

;写入第二个同步字符

8.已知某系统中8253的口地址为1E0H 、1E2H 、1E4H 、1E6H ,系统时钟为2MHz 。试编写8253的初始化程序,使其通道0产生周期为1ms 的方波输出。

【解】通道0工作于方式3(方波发生器),计数值为2000(07D0H ) 初始化程序如下:

MOV AL,36H ;控制字送AL OUT 1E6H,AL MOV AL,0D0H OUT 1E0H,AL MOV AL,07H OUT 1E0H,AL

;向控制口写入控制字

;低8位计数值是0D0H

;向通道0写入计数初值的低8位

;高8位计数值为07H

;向通道0写入计数初值的低8位


相关内容

  • 大学课后习题答案
  • [大学四年100万份资料大集合] http://www.3che.com/forum.php?mod=viewthread&tid=7083&fromuid=582866 新视野大学英语课后习题答案1-4册全集 http://www.3che.com/forum.php?mod=vi ...

  • 高中信息技术第二册教案
  • 信 技 术 教 XXXX学年春季学期 学 校: 教学班级: 教 师: 案 息 本学期教学进度表 本学期教学目的和要求 [总的教学目的]: 一. 让学生顺利掌握本学期的教学内容 1. 用计算机处理数据: 2. 网络世界: 二. 结合理论联系实践的要求,强调理论知识与上机实践的有机结合习 1.EXCEL ...

  • 微型计算机原理及应用课后习题答案
  • 李伯成<微机原理>习题   第一章 本章作业参考书目: ① 薛钧义主编  <微型计算机原理与应用--Intel 80X86系列> 机械工业出版社 2002年2月第一版 ② 陆一倩 编   <微型计算机原理及其应用(十六位微型机)> 哈尔滨工业大学出版社 1994年 ...

  • 1.旅游策划与酒店管理方向核心课程:策划学.公共
  • 公共事业管理专业核心课程简介 一. 旅游策划与酒店管理方向核心课程 <公共关系原理与技巧>课程介绍 1.课程教学目的.目标 本课程的目的是:通过本课程的学习,使学生掌握公共关系的基本概念与基本原理,掌握公共关系应用的原则和方法:了解公共关系实务的一般操作形式和组织方法:训练他们具备公共关 ...

  • 1.2集合的运算
  • 1.2集合的运算 重难点 (1)理解两个集合的并集与交集的的含义,会求两个简单集合的并集与交集: (2)理解在给定集合中一个子集的补集的含义,会求给定子集的补集: (3)能用Venn图表达集合的关系及运算,体会直观图示对理解抽象概念的作用. 一知识点 1. 并集 一般地,由所有属于集合A或属于集合B ...

  • 高一数学集合与不等式
  • 高一数学复习教案(一) 集合与不等式 1.理解集合.子集.交集.并集.补集.全集.空集的概念:了解集合之间属于.包含.相等关系的意义:掌握集合的有关术语和饿符号,并会用它们正确表示一些简单的集合: 2.掌握简单的含有绝对值的不等式及一元二次不等式的解法: 3.学会运用数形结合.分类讨论.等价转换的思 ...

  • 超多大学课后习题答案与大家分享啦~~
  • 超多大学课后习题答案与大家分享啦~~.txt男人应该感谢20多岁陪在自己身边的女人.因为20岁是男人人生的最低谷,没钱,没事业:而20岁,却是女人一生中最灿烂的季节.只要锄头舞得好,哪有墙角挖不到?2500份课后答案,很值得收藏,这里只介绍了一部分. 还有很多,可以去课后答案网(http://bbs ...

  • 基于慕课的计算机课程翻转课堂教学的分析与研究
  • 摘 要:本文首先介绍了慕课的两种模式(CMOOC和XMOOC).优势和弊端,然后通过分析传统的计算机课堂的教学现状,设计了基于慕课教学模式与传统课堂教学模式相结合的翻转课堂教学模式,最后,提出了在二者结合的教学模式的教学过程中对教师的更高要求,旨在提高课堂效率,提升教学质量,增强学生自主学习能力和提 ...

  • 大学课本课后习题答案
  • 注册可用 公共课程 http://www.10xiao.com/forum-6-1.html 新视野大学英语读写教程第四册答案 http://www.10xiao.com/thread-7-1-1.html 新视野大学英语读写教程第三册答案 http://www.10xiao.com/thread- ...