微机原理与接口技术 顾晖 习题参考答案

更新时间:2023-12-21 16:45:01 阅读量: 教育文库 文档下载

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

微机原理与接口技术 答案

目录

第1章 习题答案 ...................................................................................... 2 第2章 习题答案 ...................................................................................... 2 第3章 习题答案 ...................................................................................... 5 第4章 习题答案 ...................................................................................... 8 第5章 习题答案 .................................................................................... 20 第6章 习题答案 .................................................................................... 29 第7章 习题答案 .................................................................................... 29 第8章 习题答案 .................................................................................... 30 第9章 习题答案 .................................................................................... 33 第10章 习题答案 .................................................................................. 37 第11章 习题答案 .................................................................................. 40

1

第1章 习题答案

1.计算机硬件的基本组成部分有哪些?简述各部分的功能 答:

计算机硬件的基本组成部分有:运算器、控制器、存储器、输入设备和输出设备五大组成部分;

运算器功能:完成各种算术运算或逻辑运算;

控制器功能:发出各种控制信息,使计算机各部件协调工作; 存储器功能:存储程序和数据;

输入设备:将程序和数据输入的部件; 输出设备:将结果数据输出的部件。 2.简述微型计算机系统的组成。4分 答:

以微型计算机为核心,配以鼠标、键盘等外围设备、电源、接口电路,以及控制计算机工作的软件构成微型计算机系统。 3.简述总线控制逻辑的任务。 答:

主板与外部设备之间的数据传输必须通过系统总线,所以系统总线包含的信号线必须满足下列各种输入/输出操作的需要:① 访问分布于主板之外的存储器;② 访问I/O接口;③ 适应外部中断方式;④ 适应存储器直接与外部设备交换信息。总线控制逻辑的任务就是产生和接受这些操作所需要的信号。

4.简述冯·诺依曼的“程序存储和程序控制”原理。 答:

计算机有运算器、控制器、存储器、输入设备和输出设备五大部分组成,计算机内部采用二进制数据的格式表示数据和指令。程序将事先保存在内存储器中,计算机在工作时,不需要操作人员干预,自动逐条取出指令并执行。 5.简述微型计算机系统的启动过程。4分 答:

CPU首先执行主板上BIOS中的自检程序;执行引导装入程序,依次搜寻硬盘、光盘等;读出引导记录,装入引导程序;由引导程序将操作系统装入内存;执行操作系统。 6. BIOS是什么?简述系统BIOS代码完成的工作。 答:

BIOS是Basic Input Output System的缩写,指的是基本输入输出系统\。它是一组固化到计算机ROM芯片上的程序,保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。 7.答:略。 2

第2章 习题答案

1.答:

2

为了区别所使用的数制,一般用以下两种书写格式表示:

① 用括号将数字括起,后面加数制区分,数制用下标的形式给出;

② 用后缀区分,二进制数、十进制数、八进制数、十六进制数的后缀分别为字母B(或b)、D(或d)、O(或o)或Q(或q)、H(或h)。

例如:十六进制数56.78可以表示成(56.78)16或56.78H; 十进制数56.78可以表示成(56.78)10或56.78D。 2.答:

123D采用十进制,0AFH采用十六进制,77Q采用八进制,1001110B采用二进制。 3.答:

字长为8位的二进制数原码表示的最大值:127,最小值:-127;补码表示的最大值:127,最小值:-128。

字长为16位的二进制数原码表示的最大值:32767,最小值:-32767;补码表示的最大值:32767,最小值:-32768。

4.把下列十进制数分别转换为二进制数和十六进制数。2分

1)125 2)255 3)72 4)5090 答:

(1)125D=0111 1101B=7DH (2) 255D=1111 1111B=FFH (3)72D=0100 1000B=48H

(4)5090D=0001 0011 1110 0010B=13E2H 5.答:

(1)1111 0000B=240D=F0H (2) 1000 0000 B =128D =80H (3)1111 1111 B =255 D =FFH (4)0101 0101B=85D=55H 6.答:

(1)FFH=255D=1111 1111B

(2) ABCDH=43981D=1010 1011 1100 1101B (3) 123H=291D=0000 0001 0010 0011B (4) FFFFH=65535D=1111 1111 1111 1111B 7.答:

(1)8位时(16)原=0001 0000 ; (16)补=0001 0000;

16位时(16)原=0000 0000 0001 0000 ; (16)补=0000 0000 0001 0000; (2) 8位时(-16)原=1001 0000 ; (-16)补=1111 0000;

16位时(-16)原=1000 0000 0001 0000 ; (-16)补=1111 1111 1111 0000; (3) 8位时(+0)原=0000 0000; (+0)补=0000 0000;

16位时(+0)原=0000 0000 0000 0000; (+0)补=0000 0000 0000 0000; 3

(4) 8位时(-0)原=1000 0000 ; (-0)补=0000 0000;

16位时(-0)原=1000 0000 0000 0000; (-0)补=0000 0000 0000 0000; (5) 8位时(127)原=0111 1111; (127)补=0111 1111;

16位时(127)原=0000 0000 0111 1111; (127)补=0000 0000 0111 1111; (6) 8位时-128超过原码表示的范围; (-128)补=1000 0000;

16位时(-128)原=1000 0000 1000 0000; (-128)补=1111 1111 1000 0000;

3

(7) 8位时(121)原=0111 1001 ; (121)补=0111 1001;

16位时(121)原=0000 0000 0111 1001; (121)补=0000 0000 0111 1001; (8) 8位时(-9)原=1000 1001 ; (-9)补=1111 0111;

16位时(-9)原=1000 0000 0000 1001; (-9)补=1111 1111 1111 0111; 8.实现下列转换 2分

1)[X]原=10111110,求[X]补 2)[X]补=11110011,求[-X]补 3)[X]补=10111110,求[X]原 4)[X]补=10111110,求[X]反 答:

(1) [x]补=1100 0010;(2)[-x]补=0000 1101;(3)[x]原=1100 0010;(4)[x]反=1011 1101。 9.答:

(1)A>B;(2)A<B 10.答:

(1)溢出;(2)13H;(3)溢出;(4)EDH;(5)EDH。 11.完成下列8位二进制数的逻辑运算 1分

1)11001100∧10101010 2)11001100∨10101010 3)11001100○+10101010 4)10101100∧10101100 5)10101100 ○+10101100 6)10101100∨10101100

7)~10101100 答:

(1)1000 1000;(2)1110 1110;(3)0110 0110;(4)1010 1100; (5)0000 0000;(6)1010 1100;(7)=0101 0011。 12.答:

(1)30H=48,字符为‘0’;(2)39H=57,字符为‘9’;(3)42H=66,字符为‘B’; (4)62H=98,字符为‘b’;(5)20H=32,字符为空格;(6)7H=7,字符为报警符; 13、答: 十进制 49 123 7 62

压缩BCD码 0100 1001B

0001 0010 0011B 0000 0111B 0110 0010B 非压缩BCD码

0000 0100 0000 1001B

0000 0001 0000 0010 0000 0011B 0000 0111B

0000 0110 0000 0010B ASCII码 3439H

4

313233H 37H 3632H 4

第3章 习题答案

1.(1)答:

物理地址:物理地址(PA)是20位无符号二进制数,是CPU访问存储器的实际地址。每个存储单元对应一个物理地址。8086存储空间的物理地址范围是:00000H~FFFFFH。 逻辑地址:采用分段结构的存储器中,把通过段地址和偏移地址来表示的存储单元的地址称为逻辑地址,记为:段地址:偏移地址。

段地址:8086规定各逻辑段从节的整数边界开始,即段首地址二进制值的低4位是0000,把段首地址的高16位称为段基址或段地址。

偏移地址:把某一存储单元相对于段地址的段内偏移量称为偏移地址(也称有效地址EA)。段地址和偏移地址都是是16位无符号二进制数。 (2)答:

时钟周期:计算机的“时钟”是由振荡源产生的、幅度和周期不变的节拍脉冲,每个脉冲周期称为时钟周期,又称为T状态或T周期,时钟周期是微机系统工作的最小时间单元。 总线周期:当CPU访问存储器或输入/输出端口时,需要通过总线进行读或写操作,这个过程称为总线周期(Bus Cycle)。总线周期是利用总线完成一次读/写所需要的时间。

指令周期:执行一条指令所需要的时间称为指令周期(Instruction Cycle)。指令周期由1个或多个总线周期组成。

解释下边名词:(3)最小模式、最大模式 1分 答:

最小模式:也称为单处理器模式,是指系统中只有一片8086微处理器,所连接的存储器容量不大、片子不多,所要连接的I/O端口也不多,系统的控制总线就直接由CPU的控制线供给,从而使得系统中的总线控制电路减到最少。最小模式适用于较小规模的系统。

最大模式:相对于最小模式而言,适用于中、大型规模的系统。系统中有多个微处理器,其中一个是主处理器8086,其他的处理器称为协处理器,承担某方面专门的工作。需要增加一片8288来对8086CPU发出的控制信号进行变换和组合,以得到对存储器或I/O端口的读/写信号和对锁存器、总线收发器的控制信号。 2.答:

EU:负责指令的执行,即从总线接口部件BIU的指令队列取指令,指令执行后向BIU送回运算结果,同时把运算结果的状态特征保存到标志寄存器中。

BIU:负责CPU与存储器、I/O设备之间的数据传送。BIU完成以下操作:取指令送给指令队列、配合执行部件从指定的内存单元或者外设端口中取数据、将数据传送给执行部件或者把执行部件的操作结果传送到指定的内存单元或外设端口中。

8086的BIU和EU在很多时候可以并行工作,使得取指令、指令译码和执行指令这些操作构成操作流水线。

① 当指令队列中有两个空字节,且EU没有访问存储器和I/O接口的要求时,BIU会自动把指令取到指令队列中。

② 当EU准备执行一条指令时,它会从指令队列前部取出指令执行。在执行指令的过程中,

5

JMP EXIT

DISPNOTMATCH: MOV DX,OFFSET NM MOV AH,9 INT 21H EXIT:

MOV AH,4CH INT 21H CODE ENDS END START 14

23. 答: 24. 答: DSEG SEGMENT DATA DB 5,6,7,8 DW ?

DATA2 DB 1,10,100,20 DSEG ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DSEG START:

MOV AX,DSEG MOV DS,AX MOV DX,0 MOV CX,4 LEA SI,DATA LEA DI,DATA2 NEXT:

MOV AL,[DI] MOV BL,[SI] CALL DOMUL ADD DX,AX INC DI INC SI LOOP NEXT

MOV WORD PTR DATA+4,DX EXIT:

MOV AH,4CH INT 21H DOMUL PROC MUL BL RET

DOMUL ENDP CODE ENDS

16

END START MOV CX,100

MOV AX,SEG LIST MOV DS,AX

MOV AX,SEG BLK MOV ES,AX LEA SI,LIST ADD SI,CX LEA DI,BLK ADD DI,CX STD

REP MOVSB 15

25. 答:

JMP SHORT LAB指令是一条双字节指令。这条指令取出后,(IP)=0102H,转移目标的偏移地址=(IP)+位移量。所以,转移目标的物理地址=(CS)╳16+(IP)+位移量。 (1)转移目标的物理地址=(CS)╳16+0158H (2)转移目标的物理地址=(CS)╳16+0182H (3)转移目标的物理地址=(CS)╳16+017AH (4)转移目标的物理地址=(CS)╳16+01E2H 26. 答: DSEG SEGMENT BUFFER DW 8 DB '12345678' DSEG ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DSEG START:

MOV AX,DSEG MOV DS,AX MOV CX,BUFFER SAR CX,1

LEA SI,BUFFER MOV DI,SI ADD DI,2 AGAIN: ADD SI,2 MOV AL,[SI] AND AL,0FH

SAL BYTE PTR [SI+1],1 SAL BYTE PTR [SI+1],1 SAL BYTE PTR [SI+1],1 SAL BYTE PTR [SI+1],1 OR AL,BYTE PTR [SI+1]

17

MOV [DI],AL INC DI LOOP AGAIN EXIT:

MOV AH,4CH INT 21H CODE ENDS END START

DSEG SEGMENT ORG 10H DAT DB 10 DB ? DSEG ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DSEG START: MOV AX,DSEG MOV DS,AX MOV AL,DAT MOV BL,AL SAL BL,1 ADD AL,BL MOV CL,2 SAL BL,CL ADD AL,BL MOV DAT+1,AL EXIT: MOV AH,4CH INT 21H CODE ENDS END START

16

27. 答: 28. 答: 29. 答: DSEG SEGMENT ORG 10H

DAT DB 10H,20H DB ?,? DSEG ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DSEG START:

MOV AX,DSEG

18

MOV DS,AX MOV AL,DAT MOV AH,DAT+1 MOV CL,3 SAR AX,CL MOV DAT+2,AL MOV DAT+3,AH EXIT:

MOV AH,4CH INT 21H CODE ENDS END START DSEG SEGMENT

BLOCK DW 8 DUP (10H,20H,-3,-9) DSEG ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DSEG START:

MOV AX,DSEG MOV DS,AX LEA SI,BLOCK MOV CX,32 AGAIN:

MOV AX,[SI] CMP AX,0 JNS NEXT NEG AX

MOV [SI],AX NEXT: INC SI INC SI LOOP AGAIN EXIT:

MOV AH,4CH INT 21H CODE ENDS END START 17

DSEG SEGMENT ORG 3030H

DAT DW 1234H,-1234H,?,? DSEG ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DSEG

19

START:

MOV AX,DSEG MOV DS,AX MOV AX,DAT MOV BX,DAT+2 IMUL BX

MOV DAT+4,AX MOV DAT+6,DX EXIT:

MOV AH,4CH INT 21H CODE ENDS END START 18

第5章 习题答案

1. 答:

标号是指令的符号地址,可用作控制转移指令的操作数。 标号具有3种属性:段属性、偏移属性和类型属性。 2. 答:

变量是存储单元的符号地址。

变量具有3种属性:段属性、偏移属性和类型属性。 3. 答:

伪指令语句,也称指示性语句,是不可执行语句,汇编后不产生目标代码,它仅仅在汇编过程中告诉汇编程序如何汇编源程序。

宏是一个以宏名定义的指令序列。一旦把某程序段定义成宏,则可以用宏名代替那段程序。在汇编时,要对宏进行宏展开,即把以宏名表示的地方替换为该宏对应的指令序列的目标代码。宏指令可以看成指令语句的扩展,相当于多条指令语句的集合。 4. 答:

汇编语言表达式中有如下运算符:算术操作符、逻辑操作符、移位操作符、关系操作符、数值回送操作符和属性操作符。

操作符所完成的运算在汇编阶段进行。 5. 答: 略。

6. 按下列要求,写出各数据定义语句 2分

1)DB1为10H个重复的字节数据序列:1,2,5个3,4。 2)DB2为字符串?STUDENTS?。

3)DB3为十六进制数序列:12H,ABCDH。

4)用等值语言给符号COUNT赋值DB1数据区所占字节数,该语句写在最后。答: (1)DB1 DB 10H DUP(1,2, 5 DUP(3),4) (2)DB2 DB 'STUDENT' (3)BD3 DW 12H,0ABCDH

20

(4)COUNT EQU DB2-DB1 7. 答:

第一个OR表示该指令是OR指令,在程序运行时,该OR操作被执行。 第二个OR是逻辑操作符OR,在汇编时,OR运算被执行。

8.对于下面的数据定义,各条MOV指令单独执行后,有关寄存器的内容是什么? 4分 PREP DB ?

TABA DW 5 DUP(?) TABB DB ?NEXT? TABC DD 12345678H

1)MOV AX,TYPE PREP 2)MOV AX,TYPE TABA 3)MOV CX,LENGTH TABA 4)MOV DX,SIZE TABA 5)MOV CX,LENGTH TABB 6)MOV DX,SIZE TABC 答:

(1)(AX)=1 (2)(AX)=2 (3)(CX)=5 (4)(DX)=0AH (5)(CX)=1 (6)(DX)=4

9.设数据段DSEG中符号及数据定义如下,试画出数据在内存中的存储示意图。4分 DSEG SEGMENT DSP=100 SAM=DSP+20

DAB DB ?/GOTO/?,0DH,0AH DBB DB 101B,19,?a? .RADIX 16

CCB DB 10 DUP(?) EVEN

DDW DW ?12?,100D,333,SAM .RADIX 10 EDW DW 100 LEN EQU $-DAB DSEG ENDS 答:略。 10. 答: 19

11. 答: 12. 答: DSEG SEGMENT

STRING DB 'NEXT123DF$' DSEG ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DSEG START:

21

MOV AX,DSEG MOV DS,AX LEA SI,STRING MOV CX,0 AGAIN:

MOV AL,[SI] CMP AL,'$' JZ NEXT INC CX INC SI JMP AGAIN NEXT: MOV DX,CX MVDAT:

MOV [SI]+2,AL DEC SI

MOV AL,[SI] LOOP MVDAT MOV [SI]+2,AL

MOV WORD PTR [SI],DX EXIT:

MOV AH,4CH INT 21H CODE ENDS END START DSEG SEGMENT

STRING DB 'It is FEB&03' COUNT=$-STRING DSEG ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DSEG START:

MOV AX,DSEG MOV DS,AX LEA SI,STRING MOV CX,COUNT AGAIN:

MOV AL,[SI] CMP AL,'&' JNZ NEXT MOV AL,' ' MOV [SI],AL NEXT: INC SI

22

LOOP AGAIN EXIT:

MOV AH,4CH INT 21H CODE ENDS END START

DSEG SEGMENT

BLOCK DB 4,5,-2,7,8,9,2,1,0AH,1BH,87H,23H,44H,33H,45H,28H,0DH,8EH,66H,22H COUNT=$-BLOCK DSEG ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DSEG START: MOV AX,DSEG MOV DS,AX

20

13. 答: (3)

(4)(2) (5)(1) (6) 1B50H 1000H 1A70H 150BH

上表左侧的序号,表示对应操作完成后SP指向的栈顶的位置。 14.设计以下子程序:

1)将AX中的4位BCD码转换为二进制码,放在AX中返回。

2)将AX中无符号二进制数(<9999D)转换为4位BCD码串,放在AX中返回。 3)将AX中有符号二进制数转换为十进制数ASCII码字符串,DX和CX返回串的偏移地址和长度。(4分)答: SUB1 PROC MOV BX,AX MOV CL,4 ROL BX,CL MOV AX,BX AND AX,000FH MOV CX,1000

MUL CX ;千位在DX,AX,有效值在AX中 PUSH AX MOV CL,4 ROL BX,CL MOV AX,BX AND AL,0FH MOV CL,100

23

MUL CL ;百位在AX POP CX

ADD AX,CX ;千百位在AX PUSH AX MOV CL,4 ROL BX,CL MOV AX,BX AND AL,0FH MOV CL,10

MUL CL ;十位在AX POP CX

ADD AX,CX ;千百十位在AX MOV CL,4 ROL BX,CL AND BX,0FH ADD AX,BX RET

SUB1 ENDP SUB2 PROC MOV DX,0 MOV CX,1000

DIV CX ;千位数字在AX中 MOV BX,AX MOV CL,4

ROR BX,CL ;千位数字移至BX的高4位 MOV AX,DX MOV CL,100

DIV CL ;百位数字在AL中 OR BH,AL ;千百位置BH MOV AL,AH MOV AH,0 MOV CL,10

DIV CL ;十位数字在AL中,个位在AH中 MOV CL,4 SAL AL,CL

MOV BL,AL ;十位数字置BL高4位 OR BL,AH ;十位个位置BL MOV AX,BX RET

SUB2 ENDP

SUB3 PROC PUSH BX MOV BX,0 LEA DI,ASCNUM

24

CMP AX,0 JNS CHG NEG AX

MOV BYTE PTR [DI],'-' JMP NEXT CHG: N5: MOV AL,AH MOV AH,0 MOV CL,10 DIV CL CMP BX,0 JNZ N6 CMP AL,0 JZ N7 MOV BX,2

15. 答: 16. 答: 17. 答:略。 18. 答:略。 CODE SEGMENT ASSUME CS:CODE START: MOV AH,1 INT 21H CMP AL,'a' JB NOCHG CMP AL,'z' JA NOCHG SUB AL,20H NOCHG: MOV DL,AL MOV AH,2 INT 21H EXIT:

MOV AH,4CH INT 21H CODE ENDS END START

;键盘输入的成绩以逗号分割 ;输入完毕按回车结束 DSEG SEGMENT

STRING DB 40,?,40 DUP(?) CJ DB 10 DUP(?)

25

S6 DB ? S7 DB ? S8 DB ? S9 DB ? S10 DB ? DSEG ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DSEG START: MOV AX,DSEG MOV DS,AX LEA DX,STRING MOV AH,10 INT 21H LEA DI,CJ LEA SI,STRING+2 MOV BH,0 MOV AL,0 AGAIN: MOV BL,[SI] CMP BL,',' JZ NEXT CMP BL,0DH JZ NEXT SUB BL,30H MOV CL,10 MUL CL ADD AL,BL INC SI JMP AGAIN NEXT: MOV [DI],AL INC DI MOV AL,0 INC BH INC SI CMP BL,0DH JNZ AGAIN TJ: LEA DI,CJ TJ1: MOV AL,[DI] CMP AL,100 JZ ADDS10

26

CMP AL,90 JAE ADDS9 CMP AL,80 JAE ADDS8 CMP AL,70 JAE ADDS7 CMP AL,60 JAE ADDS6 ADDS10: INC S10 JMP TJNEXT ADDS9: INC S9 JMP TJNEXT ADDS8: INC S8 JMP TJNEXT ADDS7: INC S7 JMP TJNEXT ADDS6: INC S6 TJNEXT: INC DI DEC BH JNZ TJ1 EXIT: MOV AH,4CH INT 21H CODE ENDS END START

24

19. 答: 20. 答: 21. 答: 22. 答: MOV BX,X CMP BX,Y JG SET1 JZ SET0 MOV AL,-1 JMP EXIT

SET1: MOV AL,1 JMP EXIT

27

SET0: MOV AL,0 EXIT: … LEA SI,STR1 LEA DI,STR2 MOV CX,COUNT

NEXT: MOV BX,[SI] CMP BX,[DI] JNZ NOEQ INC SI INC DI LOOP NEXT MOV AX,0FFFFH JMP EXIT

NOEQ: MOV AX,SI EXIT: …

DATA SEGMENT

LINTAB DW 12,-5,33,21,9 COUNT DW ($-LINTAB)/2 KEYBUF DW 21 ADDR DW ? DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA,ES:DATA START: MOV AX,DATA MOV DS,AX MOV ES,AX LEA DI,LINTAB MOV CX,COUNT MOV AX,KEYBUF REPNZ SCASW JNZ SET1 SUB DI,2 MOV ADDR,DI JMP EXIT

SET1: MOV ADDR,0FFFFH EXIT: MOV AX,4C00H INT 21H CODE ENDS END START DATA SEGMENT BUF DB 100 COUNT DB ? DB 100 DUP(?)

MESS1 DB 'NUMBER:$'

28

MESS2 DB 'LETTER:$' MESS3 DB 'LENGTH:$' DATA ENDS MOV DL,0AH MOV AH,2

INT 21H ;换行显示 MOV AH,9 LEA DX,MESS3 INT 21H 25

23. 答: DATA SEGMENT

STRING DB 'HELL MY MASM!' COUNT=$-STRING DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV BX,0 26 27

第6章 习题答案

略。

第7章 习题答案

1.半导体存储器的分类如下:

2.什么是RAM和ROM?RAM和ROM各有什么特点?2分

随机存取存储器RAM,又称为读/写存储器,其每个存储单元的内容可以随时按需要进行读/写操作。RAM主要用来保存各种输入/输出数据、中间结果、与外存交换的信息,也可作堆栈使用。而ROM的内容只能读出,不能写入或改写,一般用来存放固定的程序和数据。

3.半导体存储器的主要技术指标:存储容量、读/写速度(存取时间和存储周期)、可靠性。 4.8086CPU和存储器连接时要考虑哪些方面的因素?(2分)

8086CPU和存储器连接时要考虑:存储芯片数,AB、DB和一些控制信号的连接,奇、偶片的设置,地址译码方式等。

5.常用的存储器地址译码方式有哪些?(2分)

常用的存储器地址译码方式有:全地址译码、部分地址译码、线选法。 6.在8086系统中,若用1024*1位的RAM芯片组成16K*8位的存储器,需要多少芯片?系统地址

29

总线中有多少位参与片内寻址?多少位用作芯片选择信号?(2分)

需要(16k?8)/(1024?1)=128片,CPU地址线中片内寻址10位,片外4位。 7.

第8章 习题答案

1.简述I/O 接口的功能。(2分)

I/O 接口的功能:对输入/输出数据进行缓冲和锁存、对信号的形式和数据的格式进行变 换、对I/O 端口进行寻址、提供联络信号等。

2.CPU与外设之间的数据传输方式有哪些?简要说明各自的含义。(2分)

CPU与外设之间的数据传输方式有程序控制方式(无条件传输方式和程序查询方式)、中断方式、DMA、通道控制和I/O处理器。

无条件传输方式:CPU不需要了解外设状态,直接与外设传输数据,适用于按钮开关、发光二极管等简单外设与CPU的数据传送过程。

程序查询方式:CPU与外设传输数据之前,先检查外设状态,如果外设处于“准备好”状态(输入设备)或“空闲”状态(输出设备),才可以传输数据。

中断方式:外设在数据准备好之后再通知CPU,这样,CPU在没接到外设通知前只管做自己的事情,只有接到通知时才执行与外设的数据传输工作。

DMA:直接存储器存取方式,将外设与内存间建立起直接的通道,CPU不再直接参加外设与内存间的数据传输,而是在系统需要进行DMA传输时,将CPU对地址总线、数据总线及控制总线的管理权交由DMA控制器进行控制。

通道控制和I/O处理器:主CPU启动通道工作,通道控制器即从主存或通道存储器中取出相应的程序,控制数据的输入/输出。

3.什么是端口?通常有哪几类端口?I/O端口的寻址方式有哪两种?在80X86系统中,采用哪一种?(2分)

每个I/O接口内部一般由3类寄存器组成,CPU与外设进行数据传输时,各类信息在接口中进入不同的寄存器,一般称这些寄存器为I/O端口。包括数据端口、状态端口、控制端口。端口寻址方式有存储器映像的I/O寻址、I/O映像的I/O寻址。80X86系统采用后者。

4.M/:低电平,ALE:高电平,:低电平;输入时DT/为低电平,为低电平有效;输出时DT/为高电平,为低电平有效。

5.在输入/输出电路中,为什么常常要使用锁存器和缓冲器?(2分) 在外设接口电路中,经常需要对传输过程中的信息进行锁存或缓冲,所以需要锁存器和缓冲器。 6.

DATA SEGMENT AT 2000H ORG 2000H

BUF DB 100 DUP(?) DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA MAIN PROC FAR

START: MOV AX,DATA

30

MOV DS,AX LEA SI,BUF MOV CX,100

INPUT: MOV DX,0FFE2H IN AL,DX ;读状态端口

TEST AL,01H ;测输入状态D0位 JZ INPUT ;未“准备好”转INPUT MOV DX,0FFE0H ;读取输入字符 IN AL,DX

MOV [SI],AL ;输入字符存缓冲区 INC SI 30

LOOP INPUT

MOV AH,4CH ;返回DOS INT 21H CODE ENDS END START 7. LED0 IOW LED1 LED7 OE G Q0

74LS373 D0~D7 Q1 Q7

. .

...

Y ≥1 D0~D7

CODE SEGMENT ASSUME CS:CODE MAIN PROC FAR START: PUSH DS MOV AX,0

31

PUSH AX

MOV DX,200H ;设I/O 端口为200H AGAIN: MOV AH,1 ;读键盘缓冲区字符 INT 16H

CMP AL,1BH ;若为“Esc”键,则退出 JZ EXIT

MOV AL,0FFH ;灯全亮 OUT DX,AL ;输出控制LED

MOV BX,5 ;向子程序传递参数,实现50ms 软延时 CALL DELAY ;子程序DELAY 实现10ms 延时 NOT AL ;灯全灭

MOV BX,2 ;向子程序传递参数,实现20ms 软延时 CALL DELAY JMP AGAIN EXIT: RET MAIN ENDP

DELAY PROC NEAR PUSH CX

WAIT0: MOV CX,2801 WAIT1: LOOP WAIT1 DEC BX JNZ WAIT0 POP CX 31 RET

DELAY ENDP CODE ENDS END START 8.

CODE SEGMENT ASSUME CS:CODE MAIN PROC FAR START: PUSH DS MOV AX,0 PUSH AX

MOV DX,200H ;设I/O端口为200H MOV CL,01H ;设置输出初值

AGAIN: MOV AH,1 ;读键盘缓冲区字符 INT 16H

CMP AL,1BH ;若为“Esc”键,则退出 JZ EXIT MOV AL,CL

OUT DX,AL ;输出控制LED

MOV BX,50 ;向子程序传递参数,实现0.5s软延时

32

CALL DELAY ;子程序DELAY实现10ms延时 ROL CL,1 ;循环左移1位 JMP AGAIN EXIT: RET MAIN ENDP

DELAY PROC NEAR PUSH CX

WAIT0: MOV CX,2801 WAIT1: LOOP WAIT1 DEC BX JNZ WAIT0 POP CX RET

DELAY ENDP CODE ENDS END START 32

第9章 习题答案

1.答:

可编程芯片具有灵活的多种工作方式,其工作方式的设置通过软件编程实现。 2.答:

8255A的内部结构如图9-1所示,它由数据总线缓冲器,数据端口A、端口B和端口C, A组和B组控制电路和读/写控制逻辑4部分组成。

3.8255A有几种工作方式?简述各种工作方式的特点。(2分) 答:

8255A有方式0、方式1、方式2三种工作方式。8255A方式0是基本输入/输出方式。在方式0下,每一个端口都可作为基本的输入或输出口,端口C的高4位和低4位以及端口A、端口B都可独立地设置为输入口或输出口。方式1是单向选通输入/输出方式。8255A在工作方式1时,把3个数据端口分为A、B两组,分别称为A组控制和B组控制。此时,端口A和端口B仍作为数据的输入或输出口,而端口C作为联络控制信号,被分成两部分,一部分作为端口A和端口B的联络信号,另一部分仍可作为基本的输入/输出口。8255A方式2是双向选通输入/输出方式,只有端口A可以工作于方式2。8255A端口A工作于方式2时,可使8255A与外设进行双向通信,可采用查询方式或中断方式进行传输。 4.答:通过JMP AGAIN指令实现循环检测。 5.答:

软件定时和硬件定时。软件定时是通过执行一段循环程序来实现的。通过调整循环次数可以控制定时间隔的长短。其特点是:不需要专用硬件电路、成本低,但是耗费CPU的时间,降低了CPU的工作效率。硬件定时是采用定时/计数器或单稳延时电路实现的。其特点是:定时时间长、使用灵活而且不占用CPU的时间,适用范围广。 6.答:

由于8253的读/写操作对系统时钟没有特殊的要求,因此它几乎可以应用于任何一种微处理

33

器系统中,可作为可编程的方波频率发生器、分频器、实时时钟、事件计数器或单脉冲发生器等。每片8253定时/计数器有3个独立的16位计数通道,每个计数通道最高计数速率可达2.6MHz。每个计数器可编程设定6种工作方式,使用时可以根据需要选择其中的一种工作方式。每个计数通道可按二进制或十进制来计数。

7.8253有几种工作方式?简述各种工作方式的特点。(2分) 答:

8253的每个计数器都有6种工作方式:方式0~方式5。采用方式0工作方式,8253可完成计数功能,且计数器只计一遍。方式1是硬件触发单稳态方式,采用这种工作方式可在输出端OUT输出单个负脉冲信号,脉冲的宽度可通过编程来设定。采用方式2可产生连续的负脉冲信号,可用作频率发生器。采用方式3可产生连续的方波信号, 可用作方波发生器。方式4是软件触发的选通方式。采用方式4可产生单个负脉冲信号,负脉冲宽度为一个时钟周期,由OUT指令触发。方式5是硬软件触发的选通方式。采用方式5可产生单个负脉冲信号,负脉冲宽度为一个时钟周期。由GATE的上升沿触发。

8.8253初始化编程时需要遵循的原则是什么?(2分) 答:

因此8253在初始化编程时,必须遵守两条原则:

① 在对某个计数器设置初值之前,必须先写入控制字;

② 在设置计数初始值时,要符合控制字的规定,即只写低位字节,还是只写高位字节,还是高、低位字节都写(分两次写,先低字节后高字节)。

9.答:

8253初始化编程步骤是:先写控制字到8253的控制端口,再写计数器初值到相应的计数器端口。

10.试按如下要求分别编写初始化程序,已知8253计数器0—2和控制端口地址依次为200H~203H。

1)使计数器1工作在方式0,仅用8位二进制数计数,计数初值为120. 2)使计数器0工作在方式1,按BCD码计数,计数值为2011。

3)使计数器2工作在方式2,按二进制数计数,计数值为F050H。(4分) 答:

(1)MOV DX,203H MOV AL,50H OUT DX,AL MOV DX,201H MOV AL,120 OUT DX,AL

(2)MOV DX,203H

MOV AL,33H ;00110011B OUT DX,AL MOV DX,200H MOV AX,2011H OUT DX,AL MOV AL,AH OUT DX,AL

(3)MOV DX,203H

34

MOV AL,B4H ;10110100B OUT DX,AL MOV DX,202H MOV AX,0F050H OUT DX,AL MOV AL,AH OUT DX,AL 11.答:

8253初始化程序段:

MOV AL,36H ;方式控制字00110110B=36H

OUT 43H,AL ;将控制字送入8253A控制端口43H,即控制寄存器中MOV AX,11932 ;初值送AX寄存器

OUT 40H,AL ;将初值的低8位输出计数通道0端口40H MOV AL,AH ;初值的高8位送AL寄存器

OUT 40H,AL ;将初值的高8位输出计数通道0端口40H 中断服务程序在第十章学完后再做,参考程序如下: 在主程序中数据段定文变量N: N DB 100 M DB 01H

中断服务程序: INT_SER PROC PUSH AX PUSH DX 34 DEC N JNZ RENT MOV N,100 MOV DX,350H XOR M,01H MOV AL,M OUT DX,AL POP DX POP AX RENT: IRET INT_SER ENDP

12.答:参考程序段:

MOV AL,31H ;方式控制字00110001B=31H MOV DX,403H OUT DX,AL MOV DX,400H MOV AX,1000H OUT DX,AL MOV AL,AH OUT DX,AL

35

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

Top