《26616微机原理与-接口技术——基于-8086和Proteus仿真(第2版~)习题参考-答案~.doc》由会员分享,可在线阅读,更多相关《26616微机原理与-接口技术——基于-8086和Proteus仿真(第2版~)习题参考-答案~.doc(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、|第 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
2、,最小值:-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=13E2H5.答:(1)1111 0000B=240D=F0H(2) 1000 0000 B =128D =80H(3)1111 1111 B =255 D =FFH(4)0101 0101B=85D=5
3、5H6.答:(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 1111B7.答:(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 位时(-
4、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;(4) 8 位时(-0) 原 =1000 0000 ; (-0)补 =0000 0000;16 位时(-0) 原 =1000 0000 0000 0000; (-0)补 =0000 0000 0000 0000;(5) 8 位时(127) 原 =0111 1111; (12
5、7)补 =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)
6、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)AB;(2)AB10.答:(1)溢出;(2)13H;(3 )溢出;(4)EDH ;(5)EDH。11.答:(1)1000 1000;(2)1110 1110;(3)0110 0110;(4)1010 1100;(5)0000 0
7、000;(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 1001B0000 0001 0000 0010 0000 0011B0000 0111B 0000 0110 0000 0010BASC
8、II 码 3439H 313233H 37H 3632H|第 2 章 习题答案1.(1)答:物理地址:物理地址(PA)是 20 位无符号二进制数,是 CPU 访问存储器的实际地址。每个存储单元对应一个物理地址。8086 存储空间的物理地址范围是:00000HFFFFFH。逻辑地址:采用分段结构的存储器中,把通过段地址和偏移地址来表示的存储单元的地址称为逻辑地址,记为:段地址:偏移地址。段地址:8086 规定各逻辑段从节的整数边界开始,即段首地址二进制值的低 4 位是0000,把段首地址的高 16 位称为段基址或段地址。偏移地址:把某一存储单元相对于段地址的段内偏移量称为偏移地址(也称有效地址E
9、A) 。段地址和偏移地址都是是 16 位无符号二进制数。(2)答:时钟周期:计算机的“时钟”是由振荡源产生的、幅度和周期不变的节拍脉冲,每个脉冲周期称为时钟周期,又称为 T 状态或 T 周期,时钟周期是微机系统工作的最小时间单元。总线周期:当 CPU 访问存储器或输入/输出端口时,需要通过总线进行读或写操作,这个过程称为总线周期(Bus Cycle) 。总线周期是利用总线完成一次读/写所需要的时间。指令周期:执行一条指令所需要的时间称为指令周期(Instruction Cycle) 。指令周期由1 个或多个总线周期组成。(3)答:最小模式:也称为单处理器模式,是指系统中只有一片 8086 微处
10、理器,所连接的存储器容量不大、片子不多,所要连接的 I/O 端口也不多,系统的控制总线就直接由 CPU 的控制线供给,从而使得系统中的总线控制电路减到最少。最小模式适用于较小规模的系统。最大模式:相对于最小模式而言,适用于中、大型规模的系统。系统中有多个微处理器,其中一个是主处理器 8086,其他的处理器称为协处理器,承担某方面专门的工作。需要增加一片 8288 来对 8086CPU 发出的控制信号进行变换和组合,以得到对存储器或 I/O端口的读/写信号和对锁存器、总线收发器的控制信号。2.答:EU:负责指令的执行,即从总线接口部件 BIU 的指令队列取指令,指令执行后向 BIU送回运算结果,
11、同时把运算结果的状态特征保存到标志寄存器中。BIU:负责 CPU 与存储器、I/O 设备之间的数据传送。BIU 完成以下操作:取指令送给指令队列、配合执行部件从指定的内存单元或者外设端口中取数据、将数据传送给执行部件或者把执行部件的操作结果传送到指定的内存单元或外设端口中。8086 的 BIU 和 EU 在很多时候可以并行工作,使得取指令、指令译码和执行指令这些操作构成操作流水线。 当指令队列中有两个空字节,且 EU 没有访问存储器和 I/O 接口的要求时,BIU 会自动把指令取到指令队列中。 当 EU 准备执行一条指令时,它会从指令队列前部取出指令执行。在执行指令的过程中,如果需要访问存储器
12、或者 I/O 设备,那么 EU 会向 BIU 发出访问总线的请求,以完成访问存储器或者 I/O 接口的操作。如果此时 BIU 正好处于空闲状态,那么,会立即响应EU 的总线请求;但如果 BIU 正在将某个指令字节取到指令队列中,那么, BIU 将首先完成这个取指令操作,然后再去响应 EU 发出的访问总线的请求。| 当指令队列已满,而且 EU 又没有总线访问时,BIU 便进入空闲状态。 在执行转移指令、调用指令和返回指令时,下面要执行的指令就不是在程序中紧接着的那条指令了,而 BIU 往指令队列装入指令时,总是按顺序进行的。在这种情况下,指令队列中已经装入的指令就没有用了,会被自动消除。随后,B
13、IU 会往指令队列中装入另一个程序段中的指令。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)加法运
14、算的结果为: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 可寻址的存储器地址范围是 00000HFFFFFH;可寻址的 I/O 端口地址范围是 0000HFFFFH。7.答:由于 8086CPU 提供 20 位地址,但 8086 中可用来存放地址的寄存器,如IP、SP 、BX 、 SI 等都是 16 位的,只能直接寻址 64KB。为了寻址 1MB
15、存储空间,8086CPU 采用了典型的存储器分段技术,即将整个存储器空间分为许多逻辑段,每个逻辑段的容量小于或等于 64KB。分段后,对存储器的寻址操作不再直接用 20 位的物理地址,而是采用段地址加段内偏移地址的二级寻址方式。8.答:将 AH 的内容送存储单元的操作过程中: ;/1,0,1,/MIOWRDTR将 I/O 端口的内容送 AL 的操作过程中: 。 09.答: BHEA0 有效的数据引脚 操 作0 0 AD15AD0(一个总线周期同时访问奇体和偶体,从奇地址单元读/写字数据的高 8 位,从偶地 从偶地址读/写一个字|址单元读/写字数据的低 8 位)1 0 AD7AD0 从偶地址读/
16、写一个字节0 1 AD15AD8 从奇地址读/写一个字节0 11 0AD15AD8(第一个总线周期从奇字数据的低8 位)AD7AD0(第二个总线周期从偶地址单元读/ 写字数据的高 8 位)从奇地址读/写一个字10.答:8086 系统复位后,指令指针(IP)为 0000H;CS 寄存器为 FFFFH,其他寄存器为0000H;指令队列清空。11.答:8086 的 A19/S6A16/S3 和 AD15AD0 是复用信号,需要地址锁存器将地址信息保存起来,为外接存储器或外设提供地址信息。需要锁存的信号是:地址信号及 BHE信号。12.答:8086CPU 一个基本的总线周期包含 4 个时钟周期:T1、
17、T2、T3 和 T4 。在 T1 状态, 有效,指示 CPU 访问的是存储器还是外设,之后 CPU 往多路复用IO/M总线上发出地址信息,以指出要寻址的存储单元或外设端口的地址。在 T1 状态,CPU 还必须在 ALE 引脚上输出一个正脉冲作为地址锁存信号。 信号也在 T1 状态送出,它用来表示数据传送的字宽。在 T2 状态,CPU 从总线上撤销地址,使总线的低 16 位浮空,置成高阻状态,为传输数据作准备。总线的最高 4 位(A19 16)用来输出本总线周期的状态信息。读信号或写信号 在 T2 状态变为有效,指示 CPU 将进行哪种操作(读或写) 。RDW在 T3 状态,多路总线的高 4 位
18、继续提供状态信息,而多路总线的低 16 位上出现由CPU 读出的数据或者 CPU 从存储器或端口写入的数据。在 T4 状态和前一个状态的交界处,CPU 对数据总线进行采样,获得数据,总线周期结束。13.答:在有些情况下,外设或存储器速度较慢,不能及时地配合 CPU 传送数据。这时,外设或存储器会通过“READY”信号线在 T3 状态启动之前向 CPU 发一个“数据未准备好”信号,于是 CPU 会在 T3 之后插入 1 个或多个附加的时钟周期 TW。取决与外设或存储器速度。14.答:两种操作时序的不同之处发生在 T1 和 T2 状态。 在 T1 状态,读周期: 应输出低电平;写周期: 应输出高电
19、平。R/DTR/DT 在 T2 状态,读周期: 有效,而 无效,AD15AD0 为高阻态;写周期:W变为无效,而写信号 变为有效,AD15AD0 在地址撤销之后立即送出要写入存储R|器或外设端口的数据。15.答:在最小模式下,读信号 、ALE 和 、 等信号直接由 CPU 给出;RD/TEN在最大模式下,总线控制器 8288 根据 和 状态信号产生读信号 和 ,12S,0MRDCIOALE 和 、DEN 也是由 8288 发出的,而且 DEN 信号的极性与 CPU 在最小模式下发/T出的 信号正好相反。EN|第 3 章 习题答案1.答:指令中关于如何求出操作数有效地址的方法称为寻址方式。808
20、6CPU 支持多种寻址方式,根据操作数的类型及来源大致分为 3 类:数据寻址、转移地址寻址和 I/O 寻址。2.答:8086 汇编指令可以采用 7 种基本的数据寻址方式:立即寻址;寄存器寻址;直接寻址;寄存器间接寻址;寄存器相对寻址;基址变址寻址;相对基址变址寻址。与存储器寻址方式(后 5 种)相比,寄存器寻址方式最快。3.答:如果指令中没有用前缀说明操作数存放在哪个段,则操作数默认存放在数据段。8086 系统允许操作数存放在代码段、堆栈段或附加段。此时,就需要在指令中利用前缀指明段超越。例如:MOV ES:1225H,AX 4.答:(1)寄存器寻址方式(2)寄存器间接寻址方式,PA=1030
21、0H(3)寄存器间接寻址方式,PA=20200H(4)直接寻址方式,PA=10060H(5)基址变址寻址方式,PA=10500H(6)相对基址变址寻址方式,PA=12300H(7)直接寻址方式,PA=11000H(8)寄存器相对寻址方式,PA=10306H(9)直接寻址方式,PA=10065H5.答:(1)(2)(3)(4)(5)(6)(7)(8)(9)(10)(11) 6.答:(1)源操作数的寻址方式不同。MOV AX,3000H 指令的源操作数采用的是立即数寻址方式,MOV AX,3000H指令的源操作数采用的是直接寻址方式。(2)指令执行后,AX 的值不同。MOV AX,MEM 指令执行
22、后,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)操作数所在段不同。MO
23、V BPSI,CL 指令访问的是堆栈段的存储单元,而|MOV DS:BPSI,CL 指令访问的是数据段的存储单元。 7.答:(1)MOV BYTE PTR BP,200 指令执行后, (58200H)=200H(2)MOV WORD PTR BX,2000 指令执行后, (22400H)=2000H8.答:当前栈顶地址是: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)=2B
24、C6H,CF=0(5) (DX)=18B7H ,CF=1(6) (DX)=BCC5H,CF=010.答:(AX) CF ZF OF SF PF(1) 134EH 0 0 0 0 1(2) 0821H 0 0 0 0 1(3) F142H 1 0 0 1 1(4) 0A69 1 0 0 1 1(5) F596 - - - - -(6) 0A69 0 0 0 0 111.答:(1) CMP CX,DXJA NEXT(2)CMP AX,BXJNA NEXT(3)CMP DX,0JZ NEXT(4)CMP CX,DXJBE NEXT12.答: (1) 程序转向 L1。(2) 程序转向 L1。(3) 程
25、序转向 L2。(4) 程序转向 L5。(5) 程序转向 L5。13.答:因为普通运算指令执行的是二进制数的运算,而 BCD 码是十进制数,所以,需要对运算结果进行十进制调整。在做 BCD 码的加、减和乘法运算时,十进制调整指令放在运算指令之后;而作 BCD码的除法运算时,在运算指令之前用十进制调整指令对被除数进行调整。|14.答:MOV Cl,3SHR bx,cl15.答:(略)16.答:DATA SEGMENTCOUNT=100HORG 1000HD_DATADB COUNT DUP(?)ORG 2170HS_DATA DB COUNT/5 DUP(1,2,3,4,5)DATA ENDSCO
26、DE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATASTART: MOV AX,DATAMOV DS,AXMOV ES,AXLEA SI,S_DATALEA DI,D_DATAMOV CX,COUNTREP MOVSBMOV AL,1MOV CX,COUNTLEA DI,D_DATAAGAIN:CMP BYTE PTR DI,ALJNZ NEXTMOV BYTE PTR DI, NEXT:INC DILOOP AGAINEXIT: MOV AH,4CHINT 21HCODE ENDSEND START|17.答:CODE SEGMENTASSUME CS:CODES
27、TART: MOV AX,5678HMOV DX,1234HNOT AXNOT DXADD AX,1ADC DX,0EXIT:MOV AH,4CHINT 21HCODE ENDSEND START18. 答:;本程序未考虑溢出的情况。DATA SEGMENTA1 DW 5050HA2 DW ? ;存 A1 的反码A3 DW ? ;存 A1 的补码DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AX,A1NOT AXMOV A2,AXINC AXMOV A3,AXEXIT:MOV AH,4CHINT 21HCODE ENDSEND START