《微机原理与接口技术》(第四版)周何琴课后习题答案

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

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

第1章 绪论作业

1. 将下列二进制数转换成十进制数。

(1)11001010B=202 (2)00111101B=61 (3)01001101B=77 (4)10100100B=164

3. 将下列十进制数分别转换为二进制数和十六进制数。 (2)76= 100 1100B =4CH (4)134= 1000 0110B =86H

4. 求下列十进制数的BCD码 (1)327=11 0010 0111(BCD码) (2)1256=1 0010 0101 0110(BCD码)

6. 求出下列10进制数的原码、反码和补码 (2)+85 (4)-85 解:85=0101 0101B

原码:+85= 0101 0101B -85= 1101 0101B 反码:+85= 0101 0101B -85= 1010 1010B 补码:+85= 0101 0101B -85= 1010 1011B

10. 画出微型计算机的基本结构框图,说明各部分的主要功能是什么? 解:

微型计算机的基本结构框图如下:

微处理器 CPU 存储器 I/O接口 地址总线 I/O设备 I/O总线 数据总线 控制总线 微处理器CPU:控制微处理器与存储器或I/O设备间的数据交换;进行算术和逻辑运算等操作;判定和控制程序流向。 微处理器主要完成:

(1)指令控制:从存储器中取指令,指令译码; (2)数据加工:简单的算术逻辑运算;

(3)操作控制:在微处理器和存储器或者I/O之间传送数据; (4)时间控制:程序流向控制。 存储器:用来存放数据和指令。

I/O接口:主机和外设间的桥梁,提供数据缓冲驱动、信号电平转换、信息转换、地址译码、定时控制等

1

各种功能。

I/O设备:输入原始数据和程序,转换成计算机能识别的信息,送入存储器去等待处理。输出运算结果。 总线:连接计算机系统中各功能部件的信息通道。

第2章 8086CPU作业

2. 8086CPU内部由哪两部分组成?它们的大致是如何工作的?

答:

(1)8086CPU由指令执行部件EU和总线接口部件BIU两部分组成。 (2)

① BIU先执行读存储器操作,从给定地址单元中取出指令,送到先进先出的指令队列中等待执行。 存储器的物理地址=CS?16+IP,在地址加法器?中形成。

② EU从指令队列中取走指令,经EU控制器译码分析后,向各部件发控制命令,以完成执行指令的操作。BIU与EU是并行工作方式。

③ 当指令队列已满,EU在执行指令,未向总线接口单元BIU申请读/写内存或I/O操作时,BIU处于空闲状态。

④ 指令执行过程中,若需对存储器或I/O端口存取数据,EU就要求BIU去完成相应的总线周期。

5. 两个带符号数1011 0100B和1100 0111B相加,运算后各标志位的值等于多少?哪些标志位是有意义的?如果把这两个数当成无符号数,相加后哪些标志位是有意义的?

解:

(1)两个带符号数:不考虑CF标志 1011 0100 + 1100 0111 1 0111 1011 运算后各标志位状态如下:

CF=1,有进位,对于带符号数,无意义。

PF=1,结果有偶数个1

AF=0,无半进位,非BCD码运算,无意义。

ZF=0,结果非0

SF =0,结果为正数

OF=1,溢出(两个负数相加,结果变成了正数) (2)两个无符号数:不考虑SF和OF标志 1011 0100 + 1100 0111 1 0111 1011 运算后各标志位状态如下: CF=1,有进位

PF=1,结果有偶数个1 ZF=0,结果非0

AF、SF、 OF无意义。

20. 简要解释下列名词的意义。

CPU:中央处理单元CPU (Control Processing Unit)也称微处理器,是微型计算机的核心部件,由运算器ALU、控制器、寄存器组以及总线接口等部件组成。主要完成各种运算,负责对整机的控制。

存储器:用于存储程序和数据的硬件设备。

堆栈:堆栈是一种数据结构,是内部RAM的一段区域。设置堆栈的目的是用于数据的暂存,中断、子程序调用时断点和现场的保护与恢复。

IP:指令指针寄存器,用于控制CPU的指令执行顺序(只存放偏移量),只能和代码段寄存器CS配合使用,可以确定当前所要取的指令的内存地址,且始终指向代码段中下一条将要读取到CPU指令队列的那条指令。顺序执行程序时,CPU每取一个指令字节,IP自动加1,指向下一个要读取的字节。

SP:堆栈指针寄存器,用于指示堆栈的栈顶地址偏移量的寄存器,它决定了堆栈在内部RAM中的物理位置。只能和SS段寄存器配合使用,且始终指向堆栈的栈顶,在堆栈指令中隐含的使用它来定位栈顶数据。

BP:基址指针寄存器。用于存放偏移量,通常和SS段寄存器配合使用,在间接寻址中用于定位堆栈段中的内存单元。

段寄存器:由于CPU内部的寄存器都是16位的,为了能够提供20位的物理地址,8086系统中采用了存储器分段的方法。规定存储器的一个段为64KB,由段寄存器来确定存储单元的段基址,由指令提供该单元相对于相应段起始地址的16位偏移量。

状态标志:表示前一步操作(如加、减等)执行以后,ALU所处的状态,后续操作可以根据这些状态

2

标志进行判断,实现转移。

控制标志:可以通过指令人为设置,用以对某一种特定的功能起控制作用(如中断屏蔽等),反映了人们对微机系统工作方式的可控制性。

物理地址:存储器的实际地址,它是指CPU和存储器进行数据交换时所使用的地址。物理地址是由段地址与偏移地址共同决定的,计算物理地址的表达式为:

物理地址 = 段地址 × 16 + 偏移地址

逻辑地址:是在程序中使用的地址,它由段地址和偏移地 址两部分组成。

逻辑地址的表示形式为“段地址:偏移地址”。

机器语言:直接用二进制编码表述的指令系统语言,通常称为机器语言,机器语言指令是计算机惟一能直接识别和执行的指令。

汇编语言:便于记忆和使用,通常使用汇编语言(符号指令或指令助记符)来描述计算机的指令系统。 指令:让计算机完成某种操作的命令称为指令。

指令系统:一台计算机所能识别、执行的指令的集合就是它的指令系统。

总线:连接计算机系统中其他主要功能部件的桥梁,是计算机系统中信息输送的枢纽,只有通过总线,计算机系统的各部件才能实现相互通信。

内部总线:微处理器内部各个器件之间传送信息的通路。

系统总线:微处理机机箱内的底板总线。可分为:ISA、EISA、VESA局部总线、PCI局部总线等。 时钟周期:CPU时钟频率的倒数称为时钟周期,也称T状态。

总线周期:BIU完成一次访问存储器或I/O端口操作所需要的时间称为总线周期。一个基本的总线周期是由4个(或4个以上)时钟周期组成的。

指令周期:执行一条指令所需要的时间称为指令周期,不同指令的指令周期的长短是不同的。一个指令周期是由几个总线周期组成的。

21. 要完成下列运算和控制,用什么标志判别?其值是什么?

(1)比较两数是否相等?

(2)两数运算后结果是正数还是负数? (3)两数相加后是否溢出? (4)奇偶校验判断。

(5)两数相减后比较大小。 (6)中断信号能否允许? 答:

(1)比较两数是否相等:两数相减后用零标志ZF判断,ZF=1,则相等。

(2)两数运算后结果是正数还是负数:用符号标志SF判断, SF=1,则结果为负数。 (3)两数相加后是否溢出:用溢出标志OF判断,OF=1,则有溢出。

(4)奇偶校验判断:采用偶校验方式,判定是否要补“1”?用奇偶标志PF判断,若数据结果低8位中含有偶数个“1”,则PF=1;不用补“1”。

(5)两数相减后比较大小:ZF=1,两数相等。对于无符号数,CF=1,则被减数小于减数;CF=0,则被减数大于减数;ZF=1,则两数相等。对于带符号数,SF⊕OF=1,则被减数小于减数;SF⊕OF=0,则被减数大于减数。

(6)中断信号能否允许:用中断允许标志IF判断,IF=1,则能允许可屏蔽中断。 22. 说明8086系统中“最小模式”和“最大模式”两种工作方式的主要区别。

最小模式(最小工作方式 ):单微处理器系统(系统中只有一个8086微处理器),所有的总线控制信号,都是直接由8086CPU产生的,适用于规模较小的微机应用系统。

当把8086的33脚MN/MX接+5V时,8086 CPU就处于最小工作方式。 最大模式(最大工作方式 ):多微处理器系统(包含有两个或多个微处理器,一个主处理器8086CPU,其他的处理器称为协处理器它们是协助主处理器工作的。 ),主要用在中等或大规模的8086系统中。

当把8086的33脚MN/MX接地时, 8086 CPU就处于最大模式。

第3章 作业

1.分别说明下列指令的源操作数和目的操作数各采用什么寻址方式。 源 目的 (1)MOV AX, 2048H 立即寻址 寄存器寻址 (2) MOV CL, 0FFH 立即寻址 寄存器寻址 (3) MOV BX, [SI] 寄存器间接寻址 寄存器寻址 (4) MOV 5[BX], BL 寄存器寻址 寄存器相对寻址

3

(5) MOV [BP+100H], AX 寄存器寻址 (6) MOV [BX+DI], ‘$’

立即寻址

寄存器相对寻址

基址变址寻址

(7) MOV DX, ES:[BX+SI] 基址变址寻址 寄存器寻址 (8) MOV VAL[BP+DI], DX 寄存器寻址 相对基址加变址寻址 (9) IN AL, 05H I/O端口寻址(或直接寻址) 寄存器寻址 (10) MOV DS, AX 寄存器寻址 寄存器寻址

2. 已知:DS=1000H, BX=0200H, SI=02H, 内存10200H~10205H单元的内容分别为10H, 2AH, 3CH, 46H, 59H, 6BH。下列每条指令执行完后AX寄存器的内容各是什么? AX 内容 (1)MOV AX, 0200H; (AX)=0200H (2) MOV AX, [200H]; (AX)=2A10H (3) MOV AX, BX ; (AX)=0200H (4) MOV AX, 3[BX] ; (AX)=5946H (5) MOV AX, [BX+SI]; (AX)=463CH (6) MOV AX, 2[BX+SI] ; (AX)=6B59H 6.指出下列指令中哪些是错误的,错在什么地方

(1)MOV DL, AX 错误,源和目的操作数类型不匹配,DL是8位寄存器,AX是16位

寄存器。

(2)MOV 8650H, AX 错误,立即数不能作为目的操作数。 (3)MOV DS, 0200H

错误,不能用立即数直接给段寄存器赋值。

(4)MOV [BX], [1200H] 错误,不能在两个存储单元之间直接传送数据

(5)MOV IP, 0FFH 错误,IP不能作目的操作数或不能用立即数直接给IP寄存器赋值。 (6)MOV [BX+SI+3], IP 错误,IP不能作源操作数。

(7) MOV AX, [BX][BP] 错误,基址变址寻址方式必须是一个基址寄存器与一个变址寄存器,

不能两个同时为基址寄存器(BX、BP均为基址寄存器)。

(8)MOV AL, ES:[BP] 正确。

(9)MOV DL, [SI][DI] 错误,基址变址寻址方式必须是一个基址寄存器与一个变址寄存器,

不能两个同时为变址寄存器(SI、DI均为变址寄存器)。

(10)MOV AX, OFFSET 0A20H 错误,OFFSET后必须是存储单元标号地址,不能是立即数。 (11) MOV AL, OFFSET TABLE 错误,操作数类型不匹配,AL为8位, TABLE为16位。 (12)XCHG AL, 50H 错误,交换指令XCHG的操作数不能是立即数。 (13)IN BL, 05H 错误,IN指令的目的操作数必须是累加器

(14)OUT AL, 0FFEH 错误,OUT指令的源操作数必须是累加器,目的操作数为8位I/O端

口地址或用DX做桥梁的16位I/O端口地址。

10. 已知AX=2508H,BX=0F36H,CX=0004H,DX=1864H,求下列每条指令执行后的结果是什么?标志位CF等于什么?

(1)AND AH,CL (AH)=04H CF=0 (2)OR BL,30H (BL)=36H CF=0

(3)NOT AX (AX)=0DAF7H CF不变(不影响CF) (4)XOR CX,0FFF0H (CX)=0FFF4H CF=0 (5)TEST DH,0FH (DH)=18H CF=0 (6)CMP CX,00H (CX)=0004H CF=0 (7)SHR DX,CL (DX)=0186H CF=0 (8)SAR AL,1 (AL)=04H CF=0

4

(9)SHL BH,CL (BH)=0F0H CF=0 (10)SAL AX,1 (AX)=4A10H CF=0

(11)RCL BX,1 CF=1,(BX)=1E6DH, CF=0,(BX)=1E6CH CF=0 (12)ROR DX,CL (DX)=4186H CF=0 11. 假设数据定义如下: DATA SEGMENT

STRING DB ‘The Personal Computer & TV’ DATA ENDS

试用字符串操作指令编程完成以下功能:

(1)把该字符串传送到附加段中偏移地址为GET_CHAR开始的内存单元中。 解:程序段如下:

LEA SI,STRING ;置源串偏移地址 LEA DI,GET_CHAR ;置目的串偏移地址 MOV CX,26 ;置串长度 CLD ;方向标志复位 REP MOVSB ;字符串传送

12.编程将AX寄存器中的内容以相反的次序传送到DX寄存器中,并要求AX中的内容不被破坏,然后统计DX寄存器中1的个数是多少。

解:将AX的内容用ROR循环右移,16次之后AX的内容不变(如果用算术/逻辑右移SHL/SAL,则AX的内容破坏,需要用堆栈PUSHU AX/POP AX保护),其最低位移入CF中,再使用RCL循环左移将CF中的值移入DX中。并且,如果CF的值为1,则将BL加1。

MOV CX, 16 XOR BL, BL

LP1: ROR AX, 1

JNC LP2 INC BL

LP2: RCL DX,1

LOOP LP1 HLT

调试程序:

STACK SEGMENT STACK

DB 100 DUP(?) STACK ENDS DATA SEGMENT BUF DW 12

BUF1 DW 100 DUP (?) DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK START: PUSH DS

MOV AX,DATA

MOV DS,AX MOV AX,1234H

5

循环1次 02H 循环3次 04H 循环4次 05H

04H 0BH 10H

03H 01H 01H 00H

DX 00H 01H 00H

00H 00H

循环2次 03H 07H 02H 00H

结果:

AX BX CX (1) (2) (3)

20. 设8086CPU的时钟频率为5MHz,请编写延时5ms的子程序。 解:微机的主频率为5MHz

则:时钟周期=主频率的倒数=1/(5×10-6)=0.2μs

延时5ms需要的时钟周期数= 5ms/ 0.2μs=25000 延时子程序如下:

DELAY5:MOV CX,N 4 DLY1:NOP 3 ×N

LOOP DLY1 17 ×(N-1)+ 5 RET 16

应该有25000=4+ 3 ×N+ 17 ×(N-1)+ 5+16,才能实现要求的延时。则: N=1250=04E2H 延时子程为:

DELAY5:MOV CX,04E2H DLY1:NOP

LOOP DLY1 RET

第4章作业

P153

5. 阅读下列程序,说明每条指令执行后的结果是什么?

X1 DB 65H, 78H X2 DW 06FFH, 5200H X3 DD ?

GO: MOV AL, TYPE X1 MOV BL, TYPE X2 MOV CL, TYPE X3

MOV AH, TYPE GO MOV BH, SIZE X2

MOV CH, LENGTH X3 解:

(1)前三条语句的功能是设置数据于数据段中,从数据段偏移地址0000H开始存放。

05H 02H 03H

10H 04H 07H

00H 03H 02H

执行一次,ZF=0,退出循环。 执行两次,ZF=1,退出循环。

11

变量 X1 X2 X3

程序汇编后结果如下:

偏移地址 0000H 0001H 0002H 0003H 0004H 0005H 0006H 0007H 0008H 0009H

数据 65H 78H FFH 06H 78H 00H 随机数 随机数 随机数 随机数

六条程序执行结果如下:

(AL)=01H;设置变量类型属性,字节数 (BL)=02H;设置变量类型属性,字节数 (CL)=04H;设置变量类型属性,字节数

(AH)=0FFH;设置GO显示类型,近标号,为-1,补码表示 (BH)=02H;设置数据类型,无DUP时,返回数据类型的字节数 (CH)=01H;无DUP时,返回1。 程序执行后结果如下:

调试程序如下:

12

STACK SEGMENT STACK DB 100 DUP(?) STACK ENDS DATA SEGMENT X1 DB 65H, 78H X2 DW 06FFH, 5200H X3 DD ? DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK START: PUSH DS MOV AX,DATA MOV DS,AX GO: MOV AL, TYPE X1 MOV BL, TYPE X2 MOV CL, TYPE X3 MOV AH, TYPE GO MOV BH, SIZE X2 MOV CH, LENGTH X3 POP DS HLT CODE ENDS END START

6. 画出示意图,说明下列变量在内存中如何让存放?

A1 DB 12H, 34H A2 DB ‘Right.’ A3 DW 5678H A4 DB 3 DUP(?)

(1)设置数据于数据段中,从数据段偏移地址0000H开始存放。

变量 A1 A2 A3 A4

偏移地址 0000H 0001H 0002H 0003H 0004H 0005H 0006H 0007H 0008H 0009H 000AH 000BH

13

数据 12H 34H 52H 69H 67H 68H 74H 2EH 78H 56H 随机数 随机数

调试程序如下:

STACK SEGMENT STACK DB 100 DUP(?) STACK ENDS DATA SEGMENT A1 DB 12H, 34H A2 DB 'Right.' A3 DW 5678H A4 DB 3 DUP(?) DATA ENDS CODE SEGMENT

000CH 随机数 ASSUME CS:CODE,DS:DATA,SS:STACK START: PUSH DS MOV AX,DATA MOV DS,AX POP DS HLT CODE ENDS END START 程序汇编后结果如下:

12. 编程实现,从键盘输入一个十进制数0~9,查表求键入数字的七段代码(共阳极LED显示器的段码),存入DL中,并在键入数字之前,显示提示信息“Please input a number(0~9):”。 解:

STACK SEGMENT STACK

DB 100 DUP(?) STACK ENDS DATA SEGMENT

TABLE DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H, 90H BUF DB 'Please input one number(0~9):',0DH,0AH,'$'

14

DATA ENDS CODE

SEGMENT

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

MOV DX,OFFSET BUF

MOV AH,09H INT 21H MOV AH,1 INT 21H AND AL,0FH

MOV BX,OFFSET TABLE XLAT MOV DL,AL POP DS HLT CODE

ENDS END START

调试结果:

数字5的共阳极LED七段码为92H。

15. 已知:在内存BUF开始的单元中,存在一串数据:58,75,36,42,89。编程找出其中的最小值存入MIN单元中,并将这个数显示在屏幕上。 解:

STACK SEGMENT STACK

DB 100 DUP(?) STACK ENDS DATA SEGMENT

15

DISP:

PUSH AX MOV DL,BL MOV AH,2 INT 21H MOV DL,BH INT 21H POP AX RET CODE ENDS END START

13. 将键盘上输入的一位为十六进制数转换成十进制数,在屏幕上显示。 DATA SEGMENT

DATA1 DB 10 DUP(?) DATA2 DB 10 DUP(?) DATA ENDS

STACK SEGMENT STACK

DB 100 DUP(?)

STACK ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK START:PUSH DS

MOV AX,DATA

MOV DS,AX KEY: MOV AH,1 INT 21H ZH: CMP AL,3AH JAE ZH1

SUB AL,30H JMP ZH2

ZH1: SUB AL,37H ADD AL,0 DAA

ZH2: MOV BL,AL AND AL,0F0H MOV CL,4 SHR AL,CL ADD AL,30H MOV BH,AL MOV AL,BL AND AL,0FH ADD AL,30H

MOV BL,AL DISP: MOV DL,BH

MOV AH,2 INT 21H MOV DL,BL MOV AH,2 INT 21H POP DS MOV AH,4CH INT 21H HLT

CODE ENDS

END START

26

调试程序:

STACK SEGMENT STACK DB 100 DUP(?) STACK ENDS DATA SEGMENT

BUF1 DB 'Please input one hexadecimal(0-9,A-F):',0DH,0AH,'$' BUF2 DB 20H,20H,'Decimal(0-15):',0DH,0AH,'$' BUF3 DB 10 DUP(?) DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK START: PUSH DS

MOV AX,DATA MOV DS,AX

MOV DX,OFFSET BUF1 MOV AH,9 INT 21H KEY: MOV AH,1 INT 21H PUSH AX

MOV DX,OFFSET BUF2 MOV AH,9 INT 21H POP AX

ZH: CMP AL,3AH JAE ZH1 SUB AL,30H JMP ZH2 ZH1: SUB AL,37H ADD AL,0 DAA

ZH2: MOV BL,AL AND AL,0F0H MOV CL,4 SHR AL,CL ADD AL,30H MOV BH,AL MOV AL,BL AND AL,0FH ADD AL,30H

MOV BL,AL DISP: MOV DL,BH MOV AH,2 INT 21H MOV DL,BL MOV AH,2 INT 21H POP DS MOV AH,4CH INT 21H HLT CODE ENDS

END START

22. 编程序统计学生的数学成绩,分别归类90~99分,80~89分,70~79分,60~69分及60分以下,并将各段的人数送入内存单元中。 解:

STACK SEGMENT

DB 100 DUP(?)

STACK ENDS DATA SEGMENT

27

DATA1 DB 200 DUP(?) DATA2 DB 100 DUP(?) DATA3 DB 10 DUP(?) DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK START:PUSH DS

MOV AX,DATA MOV DS,AX XOR CX,CX

KEY:MOV SI,OFFSET DATA1 KEY1:MOV AH,1 INT 21H CMP AL,‘$’ JZ ZH INC CX

MOV [SI],AL

INC SI

JMP KEY1

ZH: MOV SI,OFFSET DATA1 MOV DI,OFFSET DATA2 SHR CX,1 PUSH CX

ZH1:MOV AL,[SI]

AND AL,0FH SHL AL,1 SHL AL,1 SHL AL,1 SHL AL,1 MOV BL,AL INC SI

MOV AL,[SI] AND AL,0FH OR AL,BL MOV [DI],AL INC SI INC DI

LOOP ZH1

TJ: POP CX

MOV DI,OFFSET DATA2 TJ0: MOV AL,[DI]

CMP AL,90H

JNB TJ1

CMP AL,80H

JNB TJ2

CMP AL,70H

JNB TJ3

CMP AL,60H

JNB TJ4

INC 4[DATA3] JMP TJ5

TJ1: INC [DATA3] JMP TJ5

TJ2: INC 1[DATA3] JMP TJ5

TJ3: INC 2[DATA3] JMP TJ5

TJ4: INC 3[DATA3] 28

TJ5: INC DI LOOP TJ0 POP DS

MOV AH,4CH INT 21H HLT

CODE ENDS

END START

调试程序:

STACK SEGMENT STACK DB 100 DUP(?) STACK ENDS DATA SEGMENT DATA1 DB 80 DUP(?) DATA2 DB 80 DUP(?) DATA3 DB 10 DUP(?) DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK START: PUSH DS

MOV AX,DATA

MOV DS,AX XOR CX,CX

KEY: MOV SI,OFFSET DATA1 KEY1: MOV AH,1 INT 21H CMP AL,'$' JZ ZH INC CX

MOV [SI],AL INC SI

JMP KEY1

ZH: MOV SI,OFFSET DATA1 MOV DI,OFFSET DATA2 SHR CX,1 PUSH CX ZH1: MOV AL,[SI]

AND AL,0FH SHL AL,1 SHL AL,1 SHL AL,1 SHL AL,1 MOV BL,AL INC SI

MOV AL,[SI] AND AL,0FH OR AL,BL MOV [DI],AL INC SI INC DI

LOOP ZH1

TJ: POP CX

MOV DI,OFFSET DATA2 TJ0: MOV AL,[DI] CMP AL,90H JNB TJ1

29

CMP AL,80H JNB TJ2

CMP AL,70H JNB TJ3

CMP AL,60H JNB TJ4

INC 4[DATA3] JMP TJ5

TJ1: INC [DATA3] JMP TJ5

TJ2: INC 1[DATA3] JMP TJ5

TJ3: INC 2[DATA3] JMP TJ5

TJ4: INC 3[DATA3] TJ5: INC DI

LOOP TJ0 POP DS

MOV AH,4CH INT21H HLT CODE ENDS

END START

第5章作业 P194

5. PROM、EPROM、E2PROM的共同特点是什么?它们在功能上主要不同之处在哪里?试举例说明它们的用途。 答:

(1)共同特点:只读存储器,只能读出,在系统运行过程中不能写入。具有非易失性,写入或擦除一般需用特殊方法。 (2)功能上的不同:

一次可编程的PROM:用户可根据需要修改存储器中的某些存储单元,只能一次性修改,不能二次编程,成本高,可靠性差,使用具有一定的局限性。用户可部分写入。

紫外线可擦除EPROM:显著优点是可多次编程,但不能在线编程,不容易修改局部内容。需要紫外线擦出。一般用于产品开发,或用于小批量生产。

电擦可编程E2PROM:可改写任一部分内容,擦写10000次,甚至百万次,数据保存10年。可在电路板上在线编程。一般用于产品开发,或用于小批量生产。性能和次数比EPROM好。EEPROM擦写速度较慢,不能做大容量内存。 (3)用途

一次可编程的PROM:用于大批量生产的各种需要存储器的电子设备。

紫外线可擦除EPROM:一般用于产品开发,或用于小批量生产。广泛用于微机化仪器设计,可用编程器写入调试好的程序和数据,并能长期保存。一般用于产品开发,或用于小批量生产。主要用于程序存储器,容量不大。

电擦可编程E2PROM:用来存放仪器或接口卡的硬件设置数据或构成防止软件非法拷贝的“硬件锁”。擦写速度较慢,容量不大,不能做大容量内存。如计算机主板上的BIOS ROM。

8. 试说出闪存的3项技术特点,并举出至少5个采用闪存的计算机设备或电子产品名称。 答:

(1)具有非易失性,能不加电而长期保存信息,抗干扰能力强;

能在线进行快速电擦除,类似于EEPROM;编程速度可达10ns/byte,比EPROM和EEP ROM快; 价格已低于DRAM,容量则接近于DRAM。

30

各芯片地址范围如下: 1#芯片:300----307 H 2#芯片:308----30FH 3#芯片:310----317 H 4#芯片:318----31FH 5#芯片:320----327 H 6#芯片:328----32FH 7#芯片:330----337 H

8#芯片:338----33FH

注:8086系统要指出奇偶口地址(16个地址中)

1. CPU与外设交换数据时,为什么要通过I/O接口进行?I/O接口电路具有哪些主要功能? 答:

(1)由于输入/输出设备 (外设)比较复杂,性能的离散性比较大,不同的外设,其结构方式、输入/输出的信号类型、输入/输出信息的速率相差很大。而同一个外设与CPU之间所要传送的信息类型不同,方向不同,作用也不一样 。因此,CPU与外部设备之间的信息交换技术比较复杂。所以需要一个中间处理电路——接口电路来分别协调、处理、传送这些不同的信息。

(2)I/O接口电路具有寻址、输入/输出、数据缓冲、联络、数据转换、中断管理、时序控制、可编程、电器特征匹配、错误检测等主要功能。

8.什么叫总线?总线分哪几类?在微型计算机中采用总线结构有什么好处? 答:

(1)总线:总线是一组信号线的集合,是一种在各模块间传送信息的公共通路。 (2)总线的分类方法:

按相对于CPU与其他芯片的位置总线可分为:片内总线和片外总线; 按总线传送信息的类别,可把总线分为:地址总线、数据总线和控制总线; 按照总线传送信息的方向,可把总线分为:单向总线和双向总线;

按总线的层次结构总线可分为:片内总线、片级总线、系统总线和外部总线。

36

(3)在微机系统中,利用总线实现芯片内部、印刷电路板各部件之间、机箱内各插件板之间、主机与外部设备之间或系统与系统之间的连接与通信。总线是构成微型计算机应用系统的重要技术,总线设计好坏会直接影响整个微机系统的性能、可靠性、可扩展性和可升级性。

第7章作业 P281

6. 如果中断类型号n=4,它的中断服务子程序的入口地址为CS:IP=0485:0016H,它在中断向量表中如何存放? 解:

中断类型号n=4,中断向量指针=中断类型号×4=n×4=10H

从内存中断向量指针00010H开始的单元开始存放中断向量, CS占高2个字节, IP占低2个字节。具体如下:

00010H 00011H 00012H 00013H

11. 8086中断响应和处理有哪些主要步骤? 答:

(1)CPU响应中断的条件为:外设提出中断申请,CPU允许中断(本中断位未被屏蔽,本中断位优先级别最高),当前指令执行完。

(2)CPU在INTR引脚上接到一个中断请求信号,如果此时IF=1,本中断位未被屏蔽,CPU就会在当前指令执行完以后开始响应外部的中断请求,这时,CPU在INTA引脚连续发两个负脉冲,第一个负脉冲用来通知外设,CPU准备响应中断,外设在接到第二个负脉冲以后,在数据线上发送中断类型码,接到这个中断类型码后,CPU做如下动作:

① 将中断类型码放入暂存器保存; ② 将标志寄存器内容压入堆栈; ③ 将IF和TF标志清0; ④ 保护断点;

⑤ 根据取到的中断类型码,计算中断向量指针,在中断向量表中找出相应的中断向量,将其装入IP和CS,即自动转向中断服务子程序;

⑥ 中断返回。 第8章 作业 P253

1. 8253芯片有几个计数通道?每个计数通道可工作于哪几种工作方式?这些操作方式的主要特点是什么? 答:

(1)8253芯片有3个计数通道。

(2)每个计数通道均可工作于6种工作方式。方式1—可重复触发的单稳态触发器,方式2—自动重装初值的N分频器,方式 3 —方波发生器,方式4—软件触发的选通信号发生器,方式5—硬件触发的选通信号发生器。

输出波形:0、1 单稳输出,2、4、5 为单次负脉冲,3 为方波。2、3 为连续波形,其余为不连续波形;1、5 可硬件重复触发。

初始电平:写入控制字,只有0为低电平,其余均为高电平;写入初值,在GATE有效的情况下(计数期间),0、1为低电平,2、3、4、5均为高电平。

16H 00H 85H 04H 37

触发方式:

0、4为电平触发,上升沿继续。0是GATE=0停止计数, GATE再次为1,从中止处继续。4是GATE=0停止, GATE再次为1,从原装初值开始计数。

1、5为边沿触发,计数过程中再次出现GATE上升沿,计数器按原装初值开始计数。

2、3为电平触发,上升沿有效,GATE=0停止计数,计数过程中再次出现GATE上升沿,计数器按原装初值开始计数。

计数过程重新写入初值:

0、4----在GATE=1时,立即按新初值开始计数。

1、5----不影响目前的计数,只有在GATE再次出现上升沿时,按新初值开始计数。

2、3----不影响本次输出,本次计数结束后,若GATE=1,(重装新初值)按新初值开始计数。 自动重装能力:2、3 具有自动重装能力(其余没有),可输出连续的波形。 可重复触发能力:1、5具有可重复触发能力(其余没有)。

2. 8253的最高工作频率是多少?8254与8253的主要区别是什么?

解:8253的最高工作频率是2MHz。8254是8253的增强型产品,引脚兼容,功能几乎完全相同,其主要区别在于:

(1)8253的最高工作频率是2MHz,而8254的最高工作频率是10MHz;

(2)8254具有读回功能,可以同时锁存1----3个计数器的计数值及状态值,供CPU读取,而8253每次只能锁存和读取一个通道的计数器,且不能读取状态值。

4. 设8253的通道0----2和控制口的地址分别为300H、302H、304H、306H,设系统的时钟脉冲频率为2MHz。要求:

(1)通道0输出1KHz的方波;

(2)通道1输出频率为500Hz的序列负脉冲; (3)通道3输出单脉冲,宽度为400μs。 试画出硬件电路图,编写各通道的初始化程序。

解:8253的口的地址分别为300H、302H、304H、306H,连续的偶地址,说明CPU为8086.

(1)通道0输出1KHz的方波,应工作在方式3。2MHz/1KHz=2000,则可得通道0的定时初值为2000。 (2)通道1输出频率为500Hz的序列负脉冲,应工作在方式2。2MHz/500Hz=4000, 通道1的定时初值=4000

(3)通道2输出单脉冲,宽度为400μs,应工作在方式0 , 通道2的定时初值=400μs/(1/ 2MHz)-1=799。 硬件连结图如下图所示。

38

8253的初始化程序: ;通道0初始化程序

MOV DX,306H

MOV AL,00110111B ;通道0控制字,读写两字节,方式3,BCD码计数 OUT DX, AL MOV DX,300H

MOV AL, 00H OUT DX, AL ;写人低字节 MOV AL, 20H

OUT DX, AL ;写人高字节 ;通道1初始化程序

MOV DX,306H

MOV AL,01110101B ;通道1控制字,读写两字节,方式2,BCD码计数 OUT DX, AL ;写人方式字 MOV DX,302H

MOV AL, 00H ;低字节 OUT DX,AL ;写人低字节 MOV AL, 40H

OUT DX, AL ;写人高字节 ;通道2初始化程序

MOV DX,306H

MOV AL, 10110001B ;通道2方式字,读写两字节,方式0,BCD码计数 OUT DX,AL MOV DX,304H

MOV AL,99H ;计数初值字节 OUT DX,AL ;写人低字节

MOV AL, 07H

OUT DX, AL ;写人高字节 HLT

5. 设8254的端口地址为40----43H,时钟频率f=5MHz,通道2接1个LED指示灯。要求LED指示灯点亮4秒钟后,再熄灭4秒钟后。并不断重复该过程。试编写8254初始化程序。 解:

LED指示灯点亮4秒钟后,再熄灭4秒钟后。并不断重复该过程。利用通道2输出接LED指示灯,需要产生周期为8秒的方波。

将5MHz时钟加到CLK2端,OUT2输出的方波脉冲周期最大为0.2μs×65536=13107.2μs=13.1072ms,达不到8秒。此时可以使用2个8254通道级连方式来实现。若级连1、2通道,设其初值分别为N1和N2,8s/(1/5MHz) =40000000,则级连后作为一个整体的计数值为N=20000000=N1×N2=5000×8000。

通道1,可选方式2或3,

通道2,选方式3,连续波形,实现不断重复。 N1=5000 N2=8000 ;通道1初始化程序

MOV AL, 01110101B ;通道1方式字,读写两字节,方式2,BCD码计数 OUT 43H,AL

MOV AX, 5000H

OUT 41H,AL ;写人低字节

MOV AL, AH

OUT 41H, AL ;写人高字节 HLT

;通道2初始化程序

MOV AL,10110111B ;通道2控制字,读写两字节,方式3,BCD码计数 OUT 43H, AL

MOV AX, 8000H OUT 42H, AL ;写人低字节

39

MOV AL, AH

OUT 42H, AL ;写人高字节

14. 设8253的通道0----2和控制口的地址分别为300H、302H、304H、306H,定义通道0工作在方式3,CLK0=2MHz,使编写初始化程序,并画出硬件连接图。要求通道0输出1.5KHz的方波,通道1用通道0的输出作计数脉冲,输出频率为300Hz的序列负脉冲。通道2每秒钟向CPU发50次中断请求。 解:

8253的口的地址分别为300H、302H、304H、306H,连续的偶地址,说明CPU为8086.

(1)通道0输出1.5KHz的方波,应工作在方式3,2MHz/1.5K Hz=1334,则可得通道0的定时初值为1334=536H。

(2)通道1用通道0的输出作计数脉冲,输出频率为300Hz的序列负脉冲,应工作在方式2, 1.5K Hz /300Hz =5。通道1的定时初值为5。

(3)通道2每秒钟向CPU发50次中断请求,可工作在方式2(或方式3),以2MHz信号作计数脉冲, 2MHz /50Hz=40000=9C40H。通道2的定时初值9C40H(也可用通道1的输出作计数脉冲) 硬件连结图如下图所示。

8253的初始化程序: ;通道0初始化程序

MOV DX,306H

MOV AL,00110110B ;通道0控制字,读写两字节,方式3,二进制计数 OUT DX, AL MOV DX,300H

MOV AX, 536H OUT DX, AL ;写人低字节 MOV AL, AH

OUT DX, AL ;写人高字节 ;通道1初始化程序

MOV DX,306H

MOV AL,01010100B ;通道1控制字,只读写低宇节,方式2,二进制计数 OUT DX, AL ;写人方式字 MOV DX,302H

40

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

Top