微机原理与接口技术 - 基于8086和Proteus仿真(第2版) 习题参考答案 下载本文

第1章 习题答案

1.答:

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

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

② 用后缀区分,二进制数、十进制数、八进制数、十六进制数的后缀分别为字母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.答:

(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=43947D=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;

1

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

16位时(+0)原=0000 0000 0000 0000; (+0)补=0000 0000 0000 0000; (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; (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.答:

(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.答:

(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、答: 十进制 压缩BCD码 非压缩BCD码 ASCII码

49 0100 1001B 0000 0100 0000 1001B 3439H

123 0001 0010 0011B 0000 0001 0000 0010 0000 0011B 313233H 7 0000 0111B 0000 0111B 37H 62 0110 0010B 0000 0110 0000 0010B 3632H

2

第2章 习题答案

1.(1)答:

物理地址:物理地址(PA)是20位无符号二进制数,是CPU访问存储器的实际地址。每个存储单元对应一个物理地址。8086存储空间的物理地址范围是:00000H~FFFFFH。

逻辑地址:采用分段结构的存储器中,把通过段地址和偏移地址来表示的存储单元的地址称为逻辑地址,记为:段地址:偏移地址。

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

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

时钟周期:计算机的“时钟”是由振荡源产生的、幅度和周期不变的节拍脉冲,每个脉冲周期称为时钟周期,又称为T状态或T周期,时钟周期是微机系统工作的最小时间单元。

总线周期:当CPU访问存储器或输入/输出端口时,需要通过总线进行读或写操作,这个过程称为总线周期(Bus Cycle)。总线周期是利用总线完成一次读/写所需要的时间。

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

最小模式:也称为单处理器模式,是指系统中只有一片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准备执行一条指令时,它会从指令队列前部取出指令执行。在执行指令的过程中,如果需要访问存储器或者I/O设备,那么EU会向BIU发出访问总线的请求,以完成访问存储器或者I/O接口的操作。如果此时BIU正好处于空闲状态,那么,会立即响应EU的总线请求;但如果BIU正在将某个指令字节取到指令队列中,那么,BIU将首先完成这个取指令操作,然后再去响应EU发出的访问总线的请求。

③ 当指令队列已满,而且EU又没有总线访问时,BIU便进入空闲状态。

3

④ 在执行转移指令、调用指令和返回指令时,下面要执行的指令就不是在程序中紧接着的那条指令了,而BIU往指令队列装入指令时,总是按顺序进行的。在这种情况下,指令队列中已经装入的指令就没有用了,会被自动消除。随后,BIU会往指令队列中装入另一个程序段中的指令。

3.答:

地址信号是CPU发送给内存或I/O设备的,所以地址线是单向的;

数据信号可以从CPU发送给内存或I/O设备,也可以从内存或I/O设备发送给CPU,故而数据线是双向的。

4.答:

8086CPU中有14个寄存器。它们是:4个16位的通用寄存器:AX、BX、CX、DX和8个8位的通用寄存器:AH、AL、BH、BL、CH、CL、DH、DL;指针和变址寄存器SP、BP、 SI、DI;4个16位的段寄存器CS、DS、SS和ES;标志寄存器FR;指令指针寄存器IP。

功能略。

5.答:

(1)加法运算的结果为:CEACH;CF=0,PF=1,AF=0,ZF=0,SF=1,OF=1; (2)加法运算的结果为:68ACH;CF=0,PF=1,AF=0,ZF=0,SF=0,OF=0; (3)加法运算的结果为:DDDDH;CF=0,PF=1,AF=0,ZF=0,SF=1,OF=0。

6.答:

8086CPU可寻址的存储器地址范围是00000H~FFFFFH; 可寻址的I/O端口地址范围是0000H~FFFFH。

7.答:

由于8086CPU提供20位地址,但8086中可用来存放地址的寄存器,如IP、SP、BX、SI等都是16位的,只能直接寻址64KB。为了寻址1MB存储空间,8086CPU采用了典型的存储器分段技术,即将整个存储器空间分为许多逻辑段,每个逻辑段的容量小于或等于64KB。分段后,对存储器的寻址操作不再直接用20位的物理地址,而是采用段地址加段内偏移地址的二级寻址方式。

8.答:

将AH的内容送存储单元的操作过程中:M/IO?1,WR?0,RD?1,DT/R?1; 将I/O端口的内容送AL的操作过程中:M/IO?0,WR?1,RD?0,DT/R?0。

9.答: BHE A0 有效的数据引脚 AD15~AD0(一个总线周期同时访问奇体和偶体,从奇地址单元读/写字数据的高8位,从偶地址单元读/写字数据的低8位) 操 作 从偶地址读/写一个字 0 0

4

1 0 0 1 AD7~AD0 AD15~AD8 AD15~AD8(第一个总线周期从奇字数据的低8位) AD7~AD0(第二个总线周期从偶地址单元读/写字数据的高8位) 从偶地址读/写一个字节 从奇地址读/写一个字节 从奇地址读/写一个字 0 1 1 0

10.答:

8086系统复位后,指令指针(IP)为0000H;CS寄存器为FFFFH,其他寄存器为0000H;指令队列清空。

11.答:

8086的A19/S6~A16/S3和AD15~AD0是复用信号,需要地址锁存器将地址信息保存起来,为外接存储器或外设提供地址信息。

需要锁存的信号是:地址信号及BHE信号。

12.答:

8086CPU一个基本的总线周期包含4个时钟周期:T1、T2、T3和T4 。

在T1状态,M/IO有效,指示CPU访问的是存储器还是外设,之后CPU往多路复用总线上发出地址信息,以指出要寻址的存储单元或外设端口的地址。在T1状态,CPU还必须在ALE引脚上输出一个正脉冲作为地址锁存信号。BHE信号也在T1状态送出,它用来表示数据传送的字宽。

在T2状态,CPU从总线上撤销地址,使总线的低16位浮空,置成高阻状态,为传输数据作准备。总线的最高4位(A19~A16)用来输出本总线周期的状态信息。读信号RD或写信号WR在T2状态变为有效,指示CPU将进行哪种操作(读或写)。

在T3状态,多路总线的高4位继续提供状态信息,而多路总线的低16位上出现由CPU读出的数据或者CPU从存储器或端口写入的数据。

在T4状态和前一个状态的交界处,CPU对数据总线进行采样,获得数据,总线周期结束。

13.答:

在有些情况下,外设或存储器速度较慢,不能及时地配合CPU传送数据。这时,外设或存储器会通过“READY”信号线在T3状态启动之前向CPU发一个“数据未准备好”信号,于是CPU会在T3之后插入1个或多个附加的时钟周期TW。取决与外设或存储器速度。

14.答:

两种操作时序的不同之处发生在T1和T2状态。

① 在T1状态,读周期:DT/R应输出低电平;写周期:DT/R应输出高电平。 ② 在T2状态,读周期:RD有效,而WR无效,AD15~AD0为高阻态;写周期:RD变为无效,而写信号WR变为有效,AD15~AD0在地址撤销之后立即送出要写入存储器或外设端口的数据。

5

15.答:

在最小模式下,读信号RD、ALE和DT/R、DEN等信号直接由CPU给出; 在最大模式下,总线控制器8288根据S,S和S状态信号产生读信号MRDC和IORC,

021ALE和DT/R、DEN也是由8288发出的,而且DEN信号的极性与CPU在最小模式下发

出的DEN信号正好相反。

6

第3章 习题答案

1.答:

指令中关于如何求出操作数有效地址的方法称为寻址方式。

8086CPU支持多种寻址方式,根据操作数的类型及来源大致分为3类:数据寻址、转移地址寻址和I/O寻址。 2.答:

8086汇编指令可以采用7种基本的数据寻址方式:①立即寻址;②寄存器寻址;③直接寻址;④寄存器间接寻址;⑤寄存器相对寻址;⑥基址变址寻址;⑦相对基址变址寻址。

与存储器寻址方式(后5种)相比,寄存器寻址方式最快。 3.答:

如果指令中没有用前缀说明操作数存放在哪个段,则操作数默认存放在数据段。

8086系统允许操作数存放在代码段、堆栈段或附加段。此时,就需要在指令中利用前缀指明段超越。例如:

MOV ES:[1225H],AX 4.答:

(1)寄存器寻址方式

(2)寄存器间接寻址方式,PA=10300H (3)寄存器间接寻址方式,PA=20200H (4)直接寻址方式,PA=10060H (5)基址变址寻址方式,PA=10500H (6)相对基址变址寻址方式,PA=12300H (7)直接寻址方式,PA=11000H

(8)寄存器相对寻址方式,PA=10306H (9)直接寻址方式,PA=10065H 5.答:

(1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) × × × √ × √ × × √ × × 6.答: (1)源操作数的寻址方式不同。MOV AX,3000H指令的源操作数采用的是立即数寻址方式,MOV AX,[3000H]指令的源操作数采用的是直接寻址方式。

(2)指令执行后,AX的值不同。MOV AX,MEM指令执行后,AX得到的是MEM单元的内容,而MOV AX,OFFSET MEM指令执行后,AX得到的是MEM单元的地址。

(3)指令不同。MOV AX,MEMMOV AX,MEM指令执行后,AX得到的是MEM单元的内容,而LEA AX,MEM指令执行后,AX得到的是MEM单元的地址。

(4)转移的类型不同。JMP SHORT L1指令实现的是段内转移,而JMP NEAR PTR L1指令实现的是段间转移。

(5)指令的执行结果不同。CMP DX,CX指令执行后,DX的值不变,而SUB DX,CX指令执行后,DX的值是两寄存器值的差。

(6)操作数所在段不同。MOV [BP][SI],CL指令访问的是堆栈段的存储单元,而MOV DS:[BP][SI],CL指令访问的是数据段的存储单元。 7.答:

7

(1)MOV BYTE PTR [BP],200指令执行后,(58200H)=200H (2)MOV WORD PTR [BX],2000指令执行后,(22400H)=2000H 8.答:

当前栈顶地址是:FE00H:2010H;

执行PUSH BX指令后,栈顶地址变为:FE00H:200EH,栈顶2字节内容是:3457H。 9.答:

(1)(DX)=3C62H,CF=1 (2)(DX)=03C6H,CF=0 (3)(DX)=18A0H,CF=1 (4)(DX)=2BC6H,CF=0 (5)(DX)=18B7H,CF=1 (6)(DX)=BCC5H,CF=0 10.答:

(1) (2) (3) (4) (5) (6) (AX) 134EH 0821H F142H 0A69 F596 0A69 CF 0 0 1 1 - 0 ZF 0 0 0 0 - 0 OF 0 0 0 0 - 0 SF 0 0 1 1 - 0 PF 1 1 1 1 - 1

11.答:

(1) CMP CX,DX JA NEXT (2)CMP AX,BX JNA NEXT (3)CMP DX,0 JZ NEXT (4)CMP CX,DX JBE NEXT 12.答:

(1) 程序转向L1。 (2) 程序转向L1。 (3) 程序转向L2。 (4) 程序转向L5。 (5) 程序转向L5。 13.答:

因为普通运算指令执行的是二进制数的运算,而BCD码是十进制数,所以,需要对运算结果进行十进制调整。

在做BCD码的加、减和乘法运算时,十进制调整指令放在运算指令之后;而作BCD码的除法运算时,在运算指令之前用十进制调整指令对被除数进行调整。 14.答:

MOV Cl,3

8

SHR bx,cl 15.答:(略) 16.答:

DATA SEGMENT COUNT=100H ORG 1000H D_DATA DB COUNT DUP(?) ORG 2170H S_DATA DB COUNT/5 DUP(1,2,3,4,5) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA START: MOV AX,DATA MOV DS,AX MOV ES,AX LEA SI,S_DATA LEA DI,D_DATA MOV CX,COUNT REP MOVSB MOV AL,1 MOV CX,COUNT LEA DI,D_DATA AGAIN: CMP BYTE PTR [DI],AL JNZ NEXT MOV BYTE PTR [DI],' ' NEXT: INC DI LOOP AGAIN EXIT: MOV AH,4CH INT 21H CODE ENDS END START 17.答:

9

CODE SEGMENT ASSUME CS:CODE START: MOV AX,5678H MOV DX,1234H NOT AX NOT DX ADD AX,1 ADC DX,0 EXIT: MOV AH,4CH INT 21H CODE ENDS END START 18. 答: ;本程序未考虑溢出的情况。 DATA SEGMENT A1 DW 5050H A2 DW ? ;存A1的反码 A3 DW ? ;存A1的补码 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AX,A1 NOT AX MOV A2,AX INC AX MOV A3,AX EXIT: MOV AH,4CH INT 21H CODE ENDS END START

19. 答:

10

20. 答:

COUNT=1000 DATA SEGMENT ORG 1000H DAT DB 10 DUP (12H,-5,-3,0,-128,56H,98H,4,128,200) ORG 2000H MINDAT DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA SI,DAT MOV CX,COUNT DEC CX MOV AL,[SI] NEXT: INC SI CMP AL,[SI] JLE ISMIN MOV AL,[SI] ISMIN: LOOP NEXT MOV MINDAT,AL EXIT: MOV AH,4CH INT 21H CODE ENDS END START

21. 答:

DATA SEGMENT ;AT 5000H ORG 3481H DAT DB 12H DB ?,?,? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AL,DAT NEG AL MOV DAT+1,AL MOV AL,DAT XOR AL,00001111B MOV DAT+2,AL MOV AL,DAT OR AL,11110000B MOV DAT+3,AL EXIT: MOV AH,4CH INT 21H CODE ENDS END START 11

22. 答:

DATA SEGMENT STRING1 DB 'hELLO!' COUNT1=$-STRING1 STRING2 DB 'hEL1O!' COUNT2=$-STRING2 IM DB 'MATCH$' NM DB 'NOT MATCH$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA SI,STRING1 LEA DI,STRING2 MOV CX,COUNT1 MOV BX,COUNT2 CMP CX,BX JNZ DISPNOTMATCH NEXT: MOV AL,[SI] MOV AH,[DI] CMP AL,AH JNZ DISPNOTMATCH INC SI INC DI LOOP NEXT ISMATCH: MOV DX,OFFSET IM MOV AH,9 INT 21H JMP EXIT DISPNOTMATCH: MOV DX,OFFSET NM MOV AH,9 INT 21H EXIT: MOV AH,4CH INT 21H CODE ENDS END START 12

23. 答: MOV MOV MOV MOV MOV LEA ADD LEA ADD STD REP 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 END START CX,100 AX,SEG DS,AX AX,SEG ES,AX SI,LIST SI,CX DI,BLK DI,CX MOVSB LIST BLK 13

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 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

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] MOV [DI],AL INC DI LOOP AGAIN EXIT: MOV AH,4CH INT 21H CODE ENDS END START 14

27. 答:

DSEG SEGMENT ORG 10H DAT DB 10H,20H DB ?,? DSEG ENDS CODE SEGMENT ASSUME CS:CODE,DS:DSEG START: MOV AX,DSEG 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

28. 答:

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

29. 答:

15

DSEG SEGMENT ORG 3030H DAT DW 1234H,-1234H,?,? DSEG ENDS CODE SEGMENT ASSUME CS:CODE,DS:DSEG 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

16

第4章 习题答案

1. 答:

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

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

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

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

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

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

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

略。 6. 答:

(1)DB1 DB 10H DUP(1,2, 5 DUP(3),4) (2)DB2 DB 'STUDENT' (3)BD3 DW 12H,0ABCDH (4)COUNT EQU DB2-DB1 7. 答:

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

(1)(AX)=1 (2)(AX)=2 (3)(CX)=5 (4)(DX)=0AH (5)(CX)=1 (6)(DX)=4 9. 答:略。

10. 答:

17

11. 答:

12. 答: DSEG DSEG SEGMENT STRING DB 'NEXT123DF$' DSEG ENDS CODE SEGMENT ASSUME CS:CODE,DS:DSEG START: 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 LOOP AGAIN EXIT: MOV AH,4CH INT 21H CODE ENDS END START 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 ENDS DSEG CODE SEGMENT 18 ASSUME CS:CODE,DS:DSEG START: MOV AX,DSEG

13. 答:

(3)

(4)(2) (5)(1) (6)

14. 答:

1B50H 1000H 1A70H 150BH 上表左侧的序号,表示对应操作完成后SP指向的栈顶的位置。

19

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 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 CMP AX,0 JNS CHG NEG AX MOV BYTE PTR [DI],'-' JMP NEXT N5: 20 MOV MOV MOV DIV CMP JNZ CMP JZ AL,AH AH,0 CL,10 CL BX,0 N6 AL,0 N7

15. 答:

CODE SEGMENT ASSUME CS:CODE START: MOV AH,1 INT 21H CMP AL,'a' JB NOCHG CMP AL,'z' 21

16. 答:

;键盘输入的成绩以逗号分割 ;输入完毕按回车结束 DSEG SEGMENT STRING DB 40,?,40 DUP(?) CJ DB 10 DUP(?)

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

17.~21.答:略。

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 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

22

第5章 习题答案

略。

第6章 习题答案

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

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

3.半导体存储器的主要技术指标:存储容量、读/写速度(存取时间和存储周期)、可靠性。 4.8086CPU和存储器连接时要考虑:存储芯片数,AB、DB和一些控制信号的连接,奇、偶片的设置,地址译码方式等。

5.常用的存储器地址译码方式有:全地址译码、部分地址译码、线选法。 6. 需要(16k?8)/(1024?1)=128片,CPU地址线中片内寻址10位,片外4位。 7.

A16A1D15D8D7D0......................................................A15~A0D7~D0A15~A0D7~D0A15~A0D7~D0A15~A0D7~D0A15~A0D7~D0A15~A062512RAMWROE62512RAMWROE62512RAMWROE62512RAMWROE28512EEPROMWROE28512EEPROMWROE...RDWR..CS..CS..CS..CS..CS..BHEA0.Y0GYG2B1YG2A2Y3Y4CY5BY6AY774LS138≥1≥1...≥1≥1...≥1M/IO.A19A18A17.

23

...CS≥1D7~D0. 8.

A16A15A1D15D8D7D0.......D7~D0CS....D7~D0CS..........D7~D0CS.....................D7~D0A14~A0D7~D0A14~A028C256E2PROMWROE28C256E2PROMWROECS...............A15~A0A15~A0A15~A0A15~A062512RAMWROEMRDCMWTC62512RAMWROE62512RAMWROE62512RAMWROE..........CS..BHEA0.Y0GYG2B1YG2A2Y3Y4CY5BY6AY774LS138≥1≥1...≥1≥1..A19A18A17A16.≥1Vcc.A19A18A17&.

第7章 习题答案

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

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

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

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

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

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

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

3.每个I/O接口内部一般由3类寄存器组成,CPU与外设进行数据传输时,各类信息在接

24

...CS≥1D7~D0.口中进入不同的寄存器,一般称这些寄存器为I/O端口。包括数据端口、状态端口、控制端口。端口寻址方式有存储器映像的I/O寻址、I/O映像的I/O寻址。80X86系统采用后者。

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

5.在外设接口电路中,经常需要对传输过程中的信息进行锁存或缓冲,所以需要锁存器和缓冲器。 6.

DATA SEGMENT AT 2000H ORG 2000H

BUF DB 100 DUP(?) DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA MAIN PROC FAR START: MOVAX,DATA MOVDS,AX LEASI,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

LOOP INPUT MOV AH,4CH ;返回DOS INT 21H CODEENDS END START 7.

25

74LS373LED0D0~D7YIOW≥1D0~D7Q0Q1LED1..

GOEQ7...LED7CODE SEGMENT

ASSUME CS:CODE MAIN PROC FAR START: PUSH DS MOVAX,0 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延时 NOTAL ;灯全灭 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 RET

DELAY ENDP CODE ENDS END START 8.

CODE SEGMENT

26

ASSUME CS:CODE MAIN PROC FAR START: PUSH DS MOVAX,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软延时 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

第8章 习题答案

1.简述可编程芯片的特点。

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

2.简述8255A的结构并分析其特点。 答:8255A的内部结构如图8-1所示,它由数据总线缓冲器,数据端口A、端口B和端口C,A组和B组控制电路和读/写控制逻辑4部分组成。

3.8255A有几种工作方式?简述各种工作方式的特点。

27

答: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.简述例8-2参考程序中JMP AGAIN指令的作用。 答:通过JMP AGAIN指令实现循环检测。

5.常见的定时技术有哪几种?简述其特点。

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

6.简述8253的特点。

答:由于8253的读/写操作对系统时钟没有特殊的要求,因此它几乎可以应用于任何一种微处理器系统中,可作为可编程的方波频率发生器、分频器、实时时钟、事件计数器或单脉冲发生器等。每片8253定时/计数器有3个独立的16位计数通道,每个计数通道最高计数速率可达2.6MHz。每个计数器可编程设定6种工作方式,使用时可以根据需要选择其中的一种工作方式。每个计数通道可按二进制或十进制来计数。

7.8253有几种工作方式?简述各种工作方式的特点。

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

8.8253初始化编程时需要遵循的原则是什么?

答:因此8253在初始化编程时,必须遵守两条原则: ① 在对某个计数器设置初值之前,必须先写入控制字;

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

9.简述8253初始化编程的步骤。

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

28

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

(1)使计数器1工作在方式0,仅用8位二进制数计数,计数初值为120。 (2)使计数器0工作在方式1,按BCD码计数,计数值为2011。 (3)使计数器2工作在方式2,按二进制数计数,计数值为F050H。 答:(1)MOVDX,203H MOV AL,50H OUT DX,AL MOVDX,201H MOV AL,120 OUT DX,AL

(2)MOVDX,203H MOV AL,33H ;00110011B OUT DX,AL MOVDX,200H MOV AX,2011H OUT DX,AL MOV AL,AH OUT DX,AL

(3)MOVDX,203H MOV AL,B4H ;10110100B OUT DX,AL MOVDX,202H MOV AX,0F050H OUT DX,AL MOV AL,AH OUT DX,AL

11.硬件电路如图8-41所示,若8253的计数器0工作在方式1,计数初值为2050H;计数器1工作

在方式2,计数初值为3000H;计数器2工作在方式3,计数初值为1000H。请画出OUT0、OUT1和OUT2的波形。

CLK0GATE0OUT0CLK18253GATE1OUT1CLK1GATE1OUT12MHzVCC(400H)CSA1A0A1A0

图8-41 习题11图

答:计数器0工作在方式1,即可编程的单脉冲方式。在这种方式下,计数器的启动需要

29

GATE的控制。而本题GATE0接至高电平,所以,计数器0初始化后,计数器并不启动,输出端OUT0保持高电平。

计数器1工作在方式2,即分频器方式。输出波形的频率是2MHz/3000=666.7Hz, 所以,输出波形的周期是1.5ms,输出负脉冲的宽度等于CLK的周期(0.5μs)。

计数器2工作在方式3,即方波方式。输出波形的频率是2MHz/1000=2000Hz,输出波形的周期是0.5ms(500μs)输出波形是对称方波。 波形图如下:

OUT0OUT10.5μs1.5msOUT2250μs250μs

12.硬件电路如图8-42所示,8253采用方式0,BCD码计数方式,初始值为1000,每按一次按钮S0,计数值减1。试编程读取8253当前计数值存VALUE内存单元,直至计数值为0。已知8253端口地址为:400H~403H。

图8-42 习题12图

答:参考程序段: MOV AL,31H MOVDX,403H OUT DX,AL MOVDX,400H MOV AX,1000H OUT DX,AL MOV AL,AH OUT DX,AL Lea bx, VALUE MOV AL,01H MOVDX,403H OUT DX,AL

;方式控制字00110001B=31H

30

MOVDX,400H IN AL, DX Mov cl,al IN AL, DX Mov ch,al Mov [bx],cx Inc bx Inc bx Cmp cx,0 Jnz lop1 ??

13.硬件电路如图8-43所示,试编程实现,循环检测开关K0和K1,当K0按下时数码管显示0,当K1按下时数码管显示1,K0、K1同时按下,则结束程序。

31

图8-43 习题13图

答:参考程序段: ??

Mov al ,90H Mov dx,203H Out dx,al

again:mov dx,200H in al,dx test al,03h ; jz exit test al,01h jz diap_1 test al,02h jz diap_2 jmp again

diap_2:mov al,06h mov dx,201H out dx,al jmp again

diap_1:mov al,3FH mov dx,201h out dx,al jmp again exit: ??

14.什么是同步通信方式?什么是异步通信方式? 答:根据在串行通信中数据定时和同步的不同,串行通信方式分为同步串行通信和异步串行通信。

同步传送要求对传送的每一位在收发两端保持严格同步,发送端、接收端使用同一时钟源以保证同步。

32

异步串行通信中的异步是指发送端和接收端不使用共同的时钟,也不在数据中传送同步信号,但接收方与发送方之间必须约定传送数据的帧格式和波特率。

15.什么是双工、半双工和单工通信方式?

答:双工通信方式,两设备之间有两根传输线,对于每一个设备来讲都有专用的一条发送线和一条专用的接收线,实现双向数据传送。

半双工通信方式数据可从设备1发送到设备2,此时设备1是发送方,设备2是接收方;也可以从设备2发送到设备1,此时设备2是发送方,设备1是接收方。但某一设备不能同时接收和发送数据。

单工方式,数据只能向单一方向传送,只能从设备1发送到设备2,设备1是发送方,设备2是接收方。

16.采用异步串行传输方式时,每个字符对应1个起始位、7个信息位、1个奇/偶校验位和1个停止位,如果波特率为1200bps,则每秒能传输的最大字符数是多少? 答:每秒能传输的最大字符数为:1200/(1+7+1+1)=120字符/s

17.利用一个异步串行传输系统传送文字资料,系统的速率为9200bps,待传送的资料为2000字符,设系统不用校验位,停止位只用1位,每个字符用8位,问至少需要多少时间才能传完全部资料?

答:至少需要时间为:2000*(1+8+1)/9600≈2.1秒

18.要求8251A工作于异步方式,波特率系数为16,字符长度为7位,奇校验,2个停止位。工作状态要求:复位出错标志、使请求发送信号RTS有效、使数据终端准备好信号DTR有效、发送允许TxEN有效、接收允许RxE有效。设8251A的两个端口地址分别为0C0H和0C2H,试编写初始化程序。 答:初始化程序: MOV AL,0DAH

OUT 0C2H,AL ;设置方式选择命令字 MOV AL,37H

OUT 0C2H,AL ;

第9章 习题答案

1、 答:采用中断传送方式。而采用了中断方式,CPU可以进行其它的工作,只在外设准

备好数据发出中断请求之后,才予以响应,暂时中断当前工作转去执行传送数据,传送完成后又返回执行原来的程序,这样就大大地提高了计算机系统的效率。

2、答:计算机在执行正常程序的过程中,系统内发生任何非寻常的或非预期的急需处理事件,处理器就暂时中断正在执行的正常程序,而转去执行相应的事件处理程序。当处理完毕后,CPU再返回到被暂时中断的程序,接着往下继续执行,这个过程称为中断。 产生中断请求的设备或事件称为“中断源”。从中断源来看,中断一般可分为三类:

33

由计算机硬件异常或故障引起的中断,也称为内部异常中断。 由程序中执行了中断指令引起的中断,也称为软中断。

外部设备(如输入输出设备)请求引起的中断,也称为外部中断或I/O中断。

3、答:中断技术是十分重要而复杂的技术,由计算机的软、硬件共同完成,称之为中断系统。一个完整的中断系统应具备如下功能。 设置中断源 中断源识别 中断源判优 中断嵌套

中断处理与返回

4、答:Intel 80X86系列微机有一个灵活的中断系统,中断可分为外部中断(或硬件中断)主要是外部设备的请求引起的和内部中断(或软件中断)由指令的执行引起的。可以处理256种中断源,每个中断源都有对应的中断类型码(0~255)供CPU识别。

5、答:当外设通过屏蔽中断请求信号向微处理器提出中断请求时,微处理器在当前指令执行结束后,判断有无中断请求,CPU对可屏蔽中断请求的响应是有条件的,它受中断允许标志位IF的控制。当IF=1时,允许CPU响应INTR请求;当IF=0时,禁止CPU响应INTR请求。

8086系统把中断向量表安排在内存地址00000H~003FFH区域(1K),每四个连续字节存放一个中断向量,其中高地址2个字节单元放段地址(CS),低地址2个字节单元中放偏移地址(IP)。

6、答:当外设通过非屏蔽中断请求信号向微处理器提出中断请求时,微处理器在当前指令执行结束后,就立即无条件的予以响应,这样的中断就是不可屏蔽中断。由NMI引脚出现上升沿触发 ,高电平维持2个T。不受中断允许标志IF的限制,中断类型号固定为2。

由外部设备产生,从CPU的INTR端引入高电平触发。CPU对可屏蔽中断请求的响应是有条件的,它受中断允许标志位IF的控制。当IF=1时,允许CPU响应INTR请求;当IF=0时,禁止CPU响应INTR请求。可屏蔽中断用于CPU与外设进行数据交换。CPU响应时送出两个INTA脉冲,外设则送出中断类型码到CPU。

7、答:1)用传送指令直接装入

CLI ; IF=0, 关中断

MOV AX, 0 ; ES指向0段 MOV ES, AX MOV BX, 0AH×4 ; 向量表地址送BX

MOV AX, OFFSET INT-P ; 中断服务子程序的偏移地址送AX

MOV ES:WORD PTR[BX], AX ; 中断服务子程序的偏移地址写入向量表 MOV AX, SEG INT-PA ;中断服务子程序的段基址送AX

MOV ES:WORD PTR[BX+2],AX ; 中断服务子程序的段基址写入向量表

STI ; IF=1,开中断 …

34

2)用DOS系统功能调用装入法

CLI ; IF=0,关中断

MOV AL, 0AH ; 中断类型号40H送AL

MOV DX, SEG INT-PA ; 中断服务子程序的段基址送DS MOV DS, DX

MOVDX, OFFSET INT-PA ;中断服务子程序的偏移地址送DX MOV AH,25H ; 25H功能调用 INT 21H

STI ; IF=1,开中断 …

8、答:CPU在响应中断后,都要保护现场和断点,然后转入相应的中断服务程序。因此,中断操作要解决的一个首要问题就是:找到与中断源相对应的中断服务子程序的入口地址。在8086系统中,是通过采用中断类型号和中断向量的办法来解决这个问题。对于可屏蔽中断,

在中断响应周期的第二个总线周期中,由中断控制器给出中断服务子程序的入口地址(即将中断处理程序所在段的段地址及第一条指令的有效地址),装入CS与IP两个寄存器。一旦装入完毕,中断服务程序就开始执行。

9、答:CPU响应中断后,发出中断响应信号的同时将状态标志寄存器FR的内容压入堆栈保护起来,然后将FR中的中断标志位IF与陷阱标志位TF清零,从而自动关闭外部硬件中断,以避免在中断过程中或进入中断服务程序后受到其他中断源的干扰。只有中断处理程序中出现开中断指令STI时,才一允许CPU接收其他设备的中断请求。

10、答:Intel 8259A的主要功能有:

可管理具有8级优先权的中断源,通过级联可扩充至管理64级优先权的中断源。 通过编程对每一级中断源都可实现屏蔽或允许。

在中断响应周期,8259A能向 CPU提供相应的中断向量,从而能迅速地转至中断服务程序。

11、答:有边沿触发和电平触发两种触发方式

12、答:单片8259A能管理8级可屏蔽中断,8片级联可管理64级可屏蔽中断

13、答:初始化编程,在中断系统进入正常运行之前,通过设置初始化命令字Initialization Command Word (ICW)来预置工作方式,初始化命令字有4个( ICWl~ICW4)

14、答:8259A的编程包含两个部分,第一部分为初始化编程,在中断系统进入正常运行之前,通过设置初始化命令字Initialization Command Word (ICW)来预置工作方式,初始化命令字有4个(ICWl~ICW4)。第二部分为工作方式编程Operation Command Word (OCW),通过对8259A写操作命令字(OCW1~OCW3),来实现8259A运行中的操作控制,OCW可以在8259A被初始化之后的任何时候被使用。

15、答:中断向量表的入口地址为: 20H *4=0080H

35

中断向量表的内容为:以物理地址为4FE20H的段、偏移地址组合,其中低二位字节为偏移地址、高二位字节为段地址。 16、答:

MOV AL, 00010011B OUT 80H,AL

MOV AL, 00100000B OUT 81H,AL

MOV AL,00000011B OUT 81H,AL

第10章 习题答案

1、答:DAC0832的工作方式(1)直通方式(2)单缓冲方式(3)双缓冲方式

2、答:DAC0832是CMOS工艺制成的8位双缓冲型D/A转换器,其逻辑电平与TTL电平相兼容。内部阶梯电阻网络形成参考电流,由输入二进制数控制8个电流开关,CMOS的电流开关漏电很小保证了转换器的精度。DAC0832使用单一电源,功耗低,建立时间为1?s。输入数据为8位并行输入,有两级数据缓冲器及使能信号、数据锁存信号等,与CPU接口方便。

3、答:D/A转换器在微机控制系统中作用:将计算机处理后的数字量结果转换成模拟量,然后控制执行部件;和A/D转换器在微机控制系统中作用:将工业设备的模拟量转换成数字量便于计算机计算和处理。

4、答:模拟量是连续的信号,采样可以将时间上连续变化的信号,转换为时间上离散的信号,即将时间上连续变化的模拟量转换为一系列等间隔的脉冲,脉冲的幅度取决于输入模拟量的大小。

5、答:分辨率;转换精度;建立时间;线性度;温度系数;输入代码;输出电平

6、答:量程;分辨率;量化误差;转换误差;转换精度;转换时间

7、答:

MOV DX, 24C0H AGANT:

MOV AL, 128 ;方波高电平 OUT DX, AL ;转换数据送D/A的数据口 CALL DELAY ;调用延时子程序段,也可用几条NOP指令 MOV AL, 0 ;方波低电平 OUT DX, AL ;转换数据送D/A的数据口 CALL DELAY JMP AGANT

DELAY PROC ;软件延时子程序

36

MOV CX,10

DELAY1:LOOP DELAY1 RET

DELAY ENDP

V2.5Vt

8、答:

L1:MOV CX, 256 ;256个数字量 MOV AL, 0 ;初值 MOV DX, 24C0H ;24C0H为0832的端口地址 L2: OUT DX, AL ;三角波形上升段 CALL DELAY ;调用延时子程序 INC AL LOOP L2 MOV CX, 256 MOV AL, 255 ;初值 MOV DX, 400H L3: OUT DX, AL ;三角波形下降段 CALL DELAY DEC AL LOOP L3 JMP L1

V5Vt-5V

9、答:

DATA SEGMENT

BUF DB 20 DUP(?) DATA ENDS

;预留20字节空间,存放采样后结果

37

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AL,10010001B MOV DX,206H OUT DX,AL MOV AL,00H MOV DX,204H OUT DX,AL MOV BX,OFFSET BUF MOV CX,20 MOV AL,05H MOV DX,202H OUT DX,AL AGAIN: MOV AL,0FH MOV DX,206H OUT DX,AL MOV AL,0DH MOV DX,206H OUT DX,AL MOV AL,00H MOV DX,204H WAIT0: IN AL,DX AND AL,01H JNZ WAIT0 WAIT1: IN AL,DX AND AL,01H JZ WAIT1 MOV DX,200H IN AL,DX MOV [BX],AL INC BX LOOP AGAIN RET

CODE ENDS

END START

;8255A初始化 ;START?ALE=0 ;BUF是数据区首地址 ;CX中是采样次数 ;通过PB2~PB0选中采样通道IN5 ;通过PC7使ALE=1 ;通过PC6使START=1 ;START?ALE=0 ;循环检测PC口的PC0(即EOC信号) ;若EOC为低,则开始转换 ;继续循环检测PC口的PC0(即EOC信号) ;若EOC为高,则转换结束,可以读数据 ;从PA口输入数据 ;存入内存 ;循环20次采样

38