微机原理期末复习(修改版)1、CPU在内部结构上由那几部分组成?CPU应具备哪些主要功能解:CPU在内部结构上由算术逻辑部件、累加器和寄存器级、控制器组成。CPU应具备下列功能:可以进行算术运算;可保存较少量数据;能对指令进行译码并执行规定的动作;能和存储器、外设交换数据;提供整个系统所需要的定时和控制;可以其它部件发来的中断请求。2、8086的总线接口部件由哪几部分组成?解:8086CPU由总线接口部件BIU(BusInterfaceUnit)和执行部件EU(ExecutionUnit)两大部分组成。总线接口部件的主要功能是形成物理地址、预取指令、指令队列排队、读/写操作数和总线控制。执行部件的主要功能是进行指令译码并执行指令。3、8086CPU中有哪些寄存器?标志寄存器FLAGS有哪些标志位?答:1)8086CPU中有哪些寄存器?4个段地址寄存器:CS16位的代码段寄存器DS16位的数据段寄存器ES16位的附加段寄存器SS16位的堆栈段寄存器4个通用寄存器,即AX、BX、CX、DX4个专用寄存器,即BP、SP、SI、DI标志寄存器F指令指针寄存器IP2)标志寄存器FLAGS有哪些标志位:状态标志:①符号标志SF②零标志ZF③奇偶标志PF④进位标志CF⑤辅助进位标志AF⑥溢出标志OF控制标志:,①方向标志DF②中断允许标志IF③跟踪标志TF)称为单步标志4、8086CPU有4个逻辑段,分别是什么用途?解:在8086的程序设计中,一个程序可以有代码段CS、数据段SS、堆栈段SS和附加段ES。代码段CS用于存放程序;数据段SS和附加段ES用于存放数据;堆栈段SS用于存放数据(包括暂存数据和保护现场的数据)。在形成物理地址时,CS、DS、ES和SS四个段寄存器的作用如下:当取指令时,CPU以CS寄存器的值作段基址,再加上IP中的16位偏移地址,得到指令的物理地址;当进行堆栈操作时,段基地址CPU以SS为堆栈段的基地址,偏移地址由SP或BP来指定,当访问存储器的数据段时,数据段寄存器DS或附加段寄存器ES,再加上16位偏移地址,得到操作数的物理地5、试说明8086CPU工作在最大和最小模式下系统基本配置的差异。最大模式配置和最小模式配置有一个主要的差别:①就是在最大模式下,需要用外加电路来对CPU发出的控制信号进行变换和组合,以得到对存储器和I/O端口的读/写信号及对锁存器(8282)和对总线收发器(8286)等等的控制信号。8288总线控制器就是完成上面这些功能的专用芯片。6、什么是逻辑地址?什么是物理地址?如何将逻辑地址转换为物理地址?逻辑地址:段地址:偏移地址物理地址:也称为绝对地址,由段基址和偏移量两部分构成。物理地址与系统中的存储空间是一一对应的。物理地址=段地址*10H+段内偏移量。7、请将如下逻辑地址用物理地址表示:(1)FFFFH:0=FFFFH*10+0=FFFF0H(2)45H:18H=45H*10+18H=468H(3)20000H:4600H=24600H(4)B821H:3456H=BB666H8、8086的执行部件有什么功能?由哪几部分组成?答:1)8086的执行部件的功能是负责指令的执行。2)4个通用寄存器AX、BX、CX、DX;4个专用寄存器BP、SP、SI、DI;标志寄存器FLAGS和算术逻辑单元ALU。9、非屏蔽中断有什么特点?可屏蔽中断有什么特点?分别用在什么场合?答:1.非屏蔽中断的特点有:中断请求从NMI引腿进入,不受中断允许标志IF的影响。非屏蔽中断只有一个,其中断类型码为2。2.可屏蔽中断的特点有:中断请求从INTR引腿进入,只有在IF=1时CPU才响应该中断。可屏蔽中断有若干个,其中断类型码可以是5~255。3.非屏蔽中断用来处理系统的重大故障,如掉电等。可屏蔽中断用在一般外部设备申请的中断中。10、什么叫中断向量?它放在那里?对应于1CH的中断向量存放在哪里?如果1CH的中断处理子程序从5110H:2030H开始,则中断向量应怎样存放?答:1.中断处理子程序的入口地址就是中断向量。2.中断向量放在0段的0~3FFH区域的中断向量表中。3.对应于类型号为1CH的中断向量应放在00070~00073H的4个单元中。4.若1CH的中断向量为5110H:2030H,则中断向量的存放方法为:00070H存放30H,00071H存放20H(IP);00072H存放10H,00073H存放51H(CS)。第三次作业1、8086/8088的指令有哪些寻址方式?它们的具体含义是什么?指令中如何表示它们?2,分别指出下列指令中源操作数和目的操作数的寻址方式目的操作数源操作数(1)MOVEAX,12345678H寄存器寻址立即寻址(2)MOV[ESI],AX寄存器间接寻址寄存器寻址(3)MOV2[EDI],BX变址寻址寄存器寻址(4)MOV2[BX+SI],DX基址变址寻址寄存器寻址(5)MOVAX,[10]寄存器寻址直接寻址(6)MOVEAX,2[ESI*4]寄存器寻址带有比例因子的变址寻址(7)MOVEAX,2[EBX*8][EDI]寄存器寻址带有比例因子的基址变址寻址(8)MOVEAX,[ESI][EBP+0FFFF0H]寄存器寻址带有位移量的基址变址寻址(9)MOVEAX,2[EDI*8][EBP+80]寄存器寻址带有位移量和比例因子的基址变址寻址3指出下列指令的错误原因(1)INC[ESI]目的操作数[ESI]类型不明确(2)MOVAX,BL源操作数和目的操作数类型不一致(3)MOV2,EAX常数不能作目的操作数(4)MOVAX,[DX]X不能作地址寄存器(5)MOVAX,[BX+BP]源操作数寻址方式错,两个寄存器都是基址寄存器(6)MOVAX,[SI+DI]源操作数寻址方式错,两个寄存器都是变址寄存器(7)MOVAH,300300超出AH允许范围(8)MOV[ESI],[EDI]源操作数和目的操作数不能同时为内存单元地址(9)PUSHAL栈的数据必须是一个16或32位数据(10)POPDH出栈的数据是一个16或32位数据,DH是8位寄存器(11)MOVCS,AXCS值不能由程序员编程该变(12)MOVSS,AXSS值不能由程序员编程该变(13)SHLAX,3移位次数大于1,应先将移位次数送CL第四作业答案解答1比较下列两条指令,指出它们的区别MOVAX,[SI]LEAAX,[SI]解:这两条指令的区别是,指令“MOVAX,[SI]”是将内存单元DS:[SI]中的内容读到CPU中的寄存器AX;而指令“LEAAX,[SI]”是将内存单元DS:[SI]的偏移地址送到AX。2假定(EAX)=12345678H,不用计算,写出下面每条指令执行后(EAX)=?①TESTEAX,1②XOREAX,EAX③SUBEAX,EAX④CMPEAX,87654321H解:①(EAX)=12345678H②0③0④(EAX)=12345678H3假定(AX)=1234H,(BX)=5678H指出下列指令中①哪些指令执行后,源操作数和目的操作数都不发生变化?②哪些指令执行后,源操作数和目的操作数都发生变化?③哪些指令执行后,源操作数不发生变化而目的操作数发生变化?指令:①TESTAX,1234②ANDAX,BX③SUBAX,1234H④CMPAX,1234H⑤XCHGAX,BX解:①指令“TESTAX,1234”和指令“CMPAX,1234H”执行后,源操作数和目的操作数都不发生变化。变量值EABUF→31H032H133H234H3BCD→4567②指令“XCHGAX,BX”执行后,源操作数和目的操作数都发生变化。③指令“ANDAX,BX”和“SUBAX,1234H”执行后,源操作数不发生变化而目的操作数发生变化4用普通运算指令执行BCD码运算时,为什么要进行十进制调整?具体讲,在进行BCD码的加、减、乘、除运算时,程序段的什么位置必须加上十进制调整指令?答:在BCD码中,只允许0?/FONT9这10个数字出现,但有时候的运算结果会超过此范围,因此要进行十进制调整。进行加、件或乘法运算时,调整指令必须紧跟在算术指令后面,在进行除法运算时,调整指令放在除法指令之前。5普通移位指令(带CF的和不带CF的两类)在执行操作时,有什么差别?在编制乘法程序时,为什么常用移位指令来代替乘除法指令?试编写一个程序段,实现将BX中的数除以10,结果仍放在BX中。答:带CF和不带CF的普通移位指令的差异:前者用于算术运算,后者用于逻辑运算。程序段:MOVCL,0AHMOVAX,BXIDIVCLMOVBX,AX6设当前SS=2010H,SP=FE00H,BX=3457H,计算当前栈顶的地址为多少?当执行PUSHBX指令后,栈顶地址和栈顶2个字节的内容分别是什么?答案当前栈顶的地址2010H*16+FE00H=2FF00H;执行PUSHBX指令后,堆栈地址指针SP减2,则栈顶地址为2FEEDH;栈顶2个字节的内容为57H、34H。第5次作业请把正确答案填在括号内。1.指令MOVAX,0283H[BX][SI]中源操作数的寻址方式为(B)。A.寄存器间接寻址B.基址变址相对寻址C.基址寻址D.变址寻址2.CPU执行OUTDX,AL指令时,(B)的值输出到地址总线上。A.AL寄存器B.DX寄存器C.DL寄存器D.AX寄存器3.MOVAX,[BX+SI]的源操作数的物理地址是(B)。A.(ES)×16+(BX)+(SI)B.(DS)×16+(BX)+(SI)C.(SS)×16+(BX)+(SI)D.(CS)×16+(BX)+(SI)4.8086CPU中6字节的指令队列的作用是。(B)A.暂存操作数B.暂存指令C.暂存操作数地址D.暂存指令地址5、寄存器间接寻址方式中,要寻找的操作数位于(B)中。A.通用寄存器B.内存单元C.段寄存器D.堆栈6.堆栈操作中用于指示栈顶地址的寄存器是(B)。A.SSB.SPC.BPD.CS7.执行指令PUSHBX后,堆栈指针SP的变化为(B)。A.SP-1B.SP-2C.SP+1D.SP+28.8086的I/O地址空间采用16位数寻址时,可访问的端口数容量为(B)。A.16KBB.64KBC.32KBD.1MB9.在8086/8088微机系统中,将AL内容送到I/O接口中,使用的指令是(B)。AI.NAL,端口地址B.OUT端口地址,ALC.OUTAL,端口地址D.MOVAL,端口地址10.源变址寄存器是(B)。A.DIB.SIC.SPD.BX11在下列指令的表示中,不正确的是(C)。A.MOVAL,[BX+SI]B.JMPSHORTDONIDEC100C.D.MULCL14.若栈顶的物理地址是20100H,当执行完POPAX指令后,栈顶的物理地址是(B)。A.20101HB.20102HC.20100HD.20103H12.程序段如下:MOVAX,5849HMOVBX,2934HADDAL,BHDAA上述4条指令执行后,(AX)=(D)A.817DHB.5872HC.8183HD.5878H13.假定(SS)=2000H,(SP)=0100H,(AX)=2107H,执行指令PUSHAX后,存放数据21H的物理地址是(A)。A.200FFHB.20101HC.200FEHD.20102H14.在机器内部操作中,CPU与存贮器之间信息交换使用的是(A)。A.物理地址B.逻辑地址C.有效地址D.相对地址15.寄存器间接寻址方式中,操作数在(A)中。A.存储单元B.I/O端口C.通用寄存器D.段寄存器16.MOVAX,[BX+SI]的源操作数的物理地址是(C)。A.(SS)×16+(BX)+(SI)B.(ES)×16+(BX)+(SI)C.(DS)×16+(BX)+(SI)D.(CS)×16+(BX)+(SI)17.下列指令执行后能使BX中数据必为奇数的是(A)。A.ORBX,01HB.XORBX,01HC.ANDBX,01HD.TESTBX,01H18.设CL=05H,要获得CL=0AH,可选用的指令