《第3章._习题解答.ppt》由会员分享,可在线阅读,更多相关《第3章._习题解答.ppt(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、3.2 8086 CPU有多少根数据线和地址线?它能寻址多少有多少根数据线和地址线?它能寻址多少内存地址单元和内存地址单元和I/O端口?端口?8088 CPU又有多少根数据线又有多少根数据线和地址线?为什么要设计和地址线?为什么要设计8088 CPU?答答:(:(1)8086 CPU有有16根数据线,根数据线,20根地址线。根地址线。(2)能寻址)能寻址1MB内存和内存和64KB的的I/O端口。端口。(3)8088 CPU有有8根数据线,根数据线,20根地址线。根地址线。(4)设计)设计8088 CPU主要是为了与主要是为了与Intel原有的原有的8位外围接位外围接口芯片兼容。口芯片兼容。第第
2、3章章“微处理器及其系统微处理器及其系统”3.4 8086 CPU内部的总线接口单元内部的总线接口单元BIU由哪些功能部件由哪些功能部件组成?它们的基本操作原理是什么?组成?它们的基本操作原理是什么?答答(1)BIU内有4个16位段地址寄存器CS(代码段寄存器,Code Segment)、DS(数据段寄存器,Data Segment)、SS(堆栈段寄存器,Stack Segment)和ES(附加段寄存器,Extra Segment),16位指令指针IP,6字节指令队列缓冲器,20位地址加法器和总线控制电路。(2)指令队列缓冲器是暂存计算机将要执行的指令的机器码;地址加法器用于执行“段加偏移”的
3、寻址机制,即完成段基址加偏移地址的操作;段寄存器存放16位段地址,用于地址加法器中左移生成20位的段基址;IP中含有BIU要取的下1条指令(字节)的偏移地址。IP在程序运行中能自动加1修正,使之指向要执行的下1条指令(字节);总线控制电路控制对存储器或外设数据的存取。3.7 在微处理器中设置指令队列缓冲器有什么作用?在微处理器中设置指令队列缓冲器有什么作用?8086与与8088 CPU中的指令队列有何区别?中的指令队列有何区别?答(1)BIU的指令队列缓冲器用于存放预取的指令。(2)8086的指令队列为6个字节,而8088的指令队列为4个字节。指令队列缓冲器中只要空出2个(对8086)或空出1
4、个(对8088)指令字节时,BIU自动执行取指操作,直到填满。3.9 段地址和段起始地址相同吗,两者是什么关系?段地址和段起始地址相同吗,两者是什么关系?8086的段起始地址就是段基地址吗?它是怎样获得的?的段起始地址就是段基地址吗?它是怎样获得的?答:(1)不同。在8086中,段地址是16位的,段起始地址(段基址)是20位的。(2)是。20位的段起始地址是通过指令给段寄存器装入16位的段地址后再进行左移4位后形成的。3.23 堆栈的深度由哪个寄存器确定?为什么说一个堆堆栈的深度由哪个寄存器确定?为什么说一个堆栈的深度最大为栈的深度最大为64KB?在执行一条入栈或出栈指令时,?在执行一条入栈或
5、出栈指令时,栈顶地址将如何变化?栈顶地址将如何变化?答:(1)由SP确定,堆栈段的范围是SS16至SS16+SP。(2)因为SP是16位的寄存器,最大寻址空间为64KB。(3)每执行一次压栈指令,则SP-2,即栈顶地址减2,推入堆栈的数据放在栈顶;而每执行一次弹出指令时,则SP+2,即栈顶地址加2再指向新的栈顶。3.26 ALE信号起什么作用,它在使用时能否被浮空?信号起什么作用,它在使用时能否被浮空?信号起什么作用,它在什么情况下被浮置为高阻信号起什么作用,它在什么情况下被浮置为高阻状态?状态?答:答:(1)ALE信号是信号是8086/8088提供给地址锁存器提供给地址锁存器8282/828
6、3的控制信号,高电平有效,在使用时的控制信号,高电平有效,在使用时不能被浮空。不能被浮空。(2)在使用)在使用8286/8287作为数据总线收发器时,作为数据总线收发器时,信号用于控制信号用于控制8286/8287的数据传送方向。的数据传送方向。在在DMA方式时,它被浮置为高阻状态。方式时,它被浮置为高阻状态。3.27 8086/8088 CPU的哪些引脚采用了分时复用技术?的哪些引脚采用了分时复用技术?哪些引脚具有两种功能?哪些引脚具有两种功能?答:答:(1)数据总线和地址总线的低)数据总线和地址总线的低16位位AD15-AD0或者低或者低8位位AD7-AD0采用分时复用技术。采用分时复用技
7、术。(2)24-31引脚具有两种功能,这个由引脚具有两种功能,这个由33引脚来选择最大引脚来选择最大最最小功能模式来确定具体引脚功能。小功能模式来确定具体引脚功能。3.32 指出指出8086/8088下列指令源操作数的寻址方式。下列指令源操作数的寻址方式。(1)MOV AX,1200H立即数寻址(2)MOV AX,1200H存储器直接寻址(3)MOV BX,SI存储器变址寻址(4)MOV BX,SI+1200存储器相对变址寻址(5)MOV BX+SI,AL寄存器寻址(6)ADD AX,BX+DI+20 相对基址加变址寻址(7)MUL BL寄存器寻址(8)JMP BX基址寻址(9)IN AL,D
8、X间接端口寻址(IO端口间接寻址)(10)INC WORD PTRBP+50H相对基址寻址3.33 指出指出8086/8088下列指令中存储器操作数物理地址的下列指令中存储器操作数物理地址的计算表达式。计算表达式。(1)MOV AL,DIPA=DS*16+DI(2)MOV AX,BX+SIPA=DS*16+BX+DI(3)MOV 8BX+DI,ALPA=DS*16+8+BX+DI(4)MOV AL,ES:BXPA=ES*16+BX(5)SUB AX,2400HPA=DS*16+2400H(6)ADC AX,BX+DI+1200HPA=DS*16+BX+DI+1200H(7)MOV CX,BP+
9、SIPA=SS*16+BP+SI(8)INC BYTE PTRDIPA=DS*16+DI3.34 指出指出8086下列指令的错误。下列指令的错误。(1)MOV SI,IP指令指针指令指针IP不能传送不能传送(2)MOV CS,AXCS段寄存器不能做目的操作数段寄存器不能做目的操作数(3)MOV BL,SI+2传送类型不匹配,传送类型不匹配,BL为为8位,位,SI+2为为16位位(4)MOV 60H,AL目的操作数不能为立即数目的操作数不能为立即数(5)PUSH 2400H源操作数不能为立即数源操作数不能为立即数(6)INC BX不知是字节加不知是字节加1还是字加还是字加1,应在指令前,应在指令
10、前面加面加 BYTE PTR或或WORD PTR(7)MUL-60H乘数不能为立即数乘数不能为立即数(8)ADD 2400H,2AH2400H前要加类型说明前要加类型说明(9)MOV BX,DI不能同为存储器操作数不能同为存储器操作数(10)MOV SI,AL类型不匹配类型不匹配3.39 给定给定DS=1100H,BX=0200H,LIST=0250H和和SI=0500H。试确定下面各条指令寻址存储器的地址。试确定下面各条指令寻址存储器的地址。(1)MOV LISTSI,EDXPA=DS*16+LIST+SI=11750H(2)MOV CL,LISTBX+SIPA=DS*16+BX+LIST+
11、SI=11950H(3)MOV CH,BX+SIPA=DS*16+BX+SI=11700H(4)MOV DL,BX+100HPA=DS*16+BX+100H=11300H3.40 假定假定PC存储器低地址区有关单元的内容如下:存储器低地址区有关单元的内容如下:(20H)=3CH,(21H21H)=00H,=00H,(22H22H)=86H,=86H,(23H23H)=0EH,=0EH,且且CS=2000H,IP=0010H,SS=1000H,SP=0100H,FLAGS=0240H,CS=2000H,IP=0010H,SS=1000H,SP=0100H,FLAGS=0240H,这时若执行这时若
12、执行INT 8INT 8指令,试问:指令,试问:(1 1)程序转向何处执行(用物理地址回答)?)程序转向何处执行(用物理地址回答)?(2 2)栈顶)栈顶6 6个存储单元的地址(用逻辑地址回答)及内个存储单元的地址(用逻辑地址回答)及内容分别是什么?容分别是什么?答:(答:(1)IP=003CH,CS=0E86H,PA=0E89CH(4)1000H:00FAH 0012H 1000H:00FCH 2000H 1000H:00FEH 0240H3.57 若若AC=1001H,DX=20FFH,当执行当执行ADD AX,DX指令指令以后,请列出和数及标志寄存器中每个位的内容(以后,请列出和数及标志寄
13、存器中每个位的内容(CF、AF、SF、ZF和和OF)?)?答:3100HCF=0,AF=1,SF=0,ZF=0,OF=03.69 设计一个程序段,将设计一个程序段,将AX和和BX中的中的8位位BCD数加数加CX和和DX中的中的8位位BCD数(数(AX和和CX是最高有效寄存器),是最高有效寄存器),加法以后的结果必须存入加法以后的结果必须存入CX和和DX中。中。PUSH AX PUSH CX MOV AX,DX ADD AL,BL DAA MOV CL,AL MOV AL,AH ADC AL,BH DAA MOV DH,AL MOV DL,CL POP CX POP AX ADD AL,CL D
14、AA MOV BL,AL MOV AL,AH ADC AL,CH DAA MOV CH,AL MOV CL,BL3.71设计一个程序段,将设计一个程序段,将DH中最左中最左3位清位清0,而不改变,而不改变DH中的其他位,结果存入中的其他位,结果存入BH中。中。答:AND DH,1FH MOV BH,DH3.74设计一个程序段,将设计一个程序段,将AX中的最右中的最右4位置位置1,将,将AX中中的最左的最左3位清零,并且将位清零,并且将AX中的中的7、8、9位取反。位取反。答:OR AL,0FH AND AH,1FH XOR AX,01C0H3.81 带参数的返回指令用在什么场合?设栈顶地址为带
15、参数的返回指令用在什么场合?设栈顶地址为2000H,当执行,当执行RET 0008后,问后,问SP的值是多少?的值是多少?答:(1)带参数的返回指令RET用在调用程序需要通过堆栈向过程传送一些参数的场合,并在过程运行中要使用这些参数,一旦过程执行完毕,这些参数应弹出堆栈作废。RET指令放在被调用的过程尾处。(2)段间调用:200CH 段内调用:200AHRET N等同下面两条指令 RET ADD SP,n3.82 在执行中断返回指令在执行中断返回指令IRET和过程(子程序)返回和过程(子程序)返回指令指令RET时,具体操作内容有什么区别?时,具体操作内容有什么区别?答:执行中断返回指令IRET时,具体操作内容为:(1)先将由SP所指定的堆栈内容弹出至IP,恢复IP值。IP-(SP),SP-SP+2。(2)再将由SP所指定的堆栈内容弹出至CS,恢复CS值。CS-(SP),SP-SP+2(3)最后将由SP所指定的堆栈内容弹出至FLAGS,恢复FLAGS值。FLAGS-(SP),SP-SP+2执行过程返回指令RET时,具体操作内容为:同第(1)、(2)步内容,无第(3)步操作。
限制150内