• 890.50 KB
  • 2022-04-22 11:46:20 发布

微机原理与接口技术习题答案.doc

  • 62页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'《微机原理与接口技术》李华贵主编课后习题参考答案第1章(1.6习题)1.简述名词的概念:微处理器、微型计算机、微型计算机系统。答:(1)微处理器:微处理器(Microprocessor)简称µP或MP,或CPU。CPU是采用大规模和超大规模集成电路技术将算术逻辑部件ALU(ArithmeticLogicUnit)、控制部件CU(ControlUnit)和寄存器组R(Registers)等三个基本部分以及内部总线集成在一块半导体芯片上构成的电子器件。(2)微型计算机:微型计算机(Microcomputer)是指以微处理器为核心,配上由大规模集成电路制作的存储器、输入/输出接口电路及系统总线等所组成的计算机,简称微机。(3)微型计算机系统:微型计算机系统由硬件与软件两大部分组成,分别称为硬件(Hardware)系统与软件(Software)系统。其中,硬件(Hardware)系统由CPU、内存储器、各类I/O接口、相应的I/O设备以及连接各部件的地址总线、数据总线、控制总线等组成。软件(Software)系统:计算机软件(Software)是指为运行、维护、管理、应用计算机所编制的程序及程序运行所需要的数据文档资料的总和。一般把软件划分为系统软件和应用软件。其中系统软件为计算机使用提供最基本的功能,但是并不针对某一特定应用领域。而应用软件则恰好相反,不同的应用软件根据用户和所服务的领域提供不同的功能。2.简述名词的概念:指令寄存器、地址寄存器、标志寄存器。答:(1)指令寄存器:指令寄存器(InstructionRegister,IR)用来保存计算机当前正在执行或即将执行的指令。当一条指令被执行时,首先,CPU从内存取出指令的操作码,并存入IR中,以便指令译码器进行译码分析。(2)地址寄存器:地址寄存器(AddressRegister,AR)被动地接受IP传送给它的地址值(二进制地址),AR的作用是保持IP送来的地址,并且以并行方式连接输出到CPU的地址引脚上,以便CPU访问指定的内存单元。(3)标志寄存器:标志寄存器(Flags,F)是CPU中不可缺少的程序状态寄存器,因此,也称程序状态字寄存器(PSW),所谓状态是指算术或逻辑运算后,结果的状态以二进制的0或1在标志寄存器中标识出来,例如,运算结果有进位,则进位标志位CF=1,否则为0。3.何谓IA-32处理器?61-- 答:Intel公司推出了32位结构的80386微处理器后,确定了80386芯片的指令集结构(InstructionSetArchitecture)为以后开发80X86系列处理器的标准,称其为Intel32位结构(IntelArchitecture-32,IA-32),后来的80486、Pentium等微处理器统称为IA-32处理器,或称32位80X86处理器。4.什么叫总线?总线包括哪三种?答:所谓总线,它将多个功能部件连接起来,并提供传送信息的公共通道,能为多个功能部件分时共享,CPU通过总线连接存储器和I/O接口等,构成了微型计算机。这里指的总线(BUS)包括地址总线、数据总线和控制总线三种。5.地址总线的作用是什么?答:地址总线(AddressBus,AB),通常是CPU用来发出地址信息的,用于对存储器和I/O接口进行寻址。6.什么叫溢出?判断溢出的方法是什么?答:(1)溢出通常指计算机运算的结果超出了计算机所能允许的范围。本章所讲的溢出是指用补码实现加/减运算后,若参与操作的两数在定义域内,但运算结果超出了字长范围内补码所能允许表示的值,所计算出的结果产生了错误,称之为溢出。(2)加/减运算判断溢出的方法:如果把加/减法运算都变成补码相加,则两个正数相加可能产生正的溢出,两个负数相加可能会产生负的溢出,正负两数相加不会产生溢出。具体实现的方法是:两个操作数运算后,用最高位和次高位产生的进位位异或,异或结果为1,则表示有溢出,结果为0,表示无溢出。例如:两个8位数运算后,溢出标志OF=C6⊕C77.假设四种CPU主存地址分别为16根、20根、24根以及32根,试问每种CPU可寻址内存多少字节?解:每种CPU可寻址内存分别是:216=64KB、220=1MB、224=16MB、232=4GB。8.在一般指令格式中,由哪两部分组成?答:由操作码和操作数组成。9.设字长为16位,将下列十进制数转换成二进制数、十六进制数以及BCD数。①65②129③257④51361-- 解:①65=01000000B=41H=(01100101)BCD②129=10000001B=81H=(000100101001)BCD③257=100000001B=101H=(001001010111)BCD④513=1000000001B=201H=(010100010011)BCD10.设字长为8位,写出x、y的原码、反码和补码,并且用补码计算x+y,问是否有溢出?①x=-78y=35②x=-64y=-66解:①x=-78y=35[X]原=11001110,[X]反=10110001,[X]补=10110010[Y]原=00100011,[Y]反=00100011,[Y]补=00100011[X]补+[Y]补=10110010+00100011=11010101,无溢出。②x=-64y=-66[X]原=11000000,[X]反=10111111,[X]补=11000000[Y]原=11000010,[Y]反=10111101,[Y]补=10111110[X]补+[Y]补=11000000+10111110=01111110,有溢出。11.试用8位二进制写出以下数、字母以及控制命令的ASCⅡ码,还要写出它们各自的奇校验、偶校验、标记校验及空格校验的ASCⅡ码。①B②8③CR④NUL解:各自对应的奇校验、偶校验、标记校验及空格校验的ASCⅡ码如表1所示。表1数、字母以及控制命令的ASCⅡ码数、字母以及控制命令奇校验偶校验标记校验空格校验B11000010010000101100001001000010800111000101110001011100000111000CR000011011000011011000110100001101NUL10000000000000000100000000000000012.设两个BCD数X=10001001,Y=01110101,试用列竖式的方法计算X+Y,注意要做加6修正运算。解:100010010111010111111110结果不正确110个位加6修正61-- 100000100结果还不正确+110十位加6修正101100100结果正确13.若规格化32位浮点数N的二进制存储格式为41360000H,求其对应的十进制数值。解:41360000H=01000001001101100000000000000000BN=(-1)S×(1.M)×2E-127=(-1)0×(1.011011)×2130-127=1.011011×23=1011.011=11.375D14.微机中的存储器是如何编址的?答:在微机中,存储器均按字节(一字节由8位二进制信息组成)编址,即每个字节有一个二进制的地址编码。给每个存储单元分配的一个固定地址,称为单元地址。15.微型计算机的硬件系统由那些部件组成?答:微型计算机的硬件系统主要由运算器、控制器、存储器、输入设备及输出设备五大部分组成。16.计算机的主要性能指标有哪些?答:字长、CPU的主频、主存储器的容量及外存储器的容量等。第2章(2.5习题)1.微型计算机可以工作在哪三种工作模式下?答:微处理器可以工作在:实地址模式、保护模式及虚拟8086模式共三种。2.如何从实模式转变到保护模式?答:通过对CPU中的控制寄存器CR0中的b0位置1,即保护允许位PE置1,于是系统进入保护模式。这是由操作系统程序来实现的。3.实模式有哪些特征?答:实地址模式(Real-AddressMode)也称实模式,简单地说,是指80286以上的微处理器所采用的8086的工作模式。在实模式下,采用类似808661-- CPU的体系结构,其寻址机制,尤其是存储器寻址,以及中断处理机制均和8086相同。在实模式下,关键是CPU寻址空间只有1MB(00000H~FFFFFH),也是采用分段管理存储器的方式,将存储器分成四种类型的段,每段存储空间最大为64KB。将1MB的存储空间保留两个区域:一个是中断向量表区(00000~003FFH),这是1KB的存储空间,用于存放256个中断服务程序的入口地址(中断向量),每个中断向量占4字节。4.16位微处理器有哪些通用寄存器?答:AX、BX、CX、DX、SI、DI、SP和BP。5.16位微处理器有哪4个段寄存器?每个段寄存器的作用是什么?答:4个段寄存器分别是代码段寄存器CS、数据段寄存器DS、附加段寄存器ES及堆栈段寄存器SS。(1)代码段寄存器CS是一个随机存取存储区,用来保存微处理器使用的程序代码。在8086系统中,代码段寄存器CS定义了代码段的起始地址。代码段的最大存储空间为64KB。(2)数据段寄存器DS也是一个随机存取存储区,用来保存程序执行过程中所使用的数据及存放程序运行后的结果。数据段寄存器DS定义了数据段的起始地址,其最大存储空间也是64KB。(3)附加段寄存器ES是为某些串操作指令存放操作数而附加的一个数据段。与数据段类似,附加段寄存器ES定义了附加段的起始地址,其最大存储空间也为64KB。(4)堆栈段寄存器SS是一个特殊的随机存取存储区,用来临时保存程序执行过程中有关寄存器的内容、程序的地址信息及传递参数等。堆栈段寄存器SS与堆栈指针SP共同确定堆栈段内的存取地址。其最大存储空间为64KB。6.如何理解32位微处理器的通用寄存器与16位的通用寄存器兼容?答:虽然32位微处理器将8086原来的8个16位通用寄存器AX、BX、CX、DX、SI、DI、BP、SP均扩展成(Extended)32位的寄存器,即EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP。但是,它保留了原来的8个16位寄存器和8个8位的寄存器,仍然可以使用它们编程,当然,所编写的程序仍然可以在32位机上运行。既可以用32位寄存器编程,还可以用16位及8位寄存器编程,这就实现了寄存器的兼容。7.什么叫段基地址?什么叫偏移地址?答:编程人员在编程时,只能涉及到逻辑地址,而不能涉及到实际地址。逻辑地址在实模式下,它由段基地址与段内偏移地址组成,习惯上写为“段基地址:偏移地址”,实模式下,61-- 段基地址与段内偏移地址都是16位,段基地址是段起始地址的高16位,说明每个段在主存中的起始位置,段内偏移地址也称“偏移量”,是所要访问存储单元距离起始地址之间的字节距离。在32位段的情况下,偏移量是32位。8.段寄存器与32位偏移地址寄存器的固定搭配如何?答:固定搭配如表2所示。表2段寄存器与32位偏移地址寄存器的固定搭配段寄存器偏移地址寄存器物理地址的用途CSEIP指令地址DSEAX、EBX、ECX、EDX、ESI、EDI、8位、16位或32位二进制数数据段内地址SSESP、EBP堆栈段内地址ES只有串操作时默认EDI附加数据段内地址(目地址)FS无固定搭配寄存器一般数据地址GS无固定搭配寄存器一般数据地址9.8086CPU由哪两部分组成?它们的主要功能各是什么?答:8086CPU内部结构从功能上看,它由两大部件组成,分为总线接口部件BIU(BusInterfaceUnit)和执行部件EU(ExecutionUnit)。(1)总线接口部件BIU的主要功能:它是8086CPU与外部存储器和I/O端口的接口,提供了16位双向数据总线和20位地址总线,负责CPU与存储器及I/O端口之间的数据传送操作(包括物理地址的形成)。(2)执行部件EU主要功能:从BIU中的指令队列获取指令,对指令进行译码分析并执行,执行指令所需要的操作数和运算结果的存储,是由EU向BIU传递偏移地址,BIU只要收到EU送来的偏移地址,于是将送来的偏移地址与相应的段地址组成20位的物理地址,根据现行的20位物理地址,通过执行存储器的读/写总线周期来完成读/写操作,或者是通过执行I/O端口的读/写总线周期来完成读/写I/O端口的操作。10.8086CPU中的标志寄存器FLAGS有哪些状态标志位?在什么情况下置位?答:状态标志有6位:CF、PF、AF、ZF、SF和OF。①CF(CarryFlag),进位标志位。本次运算中最高位有进位或借位时,CF=1。②PF(ParityFlag),奇偶校验标志位。本次运算结果的低8位中1的个数为偶数时,PF=1。③AF(AuxiliaryCarryFlag),辅助进位标志位。本次运算结果低4位向高4位有进位或借位时,AF=1。61-- ④ZF(ZeroFlag),零标志位。若运算结果为0时,ZF=1。⑤SF(SignFlag),符号标志位。当运算结果的最高位为1,则SF=1。⑥OF(OverflowFlag),溢出标志位。当运算结果有溢出时,OF=1。11.什么是逻辑地址?什么是物理地址?如何将逻辑地址转换为物理地址?答:从8088/8086开始,CPU内部就有了对存储器的分段机制,每个存储单元可以看成两种地址:逻辑地址与物理地址。(1)逻辑地址逻辑地址是编程时所使用的地址,在实模式下,它由段基地址与段内偏移地址组成,习惯上写为“段基地址:偏移地址”。(2)物理地址物理地址又称为实际地址,它是信息在内存中存放的实际地址,是CPU访问存储器时实际发出的地址信息。(3)在实地址方式下,由CPU中的总线接口单元将段基地址左移4位后与16位的偏移地址相加,生成20位的物理地址。可以访问1MB的存储空间。12.设X=35H,Y=76H,进行X+Y和X-Y运算后,标志寄存器FLAGS的状态标志位各是什么?答:(1)X+Y=35+76后,CF=0、AF=0、SF=0、OF=0、ZF=0、PF=1。(2)X-Y=35-76后,CF=1、AF=1、SF=1、OF=0、ZF=0、PF=1。13.什么叫存储器地址交叉?微机的存储器为什么要用存储器地址交叉技术?答:(1)在一个物理存储芯片内部所有存储单元的地址编号都不是连续的,而在相邻存储芯片之间的物理地址是相连接的,例如,16位的微处理器8086/80286把内存地址分为偶地址的字节数据、奇地址的字节数据,因此,分为偶字库和奇字库,即在一个物理存储芯片内所有存储单元的地址编号都是奇地址,另一物理存储芯片内所有存储单元的地址编号都是偶地址,这就称为地址交叉。(2)偶地址存储体与数据总线的低8位(D7~D0)相连,奇地址存储体与数据总线高8位(D15~D8)相连,可以由偶地址有效选中偶字库(例A0=0),由奇地址有效选中奇字库(例(=0)。原因是:便于CPU可以只访问偶地址一个字节,也可以只访问奇地址一个字节,还可以访问一个字(2字节)。在CPU的外部数据总线为32位的情况下,CPU不仅可能只访问一个字节、一个字,还可能访问一个双字,因此,把内存分成4个存储体,实现存储器地址的4体交叉。14.请将实模式下逻辑地址转变成物理地址。(1)FFFFH:0000H(2)0045H:0018H61-- (3)2000H:4600H(4)B821H:3456H解:(1)FFFFH:0000H,物理地址=FFFFH×16+0000H=FFFF0H(2)0045H:0018H,物理地址=0045H×16+0018H=00468H(3)2000H:4600H,物理地址=2000H×16+4600H=24600H(4)B821H:3456H,物理地址=B821H×16+3456H=BB666H15.在8086系统中,CPU执行访问存储器指令时,=0,说明当前CPU要访问哪一个存储体?答:当=0时,CPU要访问奇地址的存储体。第3章(3.12习题)3.1按照16位微处理器的寻址方式看,分别指出下列指令中源操作数和目的操作数的寻址方式。解:(1)movax,0;源操作数:立即寻址,目的操作数:寄存器寻址(2)mov[si],ax;源操作数:寄存器寻址,目的操作数:变址寻址(3)mov2[di],bx;源操作数:寄存器寻址,目的操作数:相对变址寻址(4)mov2[bx+si],dx;源操作数:寄存器寻址,目的操作数:相对基址(加)变址寻址(5)movax,[1000h];源操作数:直接寻址,目的操作数:寄存器寻址(6)movdx,[bx][si];源操作数:基址(加)变址寻址,目的操作数:寄存器寻址(7)movax,[bx];源操作数:基址寻址,目的操作数:寄存器寻址(8)movdx,[bp+8];源操作数:相对基址寻址,目的操作数:寄存器寻址3.2按照32位微处理器的寻址方式看,分别指出下列指令中源操作数和目的操作数的寻址方式。解:(1)moveax,01h;源操作数:立即寻址,目的操作数:寄存器寻址(2)mov[esi],ax;源操作数:寄存器寻址,目的操作数:基址寻址61-- (3)mov[esi*2],bx;源操作数:寄存器寻址,目的操作数:比例变址寻址(4)mov[ebx+esi],dx;源操作数:寄存器寻址,目的操作数:基址加比例变址寻址(5)moveax,[1000h];源操作数:直接寻址,目的操作数:寄存器寻址(6)movdx,[ebx+esi*8];源操作数:基址加比例变址寻址,目的操作数:寄存器寻址(7)movedx,eax;源操作数:寄存器寻址,目的操作数:寄存器寻址(8)movdx,[ebp*2+8];源操作数:比例变址加位移寻址,目的操作数:寄存器寻址(9)movdx,[ebx+8];源操作数:基址加位移寻址,目的操作数:寄存器寻址(10)movax,[ebx+esi*2+78h];源操作数:基址加比例变址加位移寻址,目的操作数:寄存器寻址3.3指出下列指令的错误原因解:(1)inc[si];目的操作数类型不明确(2)moveax,bx;源操作数和目的操作数类型不匹配(3)mov2,ax;立即数不能作目的操作数(4)mov[ebx],[edi];源操作数和目的操作数不能同时为存储器操作数(5)movax,[bx+bp];基址变址寻址方式不能同时为基址寄存器(6)movax,[si+di];基址变址寻址方式不能同时为变址寄存器(7)movah,300;300超出了ah可以容纳的数据范围(8)movcs,1000h;cs不能由程序员赋值,它由系统自动赋值(9)pushal;push要求操作数为16位或32位(10)shlax,8;当移位次数超过1时,先将移位次数送cl,再移位(11)movax,bx+di;基址变址寻址方式缺少一对方扩号(12)movip,bx;ip不能由程序员赋值,它由系统自动赋值(13)moves,ds;源操作数和目的操作数不能同时为段寄存器(14)mov[sp],ax;入栈只能用push指令实现3.4比较下列两条指令,指出他们的区别。解:moveax,[si];从内存读数据送eax61-- mov[si],eax;把eax的值写入到内存3.5假设(EAX)=12345678H,写出下面每条指令单独执行后,(EAX)=?解:(1)andeax,0000ffffh;(eax)=00005678h(2)testeax,1;(eax)=12345678h(3)xoreax,eax;(eax)=0(4)subeax,eax;(eax)=0(5)addeax,1;(eax)=12345679h(6)oreax,1;(eax)=12345679h(7)cmpeax,0000ffffh;(eax)=12345678h(8)inceax;(eax)=12345679h(9)deceax;(eax)=12345677h(10)subeax,8;(eax)=12345670h3.6假定(AX)=1234H,(BX)=00FFH,回答每条指令单独执行后,(AX)=?(BX)=?解:(1)andax,bx;(ax)=0034h(bx)=00ffh(2)testax,bx;(ax)=1234h(bx)=00ffh(3)xorax,bx;(ax)=12cbh(bx)=00ffh(4)xchgax,bx;(ax)=00ffh(bx)=1234h(5)addax,bx;(ax)=1333h(bx)=00ffh(6)subbx,ax;(ax)=1234h(bx)=0eecbh(7)orbx,ax;(ax)=1234h(bx)=12ffh(8)cmpax,bx;(ax)=1234h(bx)=00ffh3.7假设(EAX)=11223344H,(EBX)=11225566H,写出下面程序段每条指令执行后(EAX)=?(EBX)=?解:addeax,ebx;(eax)=224488aaH,(ebx)=11225566Haddeax,00000088h;(eax)=22448932H,(ebx)=11225566Hsubeax,ebx;(eax)=112233ccH,(ebx)=11225566Hincebx;(eax)=112233ccH,(ebx)=11225567Handebx,0000ffffh;(eax)=112233ccH,(ebx)=00005567H61-- 3.8已知(DS)=1000H,(BX)=0100H,(SI)=0004H,存储单元[10100H]~[10107H]依次存放11H22H33H44H55H66H77H88H,[10004H]~[10007H]依次存放2AH2BH2CH2DH,说明下列每条指令单独执行后AX中的内容。解:(1)MOVAX,[0100H];(AX)=2211H(2)MOVAX,[BX];(AX)=2211H(3)MOVAX,[0004H];(AX)=2B2AH(4)MOVAX,[0102H];(AX)=4433H(5)MOVAX,[SI];(AX)=2B2AH(6)MOVAX,[SI+2];(AX)=2D2CH(7)MOVAX,[BX+SI];(AX)=6655H(8)MOVAX,[BX+SI+2];(AX)=8877H3.9已知(DS)=1000H,(EBX)=0100H,(ESI)=0004H,存储单元[10100H]~[10107H]依次存放11H22H33H44H88H77H66H55H,[10004H]~[10007H]依次存放8AH8BH8CH8DH,说明下列每条指令执行后EAX中的内容。解:(1)MOVEAX,[0100H];(EAX)=44332211H(2)MOVEAX,[EBX];(EAX)=44332211H(3)MOVEAX,[EBX+4];(EAX)=55667788H(4)MOVEAX,[0004H];(EAX)=8D8C8B8AH(5)MOVEAX,[ESI];(EAX)=8D8C8B8AH(6)MOVEAX,[EBX+ESI];(EAX)=55667788H3.10什么是堆栈?它的工作原理是什么?它的基本操作有哪两个?答:堆栈是在内存RAM中开辟的一段空间,利用“先进后出”或“后进先出”的原则存取数据。如果把数据压入堆栈,则堆栈指针的值是减少的,即所谓的向下生成堆栈。由SS:SP(16位)或SS:ESP(32位)指向栈底(栈空)或栈顶(栈不空)地址。它的基本操作有数据入栈指令PUSH和数据出栈指令POP。3.11设SS=1000H,SP=0100H,指出下列每条指令执行后,(AX)=?(BX)=?(SP)=?并且回答堆栈中的内容如何?解:61-- MOVAX,2233H;(AX)=2233H,(BX)不确定,(SP)=0100HPUSHAX;(AX)=2233H,(BX)不确定,(SP)=00FEHMOVBX,4455H;(AX)=2233H,(BX)=4455H,(SP)=00FEHPUSHBX;(AX)=2233H,(BX)=4455H,(SP)=00FCHPOPAX;(AX)=4455H,(BX)=4455H,(SP)=00FEHPOPBX;(AX)=4455H,(BX)=2233H,(SP)=0100H这段指令执行后将AX和BX的值互换。3.12什么是16位段?它有何特点?答:32位微机在上电或复位后,微处理器首先工作在实地址模式,它与8086/80186的工作方式具有相同的基本结构,也只能寻址1MB物理存储空间,分段最大只能是64KB,但是,在实地址模式下,32位X86CPU可以使用16位寄存器和16位寻址方式,这与8086CPU兼容,32位X86CPU还可以使用32位寄存器和32位寻址方式,处理32位数据及执行32位的新增指令,但是,段基地址和偏移量都只用16位,6个段寄存器仍然当作16位的段寄存器使用,对于偏移地址来说,如果是32位,则高16位应该为0,只有低16位偏移地址有效,相当于可以进行32位数处理的快速8086,所以称之为“16位段”。3.13什么是32位段?它与16位段的主要区别如何?答:32位X86CPU由实地址模式可以进入保护工作模式,它是一个增强了80286保护模式功能的32位保护工作模式。在保护工作模式下,32位微处理器不仅具有段式存储器管理功能,而且还有页式存储器管理功能,支持虚拟存储器,段基地址和段内偏移量都是32位,称之为“32位段”,使用全部32条地址线,可以寻址的物理存储器达到4GB,只有在保护模式下,32位X86CPU才能发挥全部功能。而32位段的程序只能在32位Windows环境中执行。3.1416位存储器寻址中,分为哪几种寻址方式?答:(1)直接寻址(2)基址寻址(包括相对基址寻址)(3)变址寻址(包括相对变址寻址)(4)基址(加)变址寻址(5)相对基址(加)变址寻址61-- 3.1532位存储器寻址中,分为哪几种寻址方式?答:(1)直接寻址(2)基址寻址(3)基址加位移寻址(4)比例变址寻址(5)比例变址加位移寻址(6)基址加比例变址寻址(7)基址加比例变址加位移寻址3.16对于立即寻址的指令,有8位、16位及32位的立即寻址的指令,各列举2条指令(一条是传送指令,另一条是加法指令)。解:8位立即寻址指令(1)MOVAH,2(2)ADDAL,316位立即寻址指令(1)MOVAX,1234H(2)ADDDX,3456H32位立即寻址指令(1)MOVEAX,12345678H(2)ADDEDX,12345678H3.17用移位指令将ESI中内容移入EDI中,如何实现?解:.modelsmall.386.code.startupmovesi,11223344h61-- movedi,12345678hshrdedi,esi,16rolesi,16shrdedi,esi,16.exitEnd3.18将EBX中存放的值清零,实现的方法有哪一些?解:(1)SUBEBX,EBX(2)ANDEBX,0(3)XOREBX,EBX第4章(4.5习题)1.该数据段在内存中的分配图如下。变量内容EA01234Buf→152637num→34h812h961-- point1→05h1000h11point2→08h1200h13data1415str→31h1632h1733h180ffh1902h200ffh2102h222.将下列程序段所定义字符串中的小写字母均改为大写字母,并放回原处,原大字母不变,最后,用DOS的9号功能显示这串大写字符,请完善下列程序。.modelsmall .data xdb‘HelloEVEryBODY!’,’$’.code.startup解:61-- 程序如下:.modelsmall.386.dataxdb"HelloEVEryBODY!","$".code.startupleabx,x.repeatmoval,[bx].ifal>="a"&&al<="z"subal,20hmov[bx],al.endifincbx.untilal=="$"leadx,xmovah,9int21h.exitend3.设变量名VAL1、VAL2及SUM的数据类型属性都是双字属性,VAL1和VAL2中分别存放了一个32位的加数和被加数,SUM用于存放和数。(1)选用简化段格式编程,实现两个32位数相加,结果存放到SUM变量所指的存储单元。(2)选用完整段格式编程,实现上述相同的功能。提示:只能使用16数相加。解:程序一,简化段格式编程,实现两个32位数相加,结果存放到SUM变量所指的存储单元。.modelsmall.386.dataval1dd12345678hval2dd87654329hsumdd?.code.startupmoveax,val161-- addeax,val2movsum,eax.exitend程序二,完整段格式编程,实现两个32位数相加,结果存放到SUM变量所指的存储单元。datasegmentval1dd12345678hval2dd87654329hsumdd?dataendscodesegmentassumecs:code,ds:datastart:movax,datamovds,axmovax,wordptrval1addax,wordptrval2movwordptrsum,axmovax,wordptrval1+2addax,wordptrval2+2movwordptrsum+2,axmovah,4chint21hcodeendsendstart4.将数据段内的一串字符传送到附加的数据段内,并将传送到附加数据段内的字符显示出来,要求用完整段和简化段两种格式分别编程实现。解:程序一,简化段格式编程,实现将数据段内的一串字符传送到附加的数据段内,并将传送到附加数据段内的字符显示出来。.modelsmall.386.dataxdb"HelloWorld!","$"nequ$-xydb100dup(?).code61-- .startupmovax,dsmoves,axmovcx,nleasi,xleadi,yrepmovsbmovah,9leadx,yint21h.exitend注意:在简化段模式编程时,数据段和附加数据段是同一段,在使用字符串指令时,用指令movax,ds、moves,ax将DS和ES保持一致。程序二,完整段格式编程,实现将数据段内的一串字符传送到附加的数据段内,并将传送到附加数据段内的字符显示出来。datasegmentxdb"HelloWorld!","$"nequ$-xdataendsedatasegmentydb100dup(?)edataendscodesegmentassumecs:code,ds:data,es:edatastart:movax,datamovds,axmovax,edatamoves,axleasi,xleadi,ymovcx,nrepmovsbmovah,9leadx,y61-- int21hmovah,4chint21hcodeendsendstart5.设有一个数组存放了40名学生的成绩(0~100分),设数组位于变量名为SCORS的存储单元,编程统计0~59分、60~69分、70~79分、80~89分及90~100分的人数,并分别存放到SCOREE、SCORED、SCOREC、SCOREB、SCOREA存储单元中。解:程序一,简化段格式编程.modelsmall.386.datascoredb90,23,56,67,98,78,10,45,87,100db65,78,89,100,45,30,99,69,59,60db0,59,60,69,70,79,80,89,90,99db100,61,68,71,78,81,88,91,98,0n=$-scorescoreedb0scoreddb0scorecdb0scorebdb0scoreadb0.code.startupleasi,scoremovcx,nmovdl,10.whilecx!=0movah,0moval,[si]divdlsubal,5.ifsbyteptral<=0incbyteptrscoree.elsemovah,061-- .ifal==5moval,4.endifmovbx,axincbyteptrscoree[bx].endifincsideccx.endw.exitend程序二,完整段格式编程datasegmentscoredb90,23,56,67,98,78,10,45,87,100db65,78,89,100,45,30,99,69,59,60db0,59,60,69,70,79,80,89,90,99db100,61,68,71,78,81,88,91,98,0n=$-scorescoreedb0scoreddb0scorecdb0scorebdb0scoreadb0dataendscodesegment"code"assumecs:code,ds:datastart:movax,datamovds,axleasi,scoremovcx,nmovdl,10class:movah,0moval,[si]divdlsubal,5jggreatincbyteptrscoree61-- jmpnextgreat:movah,0cmpal,5jnzstoremoval,4store:movbx,axincbyteptrscoree[bx]next:incsiloopclassmovah,4chint21hcodeendsendstart6.已知两个字的定义如下,比较这两个字的大小,将较大的数存放到Z单元,如果两数相等,则把其中任意一数存入Z单元。要求用简化段格式编程:(1)按照无符号数比较与编程。(2)按照有符号数比较与编程。XDW1234HYDW9678HZDW?解:(1)按照无符号数比较与编程。.modelsmall.386.dataxdw1234hydw9678hzdw?.code.startupmovax,xmovbx,y.ifax>bxmovz,ax.elsemovz,bx.endif.exit61-- end(2)按照有符号数比较与编程。.modelsmall.386.dataxdw1234hydw9678hzdw?.code.startupmovax,xmovbx,y.ifswordptrax>swordptrbxmovz,ax.elsemovz,bx.endif.exitend7.已知两个字的定义如第6题,编程求X-Y,结果存入Z单元。要求用简化段格式编程,并回答存入Z单元的数是多少?解:.modelsmall.386.dataxdw1234hydw9678hzdw?.code.startupmovax,xsubax,ymovz,ax.exitend存入Z单元的数是7bbch。把指令subax,y改为subswordptrax,y结果不变。61-- 8.用完整段格式编程,键盘每输入一个字符,用二进制形式(0/1)显示出该字符的ASCII码值。解:datasegmentasciidb7dup(?),"$"dataendscodesegmentassumecs:code,ds:datastart:movax,datamovds,axrp:movah,1int21hcmpal,27;可重复输入,Esc键结束jzfinimovbl,2leasi,ascii+6lop1:movah,0divbladdah,30hmov[si],ahdecsicmpal,0jnzlop1leadx,asciimovah,9int21hmovah,2movdl,0dhint21hmovdl,0ahint21hmovcl,7leasi,asciiini:movbyteptr[si],""incsideccljnzinijmprpfini:movah,4chint21h61-- codeendsendstart9.设10名评委在0~10的整数范围内给选手打分,10个分值已经存入X存储单元,计算选手的最终得分,计分方法是:10个得分中,去掉一个最高分(如有两个以上的相同最高分也只去掉一个),去掉一个最低分(如有两个以上的相同最低分也只去掉一个),剩下8个得分。(1)用简化段编程求剩下8个得分之和。(2)用简化段编程求平均值,精确到小数点后面1位。提示:用AX/BL(8),商在AL中,余数在AH中。将余数乘以10传送给AL,再除以8,所得商是小数点后的一位值。解:.modelsmall.386.stack.dataxdb7,8,9,8,10,10,9,8,7,10n=$-x.data?sumdb?averagedb0,".",0,"$"maxdb?mindb?.code.startupmovdl,xmovmax,dlmovmin,dlmovcx,n-1movbx,1.whilecxmoval,x[bx]adddl,al.ifal>maxmovmax,al.endif.ifalDPL221否(CPL、RPL)>DPL13.简述32位机既分段又分页的地址转换过程。参考第6章6.1.2。第7章(7.5习题)1.半导体存储器从存取方式上分,可分为哪两类,每类又分为哪一些?答:分为RAM与ROM两大类:(1)RAMRAM按其工艺结构分为双极型与金属氧化物半导体RAM两类。①双极型RAM②MOS型RAMRAM按其工作方式分,有:①SRAM(静态RAM)②DRAM(动态RAM)(2)ROM主要分为如下四种:掩膜式ROM、可编程只读存储器PROM(ProgrammbleROM)、紫外线擦除的可编程只读存储器EPROM(ErsablePROM)及电擦除可编程只读存储器EEPROM(ElectricallyEPROM)。61-- 2.什么叫半导体存储器的存取周期?答:存取周期是指存储器从接收到地址,到实现一次完整的读出所经历的时间,通常取写操作周期与读操作周期相等,故称为存取时间。因此也可以理解为存储器进行连续读或写操作所允许的最短时间间隔。3.半导体存储器芯片内的地址译码有哪两种方式?每种译码方式有何特点?答:单译码和双译码两种方式。单译码方式是将n位地址输入到存储器内部译码器输入端,经译码后可以产生2n个输出选择信号,每个输出选择信号选中存储阵列中的一个字,所以单译码方式也称为字译码方式,缺点是译码输出线远多于双译码结构。双译码结构需要2个译码电路,只有当两个译码器输出的选择线都有效时,交叉的存储单元被选中。采用双译码结构其译码输出选择线大大减少,所以,在存储芯片中一般采用双译码结构。4.已知某RAM芯片的存储容量为16KB,ROM芯片的存储容量为4K×8位,问每种存储芯片的地址线和数据线分别为多少?答:16KB:地址线14根,数据线8根。4K×8位:地址线12根,数据线8根。5.分别用8KB和16K×8位的RAM芯片构成256KB的存储器,各需要多少片?需要地址线多少根?答:8KB:32片,地址线18根。16K×8位:16片,地址线18根。6.阐述图7-16单管动态存储电路中刷新操作的原理。参考第7章7.2.4。7.微处理器与存储器相连接时应考虑哪几方面的问题?答:(1)CPU总线的负载能力。(2)CPU的时序与存储器存取速度之间的配合。(3)存储器结构的选定。61-- 8.说明Flash闪存进行块擦除的原理。参考第7章7.2.3。9.选用1M×4位DRAM芯片构成32位机(设存储器数据总线为32位)的存储器,存储容量为16MB,试问:(1)共计需要多少片?(2)共计需要分几组?每组多少片?答:(1)32片。(2)共计需要分4组,每组8片。10.简述32位存储器系统的组成。参考第7章7.3.2。11.简述高速缓冲存储器Cache的主要工作原理。参考第7章7.4.1。12.设CPU执行一段程序时,访问Cache次数Nc=2000,访问主存次数Nm=100,又假设访问Cache存取周期为50ns,访问主存存取周期为250ns,试求命中率h、平均访问时间ta以及倍率r。解:ta=htc+(1-h)tm=0.952×50ns+(1-0.952)×250ns=59.6ns13.写出组相联映射方式的函数关系式,并作简要说明。PentiumCPU采用的映射方式如何?答:组相联映射方式将Cache分成u组,每组有v行,主存块存放到哪一组是固定的,至于存放到哪一行是任意的,设Cache行的总数量为m,组号为q,主存块号为j,则有如下函数关系:m=u×vq=jmoduPentiumCPU内部Cache的结构采用组相联结构。Cache采用2路组相联结构来分成128组,每组2行,每行32B,数据总容量是128×2×61-- 32B=8KB,每路4KB。14.写一次法与回写法的区别如何?答:使用回写法,对于Cache中的行,只要不被替换就不会写入主存,也就是说,只有当某一行被替换时才被写回到主存中对应位置。写一次法与回写法的写策略基本相同,写一次法只是在第一次写命中时要同时写入主存,然后CPU对Cache的写命中则按照回写法的策略对待,这可以节省CPU的总线周期,有利于超标量流水线的进程,有利于提高系统的运行速度。二者与通写法相比较,都减少了CPU对总线的操作,提高了系统的运行速度。15.32位存储器组织将内存分为4个存储体,地址总线32位,画出每个存储体的地址分配图。解:在32位数据总线的微处理器中,直接输出A31~A230位地址,低2位A1、A0由内部编码产生4个字节选择信号~,以选择不同的字节。由4个字节选择信号把主存储器分为4个存储体,依次存放32位数据中的4个字节,每个体的8位数据依次并行连接到外部数据线D31~D0上,由~选中每个存储体,每个体的地址范围见图3所示。图332位存储器组织图第8章(8.5习题)1.什么叫接口电路?从CPU与外设之间交换信息的方式看,接口电路可分为哪四类?答:61-- 所谓接口(Interface)电路就是微处理器与外围设备(外设)之间的连接电路,它是两者之间进行信息交换时的必要通路,不同的外设有不同的输入/输出接口电路。(1)程序控制I/O方式。(2)查询式输入输出方式。(3)中断控制I/O方式。(4)直接存储器存取(DMA)方式。2.接口电路的主要功能有哪些?答:(1)设备选择功能。(2)数据缓冲功能。(3)接收和执行CPU命令的功能。(4)寄存外设状态的功能。(5)信号的转换功能。(6)数据宽度变换的功能。(7)可编程功能。3.CPU与外设之间交换的信息有哪些?答:①数据信息,包括输入数据和输出数据。②命令信息,输出信息。③状态信息,输入信息。4.I/O端口的两种编址方式各有什么优缺点?答:统一编址方式的优点:不需要设立独立的I/O指令,用访问内存的指令就可以访问外设,因此,可以对端口进行算术运算,逻辑运算以及移位操作等。I/O端口空间不受限制。主要缺点是I/O端口占用了内存空间,减少了内存容量。独立的I/O编址方式的主要优点:不占用内存空间,使用专门I/O指令访问I/O端口,I/O速度快。缺点:CPU的引脚上必须具有能区分访问内存还是访问I/O端口的信号,将它作为I/O接口电路中端口译码电路以及存储器片选译码电路的输入信号。5.根据图8-2,编写从端口0输出8位数据的简单程序。解:MOVDX,3E0HMOVAL,88HOUTDX,AL6.根据图8-7,分析无条件输出接口电路的基本工作过程。61-- 参考第8章8.3.27.I/O接口电路与CPU一侧一般有哪几种连线?与外设一侧有哪几种连线?答:(1)I/O接口电路与CPU一侧的连线主要包括:①数据线。②地址线。③CPU的读()、写()控制信号相应接到I/O接口电路中的读、写控制输入端。④在独立I/O编址方式的CPU引脚上必然有一根用于区别当前访问内存还是访问I/O设备的信号线,引脚为M/,当M/=0时,CPU访问I/O接口,因此,I/O接口电路还必须与CPU引脚M/相连接。(2)与外设一侧相连的信号线有:输入/输出数据线;控制线及外设送来的状态线。8.什么叫端口?一般I/O接口电路中有哪几种端口?答:端口(Port)是接口电路中能被CPU直接访问的寄存器。根据寄存器中所存放的信息,有数据信息、控制信息及状态信息,所以,分别被称为数据端口、控制端口及状态端口。9.无条件I/O传送方式有何特点?答:这种方式是一种最简单的输入/输出控制方式,其I/O接口电路及软件比较简单,所有的操作均由执行程序来完成。采用这种方式,输入接口电路总是准备好了等待输入给CPU的数据,输出接口电路总是准备好了接受来自CPU的数据。CPU无须查询I/O设备是否准备就绪,直接用汇编语言或高级语言编程,实现输入或输出操作。10.分别画出查询式输入与查询式输出的流程图。解:查询式输入与查询式输出的流程图分别如图4和图5所示。61-- 图4查询式输入程序的流程图图5查询式输出程序的流程图11.多个外设均工作在查询式输入/输出方式主要存在什么问题?答:CPU必须顺序查询每一个外设,当某一个外设不需要服务时,CPU也得按顺序查询一次。外设总是处于被动状态,CPU无法快速响应外设要求及时服务的请求。CPU为了服务外设,其他程序会停止执行,所以,查询式I/O方式不可能是微型计算机外设工作的最佳选择,不适用于实时监控系统。12.DMAC中有哪几个基本寄存器?答:有4个基地址寄存器和4个基本字计数寄存器,其大小都是16位长度,即4个DMA通道的每一个通道都有一个基地址寄存器和一个基本字计数寄存器。13.简述中断传输方式的特点。答:在中断控制方式下,所有的I/O设备都可以工作在主动请求CPU为该外设服务的状态下,一旦一个或多个外设申请中断服务,则CPU根据各I/O设备预先被设置的中断优先级别,逐个予以响应,并进行中断处理、中断返回,实现中断处理的全过程。采用中断技术后,CPU能与所有的外设并行工作,能及时服务外设,并处理系统异常情况,从而可以提高微机的整体性能,提高计算机的运行速度。14.82C37A芯片是一种什么类型的芯片?试说明82C37A芯片结构。答:参考第8章8.4.115.简要说明82C37A两种屏蔽寄存器的用法。61-- 答:参考第8章8.4.316.简要说明82C37A四种传送类型的特点。答:方式寄存器中的最高2位(即D7和D6),被用来为该通道从4种可能的DMA操作方式中选择出其中的一种:请求方式,单次方式,块方式和级联方式。这4种方式允许每次传送1个数据字节或1个字节块。(1)在请求传送方式中,一旦启动了DMA周期,只要HRQ信号保持有效且还未达到终止计数值(TC),则将仍然连续不断地进行数据字节的传送。所谓达到终止计数值,是指当前字计数寄存器中的值,在每次数据传送之后会自动减1,最终从0000H变为FFFFH。(2)块传送方式类似于请求传送方式,即一旦启动了DMA周期,则将连续地进行数据传送操作,直至达到了终止计数值。它们之间的不同之处是,在请求传送方式下,DREQ返回到它的无效状态并将暂停数据传送过程,但在块传送方式下,当DMA周期开始后可在任何时刻释放DREQ信号,而块传送仍将继续进行,直至整个数据块传送完毕。(3)在单次传送方式下,通道被设置为每次只能进行一个数据的传送。当该传送操作完成时,将当前字计数值减1。而将当前地址加l或减1(可选)。(4)级联传输方式是多片82C37A级联,分成一个主片和多个从片,把从片的HRQ端和主片的DREQ端相连,从片的HLDA端和主片的DACK端相连接,主片的HRQ端和HLDA端连接到系统总线上。这样,最多可以由5个82C37A级联,构成二级DMA传输系统,可得到最多16个DMA通道。在写方式寄存器时,主片一定要设置成级联传输方式,从片按需要设置成其他的某种方式。17.82C37A中用户可访问的寄存器是哪些?答:除了暂时地址寄存器和暂时字计数寄存器两个寄存器用于暂时存放当前地址和当前字节数,CPU不能直接访问这两个寄存器之外,其他的都可以访问。18.82C37A通常初始化编程的步骤是哪些?答:①输出主清除命令;②设置页面寄存器;③写入基地址和当前地址寄存器;④写入基本字计数寄存器和当前字计数寄存器;⑤写入方式寄存器;⑥写入命令寄存器;⑦写入屏蔽寄存器;⑧请求寄存器(块传送)。61-- 19.82C37A如何实现硬件DMA请求和软件DMA请求?答:参见第8章8.4.320.利用82C37A快速清除视频显示缓冲区。设需要填充存储器的起始地址为8000H:0,填充的字节数是2000,82C37A的基地址是00H,通道1页面寄存器的端口地址为83H。通道0的源地址保持不变,则82C37A会将同一存储单元的内容复制到由通道1寻址的整个存储区。试编写存储器填充的程序段。解:编程如下:.stack .code.startup moval,00ut0dh,al;主清零命令moval,08hout83h,al;置通道1页面寄存器moval,0out02h,al;写地址低8位moval,0out02h,al;写地址高8位movax,2000out03h,al;先写低8位moval,ahout03h,al;后写高8位moval,88hout0bh,al;写通道0模式字moval,85hout0bh,al;写通道1模式字moval,83hout08h,al;写命令字,允许通道0地址保持moval,0ehout0fh,al;解除通道0的屏蔽moval,04hout09h,al;通道0使用软件请求,启动DMA传输.exit0;返回DOSend61-- 第9章(9.5习题)1.什么叫中断?答:所谓“中断”是指在CPU正常运行程序时,由于内、外部事件引起CPU暂时中止正在运行的程序,转而去执行请求CPU暂时中止的内、外部事件的服务程序,待该服务程序处理完毕后又返回到被中止的程序。2.什么是中断向量?实模式下中断向量表位于存储器中的什么位置?答:中断向量是指中断服务程序的入口地址。中断向量表是存放中断服务程序入口地址(即“中断向量”)的表格。它存放在存储器的最低端(0000H:0000H~0000H:03FFH)共1024个字节的存储器中。3.说明80X86实模式下中断源的优先级。答:中断源的优先级如表5所示。表5中断优先级中断优先级除法出错、INTn、INTO最高NMI…INTR…单步最低4.80X86CPU有哪几种中断?简要说明8086中断的特点?答:1.外部中断8086有两条中断申请输入信号线——可屏蔽中断INTR和非屏蔽中断NMI,可供外设向CPU发中断请求信号。主要特点:可屏蔽中断INTR由82C59A中断控制器提供中断类型号,非屏蔽中断NMI有固定的中断类型号,由中断类型号乘以4,获得中断向量的指针,找到中断服务程序的首地址。中断过程中,能自动保存F、CS及IP值。2.内部中断内部中断是通过软件调用的不可屏蔽中断,包括溢出中断、除法出错中断、单步中断、INTn指令中断以及断点中断等。61-- 软中断由软中断指令提供中断类型号,其他与外部中断相类似。5.简述80X86可屏蔽中断的响应过程。参看第9章9.2.3。6.什么是中断类型号?什么是中断响应周期答:(1)在具有向量中断的微机系统中,每个外设都预先指定一个中断类型号,又称为中断类型码、中断向量号及向量类型等,当CPU识别出某个外设请求中断并予以响应时,控制逻辑就将该外设的中断类型号送入CPU,以自动地提供相应的中断服务程序的入口地址(称为中断向量),转入中断服务。所以中断类型号是用来确定中断源及相应中断服务程序的编号。(2)参考第9章图9-4中断响应周期7.82C59A芯片初始化的流程如何?参看第9章图9-17。8.简要说明82C59A中断控制器中的IRR、ISR和IMR三个寄存器的功能。参看第9章9.3.182C59A内部结构9.简要说明82C59A几种中断优先权管理方式的特点。参看第9章9.3.382C59A的工作方式10.简要说明82C59A两种中断结束方式的特点。答:(1)自动中断结束方式在中断服务程序中,中断返回之前,不需要发出中断结束命令就会自动清除该中断源所对应的ISR位,实际上,在CPU发出第2个信号时,82C59A即自动清除ISR中的对应位。该方式用于多个中断源不会产生嵌套的系统中。(2)非自动中断结束方式在中断服务程序返回之前,必须发出中断结束命令才能使ISR中的当前服务位清除。此时的中断源结束命令有两种形式:①不指定中断源结束命令,即设置操作命令字OCW2=00100000B。②指定中断结束命令,即设置OCW2=00100L2L1L0,其中,最低3位L2L1L0的编码表示被指定要结束的中断。11.解释82C59A中的优先权循环参看第9章9.3.3及表9-361-- 12.某一8086CPU系统中,采用一片82C59A进行中断管理。设定82C59A工作在普通全嵌套方式,发送EOI命令结束中断,采用边沿触发方式请求中断,IR0对应的中断向量码为90H。另外,82C59A在系统中的I/O地址是300H(A0=0)和301H(A0=1)。请编写82C59A的初始化程序段。解:对82C59A的初始化程序如下:MOVAL,00010011B;设置ICW1初始化命令字MOVDX,300HOUTDX,AL;将ICW1输出到偶地址端口MOVAL,90H;ICW2中断类型号基值INCDXOUTDX,AL;将ICW2送入奇地址端口MOVAL,00000011B;ICW4OUTDX,AL;将ICW4送入奇地址瑞口13.下段程序用于读出82C59A中哪一个寄存器的内容?moval,0bhout20h,alnopinal,20h解:OBH即00001011B写入20H偶地址端口,并且D4D3=01是OCW3的标志位,D1Do=11即RR、RIS=11时,表示CPU的下一条IN指令要读取ISR寄存器的内容。14.画出82C59A初始化编程的流程图。解:参考第9章图9-1782C59A的初始化流程图15.如果选用8片82C59A构成主-从式级联结构,最多可以实现多少级的中断管理?解:一片主片连接7片从片,共计可以实现56+1=57级中断管理。16.实模式与保护模式下,中断服务程序的入口地址分别是多少位?答:实模式与保护模式下,中断服务程序的入口地址分别是20位和32位。17.在保护模式下,如何找到中断服务程序的入口地址?答:61-- 保护模式下,由中断类型号在中断描述符表IDT中找到一个描述符,再根据该中断描述符中段选择符TI位是0或是1,从GDT或LDT中找到一个段描述符,并自动加载到CS的描述符高速缓存器中。这时,由CS的描述符高速缓存器的基地址字段(32位)确定中断处理程序所在内存的基地址,由IDT中找到的门描述符中的偏移地址(32位)确定中断服务程序的入口地址。中断服务程序的基地址+偏移地址=32位的中断服务程序的首地址。18.在LDT、GDT和IDT三种表中,哪一种表中的描述符具有代码段选择符?答:只有IDT表中的描述符具有代码段选择符。第10章(10.4习题)1.8255A的端口A和端口B分别可以工作在哪几种方式?答:端口A:可以工作在方式0、方式1及方式2共计三种方式。端口B:可以工作在方式0、方式1共计两种方式。2.设8255A的4个端口地址分别为300H、301H、302H和303H,要求用按位置位/复位控制字使PC5输出方波信号,试编程实现。解:MOVDX,303HL1:MOVAL,0AHOUTDX,ALNOPNOPMOVAL,0BHOUTDX,ALNOPNOPJMPL13.设8255A接到系统中,端口A、B、C及控制口地址分别为304H、305H、306H及307H,工作在方式0,试编程将端口B的数据输入后,从端口C输出,同时,将其取反后从端口A输出。解:MOVDX,307HMOVAL,10000010BOUTDX,AL;送控制字MOVDX,305H61-- INAL,DX;读端口BMOVDX,306HOUTDX,AL;从端口C输出  XORAL,0FFH;AL取反MOVDX,304H;从端口A输出OUTDX,AL4.对8255A的控制口写入B0H,其端口C的PC5引脚是什么作用的信号线?试分析8255A各端口的工作状态。解:当控制字为B0H时,即10110000B即8255A的端口A工作在方式1,作输入,端口C的上半部作输出,B端口工作在方式0,作输出,端口C的低4位作输出。根据上述分析可得知,当8255A的端口A工作在方式1下作输入时,PC5的引脚作状态信号IBFA,即输入缓冲器满信号。5.并行通信和串行通信各有什么特点?解:(1)并行通信就是把一个字符的各数位用几条线同时进行传输。 并行接口最基本的特点是在多根数据线上以数据字节为单位与I/O设备或被控对象传送信息。在并行接口中,除了少数场合之外,一般都要求在接口与外设之间设置并行数据线的同时,至少还要设置两根联络信号,以便互锁异步握手方式的通信。在并行接口中,每次以8位或16位为单位进行同时传送。因此,当采用并行接口与外设交换数据时,即使是只用到其中的一位,也要一次输入/输出8位或16位。并行传送的信息,不要求固定的格式。并行接口的优点是传输速率高,但由于需要多根数据线,因此不适合远距离数据传输,一般用于近距离传送的场合。(2)串行通信就是指通信的发送方和接收方之间的数据在单根通信线上逐位顺序传送。计算机和外设之间只使用一根信号线传输信息,数据在一根数据信号线上一位一位地进行传输,每一位数据都占据一个固定的时间长度。串行通信在一根线上既要传送数据,还要传送联络信号,因此,串行通信有一定的数据格式的约定,分为异步和同步数据格式。串行传输的速率需要控制,通信双方要约定相同的波特率实现通信。由于受波特率上限的约束,串行通信速度慢。信号的逻辑定义与TTL电平不相同。6.“由于按位置位/复位命令是对C口进行操作,所以可以写到C口”61-- ,这句话对吗?为什么?答:不对。这是因为按位置位/复位是一个命令,它要按命令的定义格式来处理每一位,如果把它写入端口C,就会按端口C的数据格式来处理。这两种完全不同的格式是不能互换的,所以,它只能写到命令端口中,按命令定义来处理。7.如果要检测打印机接口LPT1中控制端口通道的好坏,可以通过对D3~D0位首先写入4个0,通过读回后比较判断是否能写成功;然后写入4个1,按同样的方法进行检测,试编写自检的程序段。解:moval,00h;00h送给almovdx,37ah;控制端口的地址送给dxoutdx,al;写入控制端口inal,dx;读控制端口andal,0fhcmpal,00H;比较jneerroe1;如果不相等,转出错处理moval,0fh;0fh送给almovdx,37Ah;控制端口的地址送给dxoutdx,al;写入控制端口inal,dx;读控制端口andal,0fhcmpal,0fhjneerroe2;如果不相等,转出错处理...;控制端口是好的erroe1:;控制端口通路写全0失败...erroe2:;控制端口通路写全1失败8.利用软中断INT17H,发送字符B到1号打印机打印,用汇编语言编程实现。解:movah,0movdx,1moval,’b’int17h9.如果8255A的端口A工作在方式1输入,端口A、B、C及控制口地址分别为304H、305H、306H及307H,编写初始化程序段,要求置位INTEA。解:MOVDX,307H61-- MOVAL,10110000BOUTDX,AL;方式控制字MOVDX,307HMOVAL,00001001B;PC4置1,即INTEA置1OUTDX,AL10.如果8255A的端口B工作在方式1输出,端口A、B、C及控制口地址分别为314H、315H、316H及317H,编写初始化程序段,要求置位INTEB。解:MOVDX,317HMOVAL,10000100BOUTDX,AL;方式控制字MOVDX,317HMOVAL,00000101B;PC2置1,即INTEB置1OUTDX,AL11.如果通过PC机读入打印机的状态字,读入的最高位D7位=0,说明打印机是否忙?答:打印机忙。第11章(11.6习题)1.串行通信有什么特点?答:它是在一根线上以数据位(bit)为单位与I/O设备或通信设备之间传送信息,在这根传输线上既传输数据信息,又传输联络控制信息,数据都占据一个固定的时间长度,通信双方要约定相同的波特率才能实现通信,由于受波特率上限的约束,串行通信的速度是有限度的。串行通信具有通信电路简单,成本低,适用于远距离通信。2.什么叫异步通信方式?异步通信字符传送的帧格式如何?答:异步通信以一个字符为传输单位,用起始位表示字符的开始,用停止位表示字符结束。异步通信方式的“异步”主要体现在字符与字符之间传送没有严格的定时要求,一旦字符传送开始,收/发双方则以预先约定的传输速率,在时钟脉冲的作用下,传送该字符的每一位,即要求位与位之间有严格而精确的定时,也就是说,异步通信在传送同一个字符的每一位时是同步的。异步通信字符传输帧格式,请参考第11章图11-2所示。3.什么叫波特率因子?什么叫波特率?设波特率因子为64,波特率为1200,那么时钟频率为多少?61-- 解:发送时钟与接收时钟的频率与位传输率的比称为波特率因子,而位传输率称为波特率。发送/接收时钟频率=n×发送/接收波特率        =64×1200        =76800Hz        =76.8KHz∴时钟频率为76.8KHz4.设异步传输时,一帧信息包括1位起始位、7位信息位、1位奇偶校验位和1位停止位,如果波特率为9600bps,则每秒能传输多少个字符?解:即9600/(1+7+1+1)=9600/10=960个∴每秒能传输960个字符5.两台PC机采用异步串行通信方式传送数据。设8250接在系统中,其8个端口地址为2F8H~2FFH,若8250以2400bps波特率进行异步通信,每字符7位,1位停止位,采用奇校验,禁止所有中断,选用查询方式通信。试编写发送和接收的初始化程序段。解:MOVDX,2FBHMOVAL,80HOUTDX,AL;通信线路控制字,DLAB=1MOVDX,2F8HMOVAL,30HOUTDX,AL;送波特率低8位INCDXMOVAL,AL,00HOUTDX,AL;送波特率高8位MOVDX,2FBHMOVAL,0AHOUTDX,AL;送最终的通信线路控制字MOVDX,2FCHMOVAL,03HOUTDX,AL;送MODEN控制字MOVDX,2F9HMOVAL,00HOUTDX,AL;禁止所有中断6.61-- 16550内部有哪4个中断优先级?其中,优先级的顺序如何?每个中断优先级包括哪些中断源?答:16550内部有4个中断优先级:优先级1:接收数据出错(最高优先级)。优先级2:接收数据满或接收FIFO字符超时。优先级3:发送保持寄存器空。优先级4:MODEM的状态改变(最低优先级)。优先级的顺序及每个中断优先级所包括的中断源参见第11章,表11-6中断类型编码及其中断优先级表。7.16550的FIFO控制寄存器(FCR)各位的定义如何?参见第11章图11-17FIFO控制寄存器的格式。8.设16550工作在FIFO方式,波特率9600bps,7位数据位,1位停止位,1位偶校验,中断触发值是4字节,使用中断方式传输,分配给寄存器的地址范围是3F8H~3FFH,编写初始化程序。解:MOVDX,3FBHMOVAL,80HOUTDX,AL;通信线路控制字,DLAB=1MOVDX,3F8HMOVAL,0CHOUTDX,AL;送波特率低8位INCDXMOVAL,AL,00HOUTDX,AL;送波特率高8位MOVDX,3FBHMOVAL,00011010BOUTDX,AL;送最终的通信线路控制字MOVDX,3FAH;FIFO控制字地址MOVAL,01000111BOUTDX,AL;允许FIFO,清除FIFO,中断触发值=4MOVDX,3FCHMOVAL,0BH;OUT2#、DTR#、RTS#信号有效OUTDX,AL;送MODEN控制字MOVDX,3F9HMOVAL,0FHOUTDX,AL;允许所有中断61-- 9.16550波特率的设置有什么特点?答:与8250波特率除数锁存器的内容相同。当基准时钟频率为1.8432MHz时,8250工作的波特率是50~9600bps。而16550的波特率是50~115.2Kbps,提高了传输的速率,部分扩充的波特率与除数对应的关系见表11-5所示,主要特点是波特率除数锁存器的值可以是1。10.在RS-232C串行通信中,哪一种设备是数据终端设备(DTE)?哪一种设备是数据通信设备(DCE)?答:具有RS-232C串行通信接口的计算机是数据终端设备,MODEM或具有MODEM功能的其他通信设备是数据通信设备(DCE)。11.在RS-232C串行通信中,零MODEM调制的连接电路如何?答:零MODEM调制的连接电路:直接将收、发双方的发送端与接收端交叉相连接,而两者的地线连接在一起。12.RS-232标准规定逻辑1和逻辑0的电压范围分别是多少?答:逻辑1的电压:-3V~-15V逻辑0的电压:+3V~+15V13.在RS-232C串行通信接口中,为什么要实现RS-232C电平与TTL电平之间的转换?答:串行通信接口芯片工作与产生的信号都是TTL电平信号,而国际上规定RS-232C串行通信接口以RS-232C电平工作,这是因为,RS-232C电平抗干扰容限大得多,适应于计算机外部数据的传输,传输距离一般可以达15米左右。为了解决两者电平匹配的问题,所以要实现RS-232C电平与TTL电平之间的转换。14.USB主要有哪些性能特点?答:1)支持即插即用。2)扩充外设能力强,可支持多达127个外部设备。3)传输速度快,而且支持多种操作速度。4)连接简单快捷。5)通用连接器,USB用一种通用的连接器可以连接多种类型的外设。6)无须外接电源。61-- 15.USB总线支持哪几种传输速度?答:USB支持低速1.5Mb/s、全速12Mb/s、高达480Mb/s,以及USB2.0以上版本的更高速度。16.一个USB主控机最多可以连接多少个外部设备?答:一个USB主控机可以连接多达127个外设。17.USB有哪4种基本的传输类型?答:(1)批传输(2)中断传输(3)等时传输(4)控制传输18.USB有哪几种类型的包?答:分为四种类型的包:标记包(Token)、数据包(Data)、握手包(Handshake)及特殊包(Special)。19.在USB协议中,根据不同类型的设备设置了相应的描述符,主要包括哪几种描述符?答:在USB协议中,根据不同类型的设备设置了相应的描述符,包括三类描述符:①USB标准设备的描述符。②USB集线器的描述符。③HID(HumenInterfaceDevices)设备的描述符,即人机接口设备描述符。20.标记包的格式如何?参见第11章图11-30标记包格式。21.数据包的格式如何?参见第11章图11-31数据包格式。22.USB系统的拓扑结构如何?参见第11章图11-28USB系统拓扑结构示意图。61-- 第12章(12.5习题)1.说明82C54方式2与方式3的工作特点。答:方式2与方式3都能自动产生连续不断的脉冲信号输出,不过,方式2产生的是脉冲波,方式3产生的是对称的方波输出。方式2对应外来脉冲每次减1,方式3对应外来脉冲一般是减2操作,或减3操作。共同点是减计数器减至0时,初值寄存器重新将初值装入减计数器中。2.说明82C54方式1与方式5的工作特点。答:方式1与方式5都是由GATE信号触发后才开始作减计数,但两者有区别。(1)写入方式控制字后,OUT输出为高电平。写入计数初值之后,计数器并不立即开始计数,而要等到GATE上升沿后的下一个CLK输入脉冲的下降沿,OUT输出变低,计数才开始。结束时,OUT输出变高,从而产生一个宽度为3个CLK周期的负脉冲。(2)写入控制字后,输出OUT即为高电平。写入计数初值后,计数器并不立即开始计数,而是由门控脉冲的上升沿触发。计数结束(计数器减到0),输出一个持续时间为一个CLK时钟周期的负脉冲,然后输出恢复为高电平。直到GATE信号再次触发。3.82C54在写入计数初值后,二进制计数和十进制计数有无区别?若有,有何区别?答:有区别。写入计数初值后,按照二进制做减计数,不够减时,向高位借1个总是当作2个,而做十进制减计数时,把计数初值当作BCD数,如果个位不够减时,向十位借一个,相当10个数,同样,十位向百位借一个数,也当作10个数处理。4.82C54初始化编程包含哪两项内容?答:送控制字,送计数初值。5.82C54每个计数通道与外设接口有哪些信号线?每个信号的作用是什么?答:(1)CLK,时钟脉冲输入端,3个计数器分别有一个时钟脉冲输入端,分别为CLK0、CLK1、CLK2。用于输入定时脉冲或计数脉冲信号。(2)GATE,门控输入端,3个计数器每一个都有一个门控输入端,分别为GATE0、GATE1、GATE2。门控输入端用于外部控制计数器的启动计数和停止计数的操作。(3)OUT,计数输出端。3个计数器每一个都有一个计数到输出端,分别为OUT0、OUT1、OUT2。61-- 6.试按如下要求分别编写82C54的初始化程序:己知82C54的计数器0、1、2和控制字I/O地址依次为304H、305H、306H和307H。(1)使计数器1工作在方式0,仅用低8位作二进制计数,计数初值为128;(2)使计数器0工作在方式1,按BCD码计数,计数值为3000;(3)使计数器2工作在方式2,按二进制计数,计数值为02F0H。解:(1)编程如下:MOVDX,307HMOVAL,01010000BOUTDX,ALMOVDX,305HMOVAL,128OUTDX,AL(2)编程如下:MOVDX,307HMOVAL,00110011BOUTDX,ALMOVAX,3000HMOVDX,304HOUTDX,ALMOVAL,AHOUTDX,AL(3)编程如下:MOVDX,307HMOVAL,10110100BOUTDX,ALMOVAX,02F0HMOVDX,306HOUTDX,ALMOVAL,AHOUTDX,AL7.设82C54的计数器0、1、2和控制字I/O地址依次为300H、301H、302H和303H。设计数器0使用低8位计数,初值为15,选用方式3,二进制计数,编写初始化程序,并要求:用82C54的锁存命令,锁存计数器0的计数值及状态信息,并读回8位的计数值及状态信息。解:MOVDX,303H;初始化编程MOVAL,00010110B61-- OUTDX,ALMOVDX,300HMOVAL,15OUTDX,AL;------------------------MOVDX,303HMOVAL,11000010B;仅锁存0号计数器;------------------------MOVDX,300HINAL,DX;先读取状态信息MOVAH,AL;保存状态信息INAL,DX;后读取8位的计数值。8.设82C54计数器0、1、2和控制字的I/O地址依次为F8H、F9H、FAH、FBH,说明如下程序的作用。MOVAL,33HOUT0FBH,ALMOVAL,80HOUT0F8H,ALMOVAL,50H0UT0F8H,AL解:33H即00110011B送入控制地址FBH,表示计数器0采用16位计数,工作方式1,数据格式为BCD,计数初值为:5080H。9.82371AB内部由哪16个功能部件组成?答:82371AB内部由16个功能部件组成:PCI总线接口;ISA总线接口;初级IDE接口;二级ID接口;中断控制接口;定时器/计数器;实时时钟RTC;DMA控制器;通用串行总线USB;系统电源管理接口;X-Bus支持逻辑;I/OAPIC支持逻辑;61-- 系统管理总线SMBus;系统复位电路;通用目的输入和输出接口;测试接口。10.82371AB内部IDE接口可以外接几个IDE设备?答:可以提供4个IDE设备接口。11.82371AB内部兼容了几个82C54定时器/计数器?其中每个计数器的作用如何?答:只兼容了一个定时器/计数器82C54,也称为可编程的时间间隔定时器82C54。它包含3个独立的16位计数器,每个计数器的输出所提供的系统功能:计数器0:计数器0的计数输出端连接到主82C59的IRQ0,作为系统定时中断。为日历时间、软盘暂停等提供系统定时间隔。计数器1:计数器1定时产生动态存储器的刷新请求信号。计数器2:通过对计数器2的编程,定时产生对喇叭音调的控制。12.82371AB内部兼容了几个82C59?可以连接几个外部中断源?答:两个中断控制器82C59提供15级中断。第13章(13.4习题)1.简述总线标准和接口标准的一般特点,二者有何不同?参考第13章13.1.12.目前微机中常用的典型总线有哪几种?它们各有什么特点?参考第13章13.23.评价总线的性能一般有哪几种指标?答:(1)总线宽度(2)总线频率(3)传输速率4.设某总线频率为66MHz,分别计算总线宽度为32位和64位时总线的传输速率。解:传输速率=总线宽度/8×总线频率(1)总线频率为66MHz,总线宽度32位,则:61-- 传输速率=32b/8×66MHz=264MB/s。(2)总线频率为66MHz,总线宽度64位,则:传输速率=64b/8×66MHz=528MB/s。5.PCI局部总线处于总线层次的什么位置,请画出总线结构图。参考第13章图13-1PⅡ微机系统的总线层次结构6.试比较PCI总线和AGP总线的特点。参考第13章13.2.2和13.2.2节7.AGP有几种工作模式,每种工作模式下的工作频率是多少?答:表13-3AGP的工作模式版本模式工作频率数据传输速率1.0,2.01×66.6MHz266MB/s1.0,2.02×133MHz533MB/s2.0,3.04×266MHz1066MB/s3.08×533MHz2133MB/s8.解释多核技术。参考第13章13.3节9.IntelCore微结构和NetBurst微结构在高速缓存方面有什么不同?参考第13章13.3节10.IntelX58和IntelX48芯片组之间有哪些差异?参考第13章13.3节第14章(14.6习题)14.1模/数转换通道由哪几部分组成?参考第14章图14-1含有A/D与D/A转换的监控系统。14.2简述模拟多路转换开关CD4051的工作原理。参考第14章14.2.1模/数转换通道的组成。14.3采样保持器的作用是什么?答:采样保持器的作用是:在A/D转换器进行采样期间,保持被转换输入信号的幅度不变。61-- 由于A/D转换器完成一次转换是需要时间的。不同A/D转换芯片,其转换时间各异,对于连续变化较快的模拟信号如果不采取采样保持措施,将会引起转换误差。14.4解释分辨率与精度的区别。参考第14章14.3.1模/数转换器的主要技术指标。14.5设10位A/D转换器输入模拟电压的范围是0~5V,试问分辨率是多少?能分辨模拟电压的值是多少?若采用12位A/D转换器,能分辨模拟电压的值又是多少?解:分辨率分别是10位和12位。(1)10位A/D转换器能分辨模拟电压的值:5000mV/1023=4.88mV.(2)12位A/D转换器能分辨模拟电压的值:5000mV/4095=1.22mV.14.6AD574接成单极性模拟输入时,从10Vin和20Vin输入模拟电压的最小分辨电压分别是多少?解:(1)从10Vin输入模拟电压的最小分辨电压值:10000mV/4095=2.44mV.(2)从20Vin输入模拟电压的最小分辨电压值:20000mV/4095=4.88mV.14.7假设图14-8中译码器输出的地址范围为300H~301H,根据此图用汇编语言编写PC机实现A/D转换的程序段。解:采集程序如下:movdx,300H;偶地址outdx,al;假输出,启动作12位A/D转换calldelay;调用延时100μs(>35μs)的子程序(忽略)movdx,300H;偶地址inal,dx;读高8位movah,almovdx,301H;奇地址inal,dx;从数据总线D7~D4位读入低4位14.8DAC0832内部采用2级寄存器锁存,对转换的二进制数有何特殊用途?答:可以使用多个DAC0832同步实现数/模转换。14.9用图14-12所示的D/A转换电路产生锯齿波,试编写一段程序。解:编程如下:61-- MOV DX,200H;设端口地址为200H    MOV AL、00H    OUT DX、ALABC:CALL DELAY;调用延时子程序INC ALOUT DX、ALJMP ABC14.10如果模/数转换芯片转换结果的输出端不带三态输出结构,该芯片的输出端与CPU的数据线连接时应该如何处置?答:在芯片的输出端与CPU的数据线之间增加一个三态缓冲器,且用该芯片的端口读信号去控制三态缓冲器的输出允许端。61--'