• 1.30 MB
  • 2022-04-22 11:30:15 发布

《汇编语言 微机原理及接口技术》(第2版)课后习题答案.doc

  • 25页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'第1章进制及码元1.进制转换129=81H=10000001B=201Q298=12AH=100101010B=452Q1000=3E8H=1111101000B=1750Q5DH=1011101B=135Q=93D3E8H=1111101000B=1750Q=1000D357Q=11101111B=0EFH=239D3.数据表示范围:一字节的无符号数表示范围为0~255,有符号数(补码)表示范围为-l28—+127。一个字的无符号数表示范围为0~65535,有符号数(补码)表示范围为—32768~+32767。N位二进制数的无符号数表示范围为0~(2N-1),有符号数(补码)表示范围为-2N-1~(2N-1-1).4.35H代表的ASCII字符为"5",代表十六进制数时等价的十进制值为53,代表压缩8421BCD码等价的十进制值为35,代表非压缩8421BCD码等价的十进制值为5。5.FFH代表无符号数时等价的十进制值为255,代表补码有符号数时等价的十进制值为一1,代表反码有符号数时等价的十进制值为一0,代表原码有符号数时等价的十进制值为一l27。6.--20的8位二进制补码为ECH,原码为94H,反码为EBH。158的16位二进制补码为009EH,原码为009EH,反码为009EH。第2章微机硬件基础1.计算机系统硬件的五大功能部件及其主要功能?答:硬件系统按功能模块分为运算器、控制器、存储器、输入设备、输出设备。运算器主要完成算术运算、逻辑运算及移位运算,其中主要包括算术逻辑运算单元ArithmeticLogicUnit,ALU)和暂存数据(原始、中间、结果)的寄存器(Register,R)。控制器实现对计算机部件的协调调度完成指令的分析执行,其中主要有程序计数器ProgramCounter,PC)或叫指令指针(InstructionPointer,IP)、指令寄存器(Instructionregister,IR)、指令译码器(InstructionDecoder,ID)、微操作命令发生器、时序发生器等。存储器用来记忆程序与数据,它分为内存和外存,内存主要用于存放正在或正待运行的程序和数据,外存用于存放暂时不运行的程序和数据。输入设备是实现将外界的信息输入计算机内部的部件,主要有键盘、鼠标等。输出设备是实现将计算机内部的信息输出的部件,主要有显示器、打印机等。3.请简述计算机系统的构成,并说明软硬件之间的关系。答:计算机系统由硬件系统和软件系统构成,硬件系统包括运算器、存储器、控制器、输入/输出设备.软件系统包括系统软件和应用软件.硬件是我们可以看得见摸得着的物理设备,软件是运行计算机硬件上的程序和数据的集合.他们之间的关系:硬件是基础,软件是灵魂;硬件和软件相辅相成缺一不可;硬件和软件互相促进发展.5.微机的主要性能指标有哪些?答:(1)字长。字长是指CPU可以同时运算或传输的二进制的数据位数。字长越长,速度越快,精度越高,表示范围越大。(2)速度。在微机的表示速度用的最多的是CPU的主频,单位为Ml-lz或GHz24 ,但实质上并不一定是主频越高速度越快,如AMD提出的PR表示法声称其l.3GHz的速龙XP可以达到l.6GHz的P4的速度。表示速度还有另外两个单位:次,秒(每秒运算次数)、MIPS(百万条指令每秒)。(3)容量。内存容量从原来的KB已上升到MB,2002年上半年以256MB为主流配置。硬盘容量从原来的MB已上升到GB,目前主要配置40GBl00GB的硬盘:(4)外设配置。例如显示器、光驱、声卡、音箱、打印机等。(5)软件配置。操作系统及其他系统软件和应用软件。7.8086/8088CPU为什么要分为BIU和EU两大模块?答:为了使取指和分析、执行指令可并行处理,提高CPU的执行效率。8086/88CPU有两大模块总线接口单元BIU和执行单元EU组成。参见教材《汇编语言、微机原理及接口技术(第2版)》2.3.1节“8086/8088CPU的内部结构”。8.简述8086/8088CPU的两大模块BIU和EU的主要功能及组成。答:如图2.2所示。9.简述8086/8088CPU的14个寄存器的英文名、中文名及主要作用。答:AX(Accumulator)(AH、AL)累加器,它是汇编编程中最常用的一个寄存器,主要用于乘除运算、BCD运算、换码、I/O操作、串操作、中断调用等。BX(Base)(BH、BL)基址寄存器,主要用于存放地址、基址(默认相对于DS段)等。CX(Counter)(CH、CL)计数器,主要用于循环计数、串操作计数、移位计数(CL)等。DX(Data)(DH、DL)数据寄存器,主要用于l6位乘除、问接I/O、中断调用等。BP(BasePointer)基址指针,主要用于存放地址、基址(默认相对于SS段)等。SP(StackPointer)堆栈指针(栈顶指针),主要用于存放栈顶地址。SI(SourceIndex)源变址寄存器,用于存放地址、变址、串操作源变址。DI(DestinationIndex)目的变址寄存器,用于存放地址、变址、串操作目的变址。CS(CodeSegment)代码段寄存器(代码段),用于存放正在或正待执行的程序段的起始地址的高l6位二进制数据,即程序段的段地址。,DS(DataSegment)数据段寄存器(数据段),用于存放正在或正待处理的一般数据段的起始地址的高l6位二进制数据,即一般数据段的段地址。ES(ExtraSegment)附加数据段寄存器(附加段),用于存放正在或正待处理的附加数据段的起始地址的高l6位二进制数据,即附加数据段的段地址。SS(StackSegment)堆栈数据段寄存器(堆栈段),用于存放正在或正待处理的堆栈数据段的起始地址的高l6位二进制数据,即堆栈数据段的段地址。IP(Instructionpointer)指令指针,它的内容始终是下一条待执行指令的起始偏移地址,与CS一起形成下一条待执行指令的起始物理地址。CS:IP的作用是控制程序的执行流程。24 IP一般会自动加l(逻辑加1、实际随指令长度变化)移向下一条指令实现顺序执行;若通过指令修改CS或IP的值,则可实现程序的转移执行。PSW(ProgramStatusword)程序状态字,它其中有三个控制标志(IF、DF、TF)和6个状态标志(SF、PF、ZF、OF、CF、AF)。控制标志是用于控制CPU某方面操作的标志,状态标志是部分指令执行结果的标志。11.请说明8086/8088CPU的标志位的英文名、中文名及通用填充方法。答:IF(InterruptEnableFlag)中断允许标志,用于控制CPU能否响应可屏蔽中断请求,IF=1能够响应,IF=0不能响应。DF(DirectionFlag)方向标志,用于指示串操作时源串的源变址和目的串的目的变址变化方向,DF----1向减的方向变化,DF=0向加的方向变化。TF(TrapFlag)陷阱标志(单步中断标志),TF=1程序执行当前指令后暂停,TF=0程序执行当前指令后不会暂停。SF(SignFlag)符号标志,指令执行结果的最高二进制位是0还是l,为0,则SF=0,代表正数;为l,则SF=1,代表负数。我们一般是用十六进制数表示,则可以根据十六进制的最高位是落在O~7还是落在8~F之间,若落在0~7之间则SF=0.否则SF=1。PF(ParityChECkFlag)奇偶校验标志,指令执行结果的低8位中1的个数是奇数个还是偶数个,若为奇数个则PF=0,若为偶数个则PF=1。ZF(ZeroFlag)零标志,指令执行结果是不是为0,若为0则ZF=1,否则ZF=0。OF(OverflowFlag)有符号数的溢出标志,指令执行结果是否超出有符号数的表示范围,若超过则0F=1,否则OF=0。我们可以通过判断是否出现以下四种情况之一:正加正得负,正减负得负,负加负得正,负减正得正。若出现则0F=1.否则OF=0.CF(CarryFlag)进位/借位标志无符号数的溢出标志),指令执行结果的最高位是否有向更高位进位或借位,若有则CF=1,同时也代表无符号数溢出;若无则CF=0,也代表无符号数未溢出。AF(AuxiliaryCarryFlag)辅助进位/借位标志,低4位二进制是不是有向高位进位或借位,若有则AF=1,否则AF=0,其主要用于BCD修正运算。12.内存为什么要分段组织?答:(1)8086/8088CPU中的寄存器只有16位,如果采用它们直接寻址,则寻址能力势必限制在64KB范围内,而采用分段组织可以较好地实现扩展CPU的寻址能力。每段的大小可达64KB,不同段的组合则可寻址更大的范围。(2)使程序与数据相对独立,不同存取方式的数据也相对独立。程序:存放于代码段CS中堆栈方式:存放于堆栈段SS中数据:随机方式:存放于数据段DS及附加段ES中(3)便于程序和数据的动态装配,从一个地方挪到另外一个地方只要更改一下段寄存器的值即可,段内偏移可以不用改变。但内存地址采用分段组织增加地址计算的复杂度,降低了CPU的执行效率。14.设DS=26FCH,BX=108H,SI=9A8H,试求出使DS:BX与ES:Sl指向同一物理地址的ES值。答:即DS:BX=ES:SIDS:BX=DS×l6+BX=26FCH×16+108H=270C8HES:SI=ES×16+SI=ES×16+9A8HES=(270C8H一9A8H)÷l6=2672H24 15.接口、端口、端口地址之间的对应关系如何?答:一个计算机系统内有很多接口,一个接口内一般有多个端口,一个端口可以有多个端口地址与其对应(这叫重叠地址),一个端口地址可以对应多个端口(但需要继续区分才能访问,如读写顺序、读写信号、数据位、索引区分)。所以通过端口传输信息首先需要区分端口,区分端口可通过端口地址不同来区分。20.某程序在当前数据段中存放有两个数据l234H和5678H,若已知DS=2010H、偏移量分别为3400H和4501H,请写出这两个数据在存储器中的物理地址。答:物理地址l=DS×16+EA=2010H×16+3400H=23500H23500H单元存34H,23501H单元存12H物理地址2=DS×16+EA=2010H×16+4501H=24601H24601H单元存78H,24602H单元存56H第3章寻址方式及指令系统1.指令是CPU可以理解并执行的操作命令,指令由操作码和操作数两部分组成,指令有两个级别,即机器级和汇编级。3.指令主要有哪些分类方式及其主要类别是什么?答:指令分类有不同的方式。按操作数的个数将指令分为零地址指令(无操作数)、一地址指令(只有一个操作数)、二地址指令(有两个操作数)、多地址指令(多于两个操作数);按指令级别分为机器指令和汇编指令:按是否转移分为转移指令和顺序指令;按功能分为七大类:传送类、算术运算类、位操作类、I/O类、串操作类、CPU控制类、转移类;按指令长度(即指令占用的字节数)分为l字节指令、2字节指令等,8086/8088指令长度是不同的,叫变字长,不同的指令有不同的指令长度,从1~6字节均有;按指令执行期间取操作数是否需要与总线打交道分为内部指令(不需)和外部指令(需要),类似功能的指令内部指令比外部指令执行速度快,所以在编程时尽量采用内部指令即多用寄存器优化程序。4.操作数的寻址方式有哪些?并举例说明其主要特点。答:操作数寻址方式主要有立即寻址方式、寄存器寻地址、存储器寻址方式、端口寻址方式4类.(1)立即寻址方式:操作对象是这个操作数本身,MOVAL、5(2)寄存器寻地址:操作对象是寄存器中的内容MOVAX、BX(3)存储器寻址方式:操作对象是内存地址所对应的存储单元中的内容,MOVAXI2000HJ(4)端口寻址方式:操作数是指明端口的地址、端口地址所对应的端口中的内容是操作对象INAX,46A,4直接寻址.6.设CS=1000H,DS=2000H,ES=3000H,SS=4000H,IP=100H,SP=200H,BX=300H,BP=400H,SI=500H,则①下一条待执行指令的物理地址为多少?②当前栈顶的物理地址为多少?③[BX]代表的存储单元的物理地址为多少?④[BP]代表的存储单元的物理地址为多少?⑤ES:[BX+SI]代表的存储单元的物理地址为多少?答:①下一条待执行指令的物理地址=CS×16+IP=1000H×16+IOOH=10100H。②当前栈顶的物理地址=SS×16+SP=4000H×16+200H=40200H。③[BX]代表的存储单元物理地址=DS×16+BX=2000HXl6+300H=20300H。④[BP]代表的存储单元物理地址=SSXl6+BP=4000H×16+400H-----40400H。⑤ES:[BX+SI]代表的存储单元物理地址=ES×16+BX+SI=3000H×16+300H+500H=30800H24 7.试根据以下要求,分别写出相应的汇编语言指令。(1)以寄存器BX和Dl作为基址变址寻址方式把存储器中的一个字送到DX寄存器。答:MOVDX,[BX+DI](2)以寄存器BX和偏移量VALUE作为寄存器相对寻址方式把存储器中的一个字和AX相加,把结果送回到那个字单元。答:ADDVALUE[BX],AX(3)将1字节的立即数086H与以Sl作为寄存器间接寻址方式的字节单元相比较。答:CMPBYTEPTR[SI],086H(4)将BH的高4位与低4位互换。答:MOVCL,4RORBH,CL;或者ROLBH,CL(5)测试BX的第3、7、9、12、13位是否同时为0。答:TESTBX,3288H;0011001010001000B(6)将存放了0~9数值的DL寄存器中的内容转化为相应的~0~~9的字符。答:ADDDL,30H;或者ORDL,30H(7)将存放了‘A’~‘F’字符的AL寄存器中的内容转化为相应的数值。答:SUBAL,37H10.指出下列指令错误的原因。答:(1)MOVCL,300;300超过字节数据表示范围(2)MOVCS,AX;CS不能作为目的操作数(3)MOVBX,DL;数据类型不匹配(4)MOVES,1000H:立即数不能送给段寄存器(5)INC[BX];数据类型不明确’(6)ADDAX,DS:段寄存器不能参加运算(7)TESTBX,[CX];存储器间接寻址只能使用BX、Sl、Dl、BP四个之一(8)SUB[BX],[BP+SI];加减两个操作数不能同时为存储操作数(9)JC[SI];条件转移只有短转移寻址方式(10)SHLBX;少给一个表明移位次数的操作数,l或CL12.分别说明下列各组指令中的两条指令的区别。答:(1)MOVAX,TABLELEAAX,TABLE假设TABLE为字变量名,则:左为将TABLE单元的内容送AX,右为将TABLE单元的偏移地址送AX假设TABLE为字节变量名,则:左为错误指令,右为将TABLE单元的偏移地址送AX假设TABLE为常量名,则:左为将TABLE的内容送AX,右为错误指令(2)ANDBL,0FHORBL,0FH左为将BL的高4位清0,右为将BL的低4位置1(3)JMPSHORTLlJMPNEARPTRLl左为短转移,2字节的指令,转移范围为一l28~+127右为近转移,l字节的指令,转移范围为--32768+32767(4)MOVAX,BXMOVAX,[BX]左为将BX的值送AX右为将BX的值作为相对DS段的内存单元偏移地址,取出字单元值送AX24 (5)SUBDX,CXCMPDX,CX左为减法,并将DX-CX的值存入DX中右为比较,做减法,但不会将DX-CX的值存入DX中(6)MOV[BP][SI],CLMOVDS:[BPIESI],CL左边第~操作数默认为相对于SS段偏移的存储器操作数右边第一操作数采用段超越,指定为相对于DS段偏移的存储器操作数13.写出判断AL为正为负的程序段(请至少用三种方法)。答:方法一:CMPAL,80H;而后用JAE代表负数转移,JB代表正数转移方法二:CMPAL,00H;而后用JGE代表正数转移,JL代表负数转移方法三:TESTAL,80H;而后用JNZ代表负数转移,JZ代表正数转移方法四:ORAL,AL;而后用JNS代表负数转移,JS代表正数转移方法五:ANDAL,AL;而后用JNS代表负数转移,JS代表正数转移方法六:SUBAL,00H;而后用JGE代表正数转移,JL代表负数转移方法七:TESTAL,80H:而后用JNS代表正数转移,JS代表负数转移14.思考题:试比较以下几条指令的功能。答:MOVBX,Sl;将SI的值送给BXMOVBX,[SIl;将SI的值作为偏移地址找到对应的内存单元中的值送给BXMOVBX,OFFSET[SI];将Sl的值作为偏移地址找到对应内存单元的偏移地址送给BX,即SI的值送给BXLEABX,[Sl];将Sl的值作为偏移地址找到对应内存单元的偏移地址送给BX,即Sl的值送给BXLDSBX,[SI];将Sl值作为偏移地址找到对应内存单元中的第一个字值送给BX,第二个字值送DSLESBX,[Sl]:将SI值作为偏移地址找到对应内存单元中的第一个字值送给BX,第二个字值送ES15.设B、D为字节变量,A、C为字变量,且A除B可能会溢出,试编写无符号数或有符号数A/B商送C,余数送D。答:可能会溢出则要考虑扩展数据表示能力。;无符号数除法.;有符号数除法MOVAL,BMOVAL,BXORAH,AHCBWMOVBX,AXMOVBX,AXMOVAX,AMOVAX,AXORDX,DX;无符号扩展CWD;有符号扩展DIVBXIDIVBXMOVC,AXMOVC,AXMOVD,DLMOVD,DL16.编写程序段实现DX、AX中32位二进制数乘l0(设不溢出)。答:;X*10=X*8+X*2,用移位指令实现SHLAX,1RCLDX,1:DX,AX=(DX,AX)*2MOVBX,DX24 MOVBP,AX;BX,BP转存2倍值SHLAX,lRCLDX,l;再乘2SHLAX,lRCLDX,1:再乘2ADDAX,BPADCDX,BX;8倍+2倍=10倍19.程序理解执行。(1)MOVAH,一l:AH=FFHMOVAL,180:AL=B4HMOVBL,15:BL=0FHIDⅣBL;AX/BL即:-76/15,商-5,余数-l程序段执行后,AX=0FFFBH。说明:关键是要知道谁除以谁,特别注意是有符号除还是无符号除。(2)MOVAL,0CH:AL=0CHORAL,AL;AL=0CH,CF=0SBBAL,0F0H:AL=lCHNEGAL:AL=E4H,CF=1ADCAL,0D4H:AL=B9HTESTAL,35H:AL=B9H,CF=0程序段执行后,CF=0,AL=B9H。说明:第(1)、(2)小题只要理解每条指令功能及对标志位的影响,逐步进行即可完成。(3)MOVAL,08HMOVAH,一l:AX=FF08HMOVBX,0F8H:BX=00F8HCMPAX,BX程序段执行后SF⊕OF=1,CF=0。(4)MOVAX,’中’;AX的二进制高位为1,即落在负数范围MOVBX,’AB’;BX的二进制高位为0,即落在正数范围CMPAX,BX程序段执行后SF⊕OF=1,CF=0。说明:第(3)(4)小题实质是考查有符号数和无符号数大小的比较。(5)MOVAX,7587:AX=3538HANDAX,0FOFH:AX=0508HAAD:AX=58=003AH程序段执行后AX=003AH,即58。程序段的功能是:将两位非压缩BCD码转化为其对应的十六进制数。说明:可用AAD指令实现将十位和个位数值拼装还原为0~99的十六进制数。反之将0~99的数值分离成十位和个位可用AAM指令实现,教材《汇编语言、微机原理及接口技术(第2版)》例5.10和例5.13中均有应用。20.程序语句填空。(1)下列是完成1~20之间的奇数累加和存于AL中的程序段:XORAL.ALMOVCX,10;循环次数24 MOVBL,1AGAIN:ADDAL.BLADDBL,2;步长,参数改变LOOPAGAIN(2)下列是在串长为N的串STR中查找是否有‘M’字符的程序段:MOVDl,SEGSTRMOVES.DILEADl.STRCLDMOVCX.NMOVAL.7M7REPNESCASB;串查找核心指令JZFOUND;转到找到分支(3)下列是完成1位十六进制数X显示的程序段:MOVDL.XANDDL.0FHADDDL,30H:或ORDL,30HCMPAL.’9’JBENEXTADDDL,7NEXT:MOVAH,02HINT21H(4)将DH中的二进制数看成压缩BCD码并送出显示的程序段如下:MOVDL,DHMOVCL,4;获取十位SHRDL,CLADDDL,30HMOVAH,2;2号功能调用显示十位INT21HMOVDL,DHANDDL,0FH;获取个位ORDL,30HINT21H22.假定AX和BX中的内容为带符号数,CX和DX的内容为无符号数,请用比较指令和转移指令实现以下条件转移:(1)若DX的内容超过CX的内容,则转到Ll。答:CMPDX,CXJALl(2)若BX的内容大于AX的内容,则转到L2。答:CMPBX,AXJGL2(3)若DX的内容未超过CX的内容,则转到L3。答:CMPDX,CXJNAL324 (4)判断BX与AX相比较是否产生溢出,若溢出则转到L4。答:CMPBX,AXJOL4(5)若BX的内容小于等于AX的内容,则转到L5。答:CMPBX,AXJLEL5(6)若DX的内容小于等于CX的内容,则转到L6。答:CMPDX,CXJBEL623.假设BX=0A69H,VALUE变量中存放的内容为1927H,写出下列各条指令执行后的BX的寄存器中和CF、ZF、SF与OF的值:(1)XORBX,VALUE(2)ANDBX,VALUE(3)ORBX,VALUE(4)SUBBX,VALUE(5)CMPBX,VALUE(6)TESTBX,VALUE答:BXCFZFSFOF(1)134EH0000(2)0821H0000(3)186FH0000(4)Fl42H1010(5)0A69H1010(6)0A69H0000第4章MASM汇编语言1.名词解释指令伪指令宏指令汇编语句汇编语言汇编源程序汇编程序汇编连接程序连接答:指令:是CPU可以理解并执行的操作命令。伪指令:是用于为汇编程序编译时理解程序框架、分配空间(数据定义)等的汇编语句。宏指令:实质上就是有多条指令打包而成的一组指令的集合。汇编指令:一行只能写一条汇编语句,一条汇编只能写在一行内。汇编语言:语句中的表达式是在汇编过程中完成计算的,即翻译之后的机器语言程序中是不包含表达式的。汇编源程序:主要有四步,录入源程序、汇编、连接、运行、调试运行。(不准确)汇编程序:编写汇编程序实质上就是在记住程序框架的基础上填写两空,即数据定义部分和功能程序部分。汇编:格式:MASM[[盘符][路径]程序基本名[.ASM]]建议程序基本名不要省略.连接程序:??????????????连接:LINK[[盘符][路径]程序基本名[.OBJ]]建议程序基本名不要省略.4.请计算下列表达式的值。答(1)3+6/3*4mod3;注意运算优先级,值为5(2)(MGTN)ANDNORMLENANDM;M,N中的较小值24 (3)5GT3(作为8位和16位二进制数各为多少);0FFH和0FFFFH(4)20AND77(作为8位和16位二进制数各为多少);04H和0004H(5)5AND-1:5(6)50R-1;-l(7)NOT5(作为8位和16位二进制数各为多少);0FAH和0FFFAH,均为-6(8)设有定义如下:ADB2,4,6,8BDW2,4,6,8CDW5DUP(2,4,6,8)则TYPEA、TYPEB和TYPEC分别为多少?;1,2,2LENGTHA、LENGTHB和LENGTHC分别为多少?;1,1,5SIZEA、SIZEB和SIZEC分别为多少?;1,2,107.设有如下定义:ADDl2345678H,1,‘B’,?将改成内存中存放次序相同的DB及DW的等价定义语句。答:ADB78H,56H,34H,12H,1,3DUP(0),‘B’,3DUP(0),4DUP(?)ADW5678H,1234H,1,0,‘B’,0,2DUP(?)说明:最好画出内存分配示意图再做这类题目。8.设有如下定义:ADB1101B,34,56Q,78H,4DUP(?),"ABCD’请将改成内存中存放次序相同的DW及DD的等价定义语句。答:ADW220DH,782EH,2DUP(?),4241H,4443HBDD,782E220DH,?,44434241H10.设置一个数据段DATA,其中连续存放6个变量,用段定义语句和数据定义语句写出数据段:(1)A1为字符串变量:‘Example’。(2)A2为数值字节变量:l00,127,-l,80H,35Q,1101110B。(3)A3为4个0的字变量。(4)A4为A3的元素个数。(5)A5为A3占用的字节数。(6)A6为Al,A2,A3,A4,A5占用的总字节数。答:DATASEGMENTA1DB‘Example’A2DBl00,127,一l,80H,35Q,ll0111013A3DW4DUP(0)A4DWLENGTHA3A5DWA4一A3;或SIZEA3A6DW$一AlDATAENDS24 第5章汇编程序设计3.编程实现两个字节变量相乘送字变量的程序。答:DATASEGMENTADBl2HBDB34HCDW?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAL,AMULBMOVC,AX:C=A×BMOVAH,4CH;返回DOSINT21HCODEENDSENDSTART4.编程实现从键盘接收两个l位十进制数并计算和显示它们的积。(如输入7和9则显示为:7*9=63)答:CODESEGMENTASSUMECS:CODEAGAINl:MOVAH,1;录入第一位INT2lHCMPAL,"0"JBAGAINlCMPAL,"9"JAAGAINlMOVDH,ALSUBDH,30HMOVDL,"*’;显示”*”MOVAH,2INT21HAGAIN2:M0VAH,1;录入第二位INT21HCMPAL,‘0’JBAGAIN2CMPAL,‘9’JAAGAIN2SUBAL,30HMULDH;相乘24 AAM;分离十位和个位MOVDH,AL;暂存个位MOVDL,AH:显示十位ADDDL,30HMOVAH,2INT21HMOVDL,DH;显示个位ADDDL,30HINT21HMOVAH,4CHINT21HCODEENDSENDAGAINl6.编程实现三个变量值的排序(分别用无符号数和有符号数处理)。答:实现A、B、C三个变量从小到大排序的程序如下。DATASEGMENTADBl2HBDB34HCDB23HDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAL,ACMPAL,BJBENEXTl;无符号,有符号用JLEXCHGAL,BMOVA,ALNEXTl:CMPAL,CJBENEXT2:无符号,有符号用JLEXCHGAL,CMOVA,ALNEXT2:MOVAL,BCMPAL,CJBENEXT3;无符号,有符号用JIEXCHGAL,CMOVB,ALNEXT3:MOVAH,4CH;返回DOSINT21HCODEENDSENDSTART7.编程实现任意个有符号字节数据之和(和要求用字变量存放)。答:DATASEGMENT24 ADB………….;任意个字节数据NEQU$-A;元素个数SUMDW?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTAR:MOVAX,DATAMOVDS,AXLEASI,AXORDX,DXMOVCX,NAGAIN:MOVAL,[SI】CBWADCDX,AXLOOPAGAINMOVSUM,DXMOVAH,4CH:返回DOSINT21HCODEENDSENDSTART9.编写一子程序实现从某字数组中选出最大值。答:求数组元素最大值过程名MAX,数组首址为Sl,元素个数为CX,最大值由AX带出。MAXPROCNEARPUSHSIPUSHCXMOVAX,[S1]AGAIN:CMPAX,[SI]JGENEXT;有符号数,若为无符号数则JAEMOVAX,[SI]NEXT:INCSIINCSILOOPAGAINPOPCXPOPSIRETMAXENDP10.编写一子程序实现从某字数组中求出平均值(设其和不会超出范围)。答:;求数组元素之和函数SUM,数组首址为Sl,数组元素个数为CX,和由AX带出。SUMPROCNEARPUSHSIPUSHCXXORAX,AXAGAIN:ADDAX,[S1]24 INCSlINCSILOOPAGAINPOPCXPOPSlRETSUMENDP11.从键盘接收一串字符,并另起一行逆序显示该字符串。答:DATASEGMENTBUFDB81,0,81DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEADX,BUFMOVAH,l0;接收一串字符INT2lHMOVDL,0DH;显示回车换行MOVAH,2INT21HMOVDL,0AHMOVAH,2INT21HMOVCL,BUF+1;取接收的字符数XORCH,CHLEABX,BUF+1ADDBX,CX;BX指向串尾AGAIN:MOVDL,[BX];逆向显示MOVAH,2TNT21HDECBXLOOPAGAINMOVAH,4CHINT2lHCODEENDSENDSTART24 第6章Intel8086/8088微处理器1.解释题(1)执行部件EU(2)总线接El部件BIU(3)最大工作模式(4)最小工作模式(5)指令周期(6)总线周期(7)时钟周期(8)等待周期(9)地址数据分时复用(10)时序答:(1)执行部件EU由指令译码器(ID)、EU控制逻辑、算术逻辑运算单元(ALU)、通用寄存器(UR)和标志寄存器(FR)组成,主要完成分析指令、执行指令、EA形成、数据暂存和EU控制等功能。(2)总线接口BIU由指令指针(IP)、指令队列、段寄存器(SR)、地址加法器和总线控制逻辑组成,主要完成取指、取数、存数、物理地址形成和总线控制等功能。(3)最大工作模式是指MN/MX引脚为低电平,它是相对于最小模式而言的,系统中除了8086/8088作为处理器外,还包含数值运算协处理器8087、输入/输出协处理器8089,以及总线控制器8288和总线仲裁控制器8289等支持芯片,从而可以完成更复杂的运算或控制任务。(4)最小工作模式是指MN/MX引脚为高电平,系统中只有8086/8088微处理器,系统中的所有控制信号都直接由8086/8088产生。(5)指令周期是指从取出指令到指令执行完毕所需要的时间。(6)。总线周期是指CPU通过系统总线和CPU外部器件完成一次信息传输(读信息或写信息)过程所需的时间。(7)时钟周期指的是CPU工作的脉冲的宽度,即CPU频率的倒数,是CPU的最小计时单位。(8)等待周期指的是当慢速的外设在3个时钟周期内无法完成数据的读写操作时,就会在T3和T4间插入等待周期TW。(9)地址和数据共用同一引脚,但它们工作时间是分离的,即按时间分时工作。(10)微机运行过程中,完成指定任务所需的各步操作之间的时间顺序及其相关引脚的定时关系即称为工作时序。4.8086有哪两种工作模式?其主要区别是什么?答:8086有最大和最小两种工作模式,最小工作模式是指MN/MX引脚为高电平,系统中只有8086/8088微处理器,系统中的所有控制信号都直接由CPU产生。最大工作模式是指MN/MX引脚为低电平,它是相对于最小模式而言的,系统中除了8086/8088作为处理器外,还包含数值运算协处理器8087、输入/输出协处理器8089,以及总线控制器8288和总线仲裁控制器8289等支持芯片,从而可以完成更复杂的运算或控制任务。6.8086/8088的基本总线周期由几个时钟周期组成?IBMPC/XT机中CPU的时钟周期是多少?一个输入或输出总线周期是多少个时钟周期?答:8086/8088的基本总线周期由4个时钟周期组成。mMPC/XT机中CPU的时钟周期是210nS,一个输入或输出总线周期至少是4个时钟周期。说明:总线周期——CPU的BIU取指令和传送数据需要的时间。一个基本的总线周期由4个时钟周期(T状态)组成,即T1、T2、T3、T4状态。(1)在T1状态,CPU向地址/数据复用线(ADl5~ADO)和地址/状态复用线(AldS6~A1dS3)上发送地址信息,产生本次操作的地址。(2)在T2状态,CPU从总线上撤销地址信息,并向地址/状态复用线(A19/S6~AldS3)24 上发送本次操作的状态信息(S6~S3);在读操作下,地址/数据复用线(ADl5~ADO)浮空(高阻),为接收数据做准备;在写操作下,地址/数据复用线出现本次操作的数据。(3)在T3状态,地址,状态复用线仍为状态信息,地址/数据复用线出现本次操作的数据(读或写数据)。(4)在有些情况下,外设或存储器数据传输的速度跟不上CPU,则向CPU发出“未准备好"信号(READY=0),CPU在T3状态后自动插入1个至多个等待周期TW,直至READY=1为止,进入T4状态。(5)在T4状态,总线周期结束。(6)若CPU不执行总线操作(不访问存储器或I/O),系统总线则执行空闲周期Ti;在执行空闲周期时,总线高4位保留前一个总线周期的状态信息;若前一个总线周期为写操作,则地址/数据复用线仍保留写数据,若为读操作,则地址/数据复用线浮空。7.在T1状态下,8086/8088数据/地址线上传送的是什么信息?用哪个信号可将此信息锁存起来?数据信息是在什么时候送出的?在IBMPC/XT机中是怎样使系统地址总线和系统数据总线同时分别传送地址信息和数据信息的?答:在T1状态下,8086/8088数据/地址线上传送的是地址信息Al5~A0,地址锁存信号ALE引脚为高电平时,地址被锁存。数据信息是在DEN信号有效的时候送出,即主要在T2至乃期间。地址数据分时共享主要是用到地址锁存器(ALE有效)锁存地址送上数据总线,DEN有效数据缓冲器开通实现数据总线与CPU相通。8.RESET信号来到后,8086/8088系统的CS和IP分别为什么内容?答:RESET信号来到后,8086,8088系统的CS和IP分别为0F"FFFH和0000H。10.简述读内存的基本过程。答:读内存的过程其实就是取指令(或取数)的过程,具体如下:(1)CPU先将待取指令(数据)的地址送上地址总线并译码指定到对应的内存单元。(2)CPU再发出读信号。(3)内存单元内容的送出指令到数据总线。(4)指令(数据)通过数据总线送到CPU。(5)因为是取指令,CPU内部存入指令队列(取指特有)。13.请画出8088读内存时序图。答:如图6.1所示。24 15.请画出8086中断响应时序图。答:8086中断响应时序图如图6.3所示。第7章内存组成、原理与接口1.存取周期是指(C)。A.存储器的读出时间B.存储器的写入时间C.存储器进行连续读和写操作所允许的最短时间间隔D.存储器进行连续写操作所允许的最短时间间隔2.某计算机的字长是16位,它的存储器容量是64KB,若按字编址,那么它的最大寻址范围是(B)。A.64K字B.32K字C.64KBD.32KB3.某一RAM芯片的容量为512×8位,除电源和接地线外,该芯片的其他引脚数最少应为(D)。A.25B.23C.21D.19地址线9根,数据线8根,控制线2根。4.EPROM是指(D)。A.随机读写存储器B.只读存储器C.可编程的只读存储器D.可擦除可编程的只读存储器5.下列RAM芯片各需要多少个地址引脚和数据引脚?(1)4K×8位(2)512K×4位(3)1M×l位(4)2K×8位答:SRAM:(1)12和8(2)19和4(3)20和1(4)11和8DRAM:(1)6和16(2)5和8(3)10和2(4)6和16。6.下列ROM芯片各需要多少个地址引脚和数据引脚?(1)16×4位(2)32×8位(3)256×4位(4)512×8位答:(1)4和4(2)5和8(3)8和4(4)9和88.计算机的内存和外存有什么区别?答:内存用于存放当前正在运行的程序和正在使用的数据,CPU可以直接对它进行访问。相对于外存而言,内存主要特点是存取速度快、存储容量较小、成本较高,通常使用半导体存储器组成。外存用于存放当前暂不使用的或需要永久性保存的程序、数据和文件,在需要重用时才成批地调入,调出内存。外存的主要特点是存储容量大、成本较低、存取速度较慢,必须使用专门的设备(如磁盘驱动器、光盘驱动器、磁带机)才能访问,一般使用磁性介质如磁盘、磁带)或光介质(如光盘)实现。24 11.用下列芯片构成存储系统,各需要多少个RAM芯片?需要多少位地址作为片外地址译码?设系统为20位地址线,采用全译码方式。(1)512×4位RAM构成l6KB的存储系统。(2)1024×1位RAM构成l28KB的存储系统。(3)2K×4位RAM构成64KB的存储系统。(4)64K×1位RAM构成256KB的存储系统。答:(1)需要64片RAM和11位地址作为片外地址译码。(2)需要l024片RAM和10位地址作为片外地址译码。(3)需要64片RAM和9位地址作为片外地址译码。(4)需要32片RAM和4位地址作为片外地址译码。12.已知某微机控制系统中的RAM容量为4K×8位,首地址为4800H,求其最后一个单元的地址。答:最后一个单元地址=起始地址+容量一14800H+1000H一1=57FFH、13.某微机系统中内存的首地址为3000H,末地址为63FFH,求其内存容量。答:容量=最后一个单元地址一起始地址+163FFH~3000H+1=3400H=13KB14.某微机系统中ROM为6KB,最后一个单元的地址为9BFFH,RAM为3KB。已知其地址为连续的,且ROM在前,RAM在后,求该内存系统的首地址和末地址。答:9BFFH--1800H+1=8400H,所以ROM的首地址为8400H、末地址为9BFFH。RAM的首地址为9C00H,末地址为9C00H+C00H一1=A7FFH。16.内存系统的芯片选择通常有哪几种形式,各有何特点?答:有全译码法、部分译码法和线选法三种。在内存译码电路中,系统的全部地址总线都参与地址译码,对应存储器芯片中的每一个存储字都有唯一的确定地址,称之为“全译码”法。如果仍使用集成译码器,但片外地址中有一部分不参加对内存的片选译码,称为“部分译码”法。如果只使用一些基本的逻辑门电路——与门、或门和非门的组合,对若干位片外地址译码实现对内存的片选,称为“线选法”。19.使用2732、6116和74LSl38构成一个存储容量为12KBROM(地址00005H~02FFFH)、8KBRAM地址(03000H04FFFH)的内存系统。设系统地址总线20位,数据总线8位,全译码。请画出原理图。24 答:习题l9的内存连接原理图如图7.1所示。第8章输入输出(I/O)系统1.简述I/O接口的基本功能。答:I/O接口是主机和外设的通信桥梁,主要有数据的寄存和缓冲功能、对外设的控制和监测功能、设备选择功能、信号转换功能、中断管理或DMA管理功能、可编程功能。2.数据信息有哪几类?CPU和输入输出设备之间传送的信息有哪几类?相应的端口称为什么端口?答:数字信息有数字量、模拟量和开关量三种。CPU和外设主要传送数据信息、状态信息和控制信息,相应的为数据端口、状态端口和控制端口。5.CPU和外设之间的数据传送方式有哪几种?各种传送方式通常用在什么场合?答:CPU和外设之间的数据传送方式有以下几种:无条件传送方式、查询传送方式、中断传送方式、DMA(直接存储器存取)方式、lOP(输入输出处理机)方式。无条件I/O:适合于外设总是处于准备好或准备好时间相对固定的设备。查询I/O:在传送前先查询一下外设的状态,当外设准备好了才传送;若未准备好,则CPU等待。适合较复杂且准备好时间相对较短的设备。中断I/O:采用中断方式则可以免去CPU的查询等待时间,当外设没有准备好时,CPU可以去做自己其他的工作;当外设准备好时,主动向CPU提出请求。故在中断方式中,CPU和外设以及外设与外设之间是并行工作。适合较复杂且准备好时间相对较长的设备。DMA方式I/O:直接用硬件控制数据在外设和存储器之间的传送,适合快速且成块的数据传输。IOP方式:IOP可以和CPU并行工作,提供高速的DMA处理能力,实现数据的高速传送,但成本较高,适合要求I/O速度很高的场合,如3D图形显示等。,7.在中断传送方式中是怎样实现CPU与外设并行工作的?答:采用中断传送方式时,CPU从启动外设到外设就绪这段时间,一直仍在执行主程序或者继续启动其他外设,而不是像查询方式中处于等待状态,仅仅是在外设准备好数据传送的情况下才中止CPU执行的主程序,在一定程序上实现了主机和外设之间以及外设和外设之间的并行工作。8.查询方式、中断方式和DMA方式各自适用于什么范围?答:见本章第5题答案。9.何为全译码方式?何为部分译码方式?其优、缺点各是什么?答:全译码方式:CPU的全部地址总线都参与地址译码,因此一个端口对应唯一的一个地址,使用的地址线比较多,电路比较复杂。部分译码方式:CPU输出的地址信号只有部分参与地址译码,另一部分(一般为高位或低位地址)未参与,因此一个译码输出对应若干个端El地址,这就是地址重叠现象。这种方法使用地址线少,电路简单。10.分析图8.1所示的译码电路,当地址信号Al5~A7是多少时,74LSl38才能允许工作?Y0~Y7有效(为低电平)时对应的地址各是什么?24 答:分析译码电路采用逆向分析的方法:或门输出无效,则输入必须全无效;与门输出有效,则输入必须全有效。译码器74LSl38要工作,两低一高控制端必须同时有效,所以Al5~A7的数值为010001100。A6、A5、A4作为译码输入,A3~A0未参加译码,所以74LSl38的译码地址为010001100000XXXX~010001100111XXXX,即Y0至Y7分别对应端口地址4600H~460FH、4610H~461FH、4620H~"462FH、4630H~463FH、4640H~464FHl4650H~465FH、4660H~466FH、4670H~467FH。11.设计一个外设端口地址译码器,使CPU能寻址四个地址范围:(1)240~247H,(2)248~24FH,(3)250~257H,(4)258~25FH。答:如果是重叠地址则译码电路如图8.2所示,如果是可变译码则译码电路如图8.3所示。12.试用74LS244作为输入接口,读取三个开关的状态,用74LS273作为输出接口,点亮红、绿、黄三个发光二极管,示意图如教材《汇编语言、微机原理及接口技术(第2版)》图8.33所示。请画出PC/XT机系统总线的完整接口电路(包括端口地址译码的设计),端KI地址如图中所示(340H和348H),并编写能同时实现以下三种功能的程序:24 (1)K0、Kl、K2全部合上时,红灯亮;(2)K0、Kl、K2全部断开时,绿灯亮;(3)其他情况黄灯亮。答:程序如下:AGAIN:MOVDX,340HINAL,DX;开关采样ANDAL,07H;屏蔽无效位CMPAL,0JERED;全合上,转红灯亮CMPAL,07HJEGREEN;全合上,转绿灯亮MOVAL,01H;否则,黄灯亮JMPNEXTRED:MOVAL,04HJMPNEXTGREEN:MOVAL,02HNEXT:MOVDX,348HOUTDX,ALJMPAGAIN13.图8.5为一个LED接口电路,写出使8个LED管自上至下依次发亮2S的程序,并说明该接口属于何种输入输出控制方式?为什么?答:该接口驱动的是发光二极管,属始终准备好的简单外设,所以可用无条件I/O24 。程序如下:MOVAL,07FH;共阳接法,送0亮MOVCX,8AGAIN:OUT20H,ALRORAL,lCALLDELAY2S;调用延迟2S子程序LOOPAGAIN第9章中断技术1.什么叫中断?简述一个中断的全过程。答:中断是指CPU正在执行某个程序,因为某种原因被打断,转去为这种原因服务,服务完后返回继续执行被暂时中断的程序。中断过程主要有中断请求、中断判优及响应、中断服务和中断返回。2.确定中断的优先级(权)有哪两种方法?各有什么优缺点?IBMPC系列微机中断判优用的是什么方法?答:确定中断优先级方法主要有查询法、请求链队法、响应链队法、编码比较法等。查询法主要由查询的先后次序决定其优先级。请求链队法主要由其排队的先后次序决定其优先级,只有级别高无请求时,级别低才可以提出请求。响应链队法主要由其排队的先后次序决定其优先级,均可提出请求,但只响应排在最前面的请求。编码比较法主要是用于中断嵌套,判断是否有比当前正在服务的中断请求更高级别的中断请求,有则响应,无则屏蔽。IBMPC系列微机中断判优用的是中断控制器8259A,其内部集成了可编程改变的请求优先级电路及编码比较电路,既可以处理中断的优先级、也可以处理中断嵌套的优先级。3.8086/8088的中断分哪两大类?什么是中断向量?什么是中断向量表?8086/8088总共有多少级中断?它们的中断类型号是多少?中断向量表设在存储区的什么位置?答:中断分类如图9.1所示。24 中断向量是指中断服务程序的入口地址。所有指中断服务程序的入口地址依次存放的区域称为中断向量表。8086/8088总共有256级中断,中断类型号从0至255。中断向量表设在存储区最起始的1KB位置,每个中断向量占用4字节。4.什么是非屏蔽中断?什么是可屏蔽中断?它们得到CPU响应的条件是什么?答:屏蔽和非屏蔽是指CPU接收到中断请求后,能否不响应中断请求,可以不响应的请求称为可屏蔽中断,必须响应的称为不可屏蔽中断。非屏蔽中断响应的条件是:A.无总线请求;B.当前指令执行完毕。可屏蔽中断响应的条件是:A.无总线请求;B.无不可屏蔽中断请求;C.IF----1;D.当前指令执行完毕。5.8086/8088CPU怎样得到中断服务程序地址?请分别对软件中断和硬件中断加以说明。答:8086/8088CPU依据中断号乘以4找到中断向量表的位置,即从0段偏移中断号乘以4处连续取两个字,低字是中断服务程序的偏移地址,高字是中断服务程序的段地址。软件中断和硬件中断的处理主要是获取中断号的方法不同,软件中断的中断号是编程人员指定或CPU内定的,不可屏蔽硬件中断的中断号为2,可屏蔽硬件中断的中断号是由中断控制器8259A在中断响应期间送给CPU的,即必须有中断响应过程。6.8259A的中断屏蔽寄存器IMR和8086/8088的中断允许标志IF有什么差别?在中断响应过程中,它们怎样配合起来工作?答:8259A的中断屏蔽寄存器IMR设置的是中断请求线路上的屏蔽,即请求能否送出。8086/8088的中断允许标志IF是站在CPU的角度,即CPU接收到请求可否不去响应。若IF=0,则CPU不会有中断响应过程,即不再理会8259A送给CPU的中断请求;若IF=1,CPU在合适的时候对8259A的中断请求给出响应,再由8259A内部去决定响应的哪个请求(8259A的排队电路及编码比较电路及屏蔽工作,IMR位为l的中断请求不参加排队),而后由8259A送可响应的最高级别请求的中断号给CPU。13.若8086系统采用单片8259A,其中断类型码为46H,则其中断向量表的中断向量地址指针是多少?这个中断源应连向瓜的哪一个输入端?若中断服务程序入口地址为0ABC00H,则其向量区对应的4个单元的数码依次为多少?答:其中断向量表的中断向量地址指针是0:46H"4,即0:ll8H。这个中断源应连向IR的IR6输入端。若中断服务程序入口地址为0ABC00H,则其向量区对应的4个单元的数码依次为00、0C、00、AB,这只是其中一种方案,其实答案很多。14.若8086系统采用级联方式,主8259A的中断类型码从30H开始,端口地址为20H,2lH,从8259A的INT接主片的IR7,从片的中断类型码从40H开始,端口地址为22H,23H。均不要ICW4。试对其进行初始化编程。答:根据上述使用要求和硬件连接情况,对8259A的主片和从片分别编程如下。(1)主8259A初始化INTA00EQU20H;8259A主片端口0INTA01EQU21H;8259A主片端口lMOVAL,0001000B;ICWl:边沿触发、级联、不要ICW4OUTINTA00,ALJMPSHORT$+2;I/O端口延时要求(下同)MOVAL,0011000B;ICW:设置中断类型号的高5位为00110BOUTINTA01,ALJMPSHORT$+2MOVAL,10000000B;ICW,主片的IR2接从片的INT24 OUTINT01,AL(2)从8259A初始化INTB00EQU22H;从8259A端口0INTB01EQU23H;从8259A端口lMOVAL,00010000B:ICWlOUTINTB00,ALJMPSHORT$+2MOVAL,01000000B:ICW2:中断类型号的高5位为01000BOUTINTB01,ALJMPSHORT$+2MOVAL,00000111B;ICW3:从片的INT接主片的IR2OUTINTB01,AL第10章可编程接口芯片及其应用1.8255A的三个端口的基本特点是什么?答:PA口工作于三种工作方式(方式0、方式1、方式2),PB口可工作于两种工作方式(方式0、方式1),PC口只可工作于一种工作方式(方式0)或部分引脚作为PA口或PB口工作非方式0时的联系信号线。6.请记忆8255A的工作方式控制字及置位/复位控制字。答:参见教材《汇编语言微机原理及接口技术(第2版)》10.1节“可编程接口芯片及其应用”中的图l0.15。7.请用8255A及相关器件设计一个具有8个按键,依次按下各键对应指示灯亮,未按下键以跑马灯的方式显示,每个显示500ms后下一个显示,设延时500ms的子程序为DELAY500,并编程实现。答:设计如图l0.1所示。14.假定某PC系统扩展一块8253,该芯片配置的地址为308H~30BH,要求从OUT0频率为l000Hz的方波,从OUTl频率为100Hz的单时钟脉冲波,从OUT2频率为1Hz的方波。CLK0的时钟是4.77MHz,请画出8253通道GATE0~GATE2及从CLKl~CLK2的接线图。计算出各通道的计数初值及选定各通道的工作方式。然后编制各通道的初始化程序段。答:8253通道GATE0~GATE2及从CLKl~CLK2的接线图如图l0.3所示。题意fout0=1000Hz,fclk0=4.77Hz,所以N0=fclk0/fout0=4.77MHz/1000Hz=4770,工作于方式3。fclk1=fout0=1000Hz,fout1=l00Hz,所以N1=fclk1/fout1=1000Hz/l00Hz=1024 ,工作于方式2.fclk2=fout0=1000Hz,fout2=1Hz,所以N2=fclk2/fout2=1000Hz/1Hz=1000,工作于方式3。各通道的初始化程序段如下:;0通道初始化程序。MOVAL,0011011lBMOVDX,30BHOUTDX,ALMOVDX,308HMOVAL,70HOUTDX,ALMOVAL,47HOUTDX,AL;1通道初始化程序MOVAL,01010101BMOVDX,30BHOUTDX,ALMOVDX,309HMOVAL,10HOUTDX,AL;2通道初始化程序MOVAL,1011011lBMOVDX,30BHOUTDX,ALMOVDX,30AHMOVAL,0OUTDX,ALMOVAL,10HOUTDX,AL24'