版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
·PAGE26·微机原理与接口技术.PAGE28/NUMPAGES28第一章习题及答案1.微处理器内部包含哪三大部分?解:运算器、控制器和寄存器组。2.完成下列数制的转换①10101101B=〔D=〔H解:10101101B=173D=ADH。②0.11B=〔D解:0.11B=0.75D。③211.25=<>B=<>H解:211.25=11010011.01B=D3.4H。④10111.0101B=<>H=<>BCD解:10111.0101B=17.5H=23.3125D=〔00100011.0011000100100101BCD3.已知X=+1011010B,Y=–0011011B,设机器数为8位,分别写出X、Y的原码、反码和补码。解:4.已知X的真值为32,Y的真值为–19,求解:5.已知X=51,Y=–86,用补码完成下列运算,并判断是否产生溢出〔设字长为8位。①X+Y②X-Y③–X+Y④–X-Y解:[X]补=[X]补=00110011B[Y]补=[Y]反+1=[11010110]反+1=10101001+1=10101010B[X+Y]补=[X]补+[Y]补=00110011B+10101010B=11011101BX+Y=[[X+Y]补]补=[11011101]补=10100010+1=10100011B②11110111B,因为,所以产生溢出。③01110111B,因为,所以产生溢出。④00100011B,因为,所以未产生溢出。6.若使与门的输出端输出高电平,则各输入端的状态是什么?解:各输入端为高电平。7.若使与非门的输出端输出低电平,则各输入端的状态是什么?解:各输入端为高电平。8.如果74LS138译码器的Y4端输出低电平,则C、B、A三个输入端的状态分别是什么?解:C、B、A三个输入端的状态分别是‘1’,‘0’,‘第二章习题及答案1.8086/8088CPU由哪两大功能部分所组成?简述它们的主要功能?解:8086/8088CPU由EU和BIU两大功能部分组成。执行单元EU主要完成指令的译码和执行。执行单元通过EU控制电路从BIU中取出指令,经过指令译码形成各种定时控制信号,向EU内各功能部件发出相应的控制命令,以完成指令所规定的操作。总线接口单元BIU是8086/8088同外部联系的接口。它负责所有涉及外部总线的操作,包括取指令、读操作数、写操作数、地址转换和总线控制等。BIU内部设置指令预取队列,每当指令队列有两个或两个以上的字节空间,且执行单元未向BIU申请读/写存储器操作数时,BIU顺序地预取后续指令的代码,并填入指令队列中。当EU执行的是转移指令时,则BIU清除当前的指令预取队列的内容,从新的地址取回指令,并立即送到EU去执行,然后,从后续的指令序列中取回指令填满队列。2.什么是指令流水线?指令流水线需要哪些硬件支持?解:指令流水线是指8086/8088CPU内部的执行单元EU和总线接口单元BIU通过指令预取队列协同工作从而实现指令的并行执行。指令流水线最主要的硬件支持是BIU内部的指令预取队列。3.逻辑地址如何转换成物理地址?已知逻辑地址为2D1EH:35B8H,对应的物理地址是什么?解:逻辑地址是段基址和段内偏移地址形式的地址。 物理地址=段基址×16+段内偏移已知逻辑地址为2D1EH:35B8H,则对应的物理地址4.8088和8086的指令预取队列的长度分别是多少?解:8088的指令预取队列的长度为4字节;8086的指令预取队列的长度为6字节。5.简述8086/8088CPU内部的各寄存器的作用。解:AX、BX、CX和DX通用寄存器一般用于存放参与运算的数据或运算的结果。SP:用于存放堆栈栈顶的段内偏移量。BP:用于存放访问内存时的偏移地址。 SP和BP也可以用来存放数据,它们的默认段寄存器都是SS。SI和DI通常在间接寻址方式中存放操作数的偏移地址。在串操作指令中,DI的默认段寄存器是ES。SI和DI也可以用来存放数据。CS:代码段寄存器,用于存放代码段的段基址。DS:数据段寄存器,用于存放数据段的段基址。SS:堆栈段寄存器,用于存放堆栈段的段基址。ES:附加段寄存器,用于存放附加段的段基址。IP:指令指针寄存器,用于存放CPU即将执行的下一条指令在代码段中的段内偏移地址。FLAGS:标志寄存器,用于存放指令执行结果的特征。6.8086/8088CPU内部的状态标志寄存器共有几位标志位?各位的含义是什么?解:状态标志寄存器共有9位标志位,其中包含6个状态标志位和3个控制标志位。状态标志位:CF〔CarryFlag:进位标志。当算术运算结果使最高位产生进位或借位时,则CF=1;否则CF=0。PF〔ParityFlag:奇偶标志。若运算结果中的低8位含有偶数个1,则PF=1;否则PF=0。AF〔AuxiliarycarryFlag:辅助进位标志。运算过程中若D3位向D4有进位或借位时,AF=1;否则AF=0。ZF〔ZeroFlag:零标志。若运算结果为0,则ZF=1;否则ZF=0。SF〔SignFlag:符号标志。若运算结果为负,则SF=1;否则SF=0。OF〔OverflowFlag:溢出标志。当带符号数的补码运算结果超出机器所能表达的范围时,就会产生溢出,这时OF=1;否则OF=0。控制标志位:DF〔DirectionFlag:方向标志。控制串操作指令的地址变化的方向。当DF=0时,串操作指令的地址指针按增量变化;当DF=1时,串操作指令的地址指针按减量变化。IF〔InterruptFlag:中断允许标志。控制微处理器是否允许响应可屏蔽中断请求。若IF=1,则允许响应;否则禁止响应。TF〔TrapFlag:单步标志。TF=1时,CPU工作在单步方式。7.8086/8088系统中存储器的分段原则是什么?解:分段原则是要求段的起始单元的物理地址是16的整数倍,每段的物理长度为64KB。8.当ALE有效时,8088的地址/数据总线上将出现什么信息?解:当ALE有效时,8088的地址/数据总线上将出现地址信息。9.READY管脚的作用是什么?解:READY用于微处理器时序中插入等待状态。若该引脚被置为低电平,则微处理器进入等待状态并保持空闲;若该引脚被置为高电平,则它对微处理器的操作不产生影响。CPU在读、写操作时序中的T3时钟周期开始处,通过检测READY管脚的状态来决定是否插入TW等待时钟周期,以解决CPU与存储器或I/O接口之间速度不匹配的矛盾。10.为什么在基于8086/8088的系统中经常需要使用缓冲器?解:由于基于8086/8088的系统驱动能力的不足,需要使用缓冲器。11.8088工作在最小模式下包含哪些控制信号?解:最小模式下包含的控制信号有:RD、WR、IO/M、ALE、DT/R、DEN和INTA等信号。12.若CS=4000H,则当前代码段可寻址的存储空间范围是多少?解:CS=4000H时,当前代码段可寻址的存储空间范围为40000H~4FFFFH。第三章习题及答案什么叫寻址方式?8086指令系统中有哪几种寻址方式?解:寻址方式,即获得地址的方法,主要指获得段内偏移地址的方法,段基址常采用默认方式获得。8086CPU指令系统的寻址方式有两类:获得指令中操作数地址的方法。获得要执行的下一条指令的地址的方法。8086指令系统中有8种操作数寻址方式,立即寻址。。。。。。。下列指令中BUFF为字节类型变量,DATA为常量,指出下列指令中源操作数的寻址方式:〔1MOVAX,1200〔2MOVAL,BUFF〔3SUBBX,[2000H]〔4MOVCX,[SI]〔5MOVDX,DATA[SI]〔6MOVBL,[SI][BX]〔7MOV[DI],AX〔8ADDAX,DATA[DI+BP]〔9PUSHF〔10MOVBX,ES:[SI]解:〔1MOVAX,1200 ;立即寻址〔2MOVAL,BUFF ;直接寻址〔3SUBBX,[2000H] ;直接寻址〔4MOVCX,[SI] ;寄存器间接寻址〔5MOVDX,DATA[SI] ;寄存器相对寻址〔6MOVBL,[SI][BX];基址变址寻址〔7MOV[DI],AX;寄存器寻址〔8ADDAX,DATA[DI+BP];基址变址相对寻址〔9PUSHF ;隐含寻址〔10MOVBX,ES:[SI] ;寄存器间接寻址指出下列指令的错误并改正。〔1MOVDS,1200〔2MOVAL,BX〔3SUB33〔4PUSHAL〔5MUL45H〔6MOV[BX],[SI]〔7MOVSBYTEPTRDS:[DI],BYTEPTRDS:[SI]〔8ADDDATA[DI+BP],ES:[CX]〔9JMPBYTEPTR[SI]〔10OUT3F8H,AL解:〔1MOVDS,1200 ;不能用立即数给段基址寄存器赋值〔2MOVAL,BX ;操作数类型不一致〔3SUB33H,AL ;立即数不能作为目的操作数〔4PUSHAL ;压栈指令的操作数必须是字类型〔5MUL45H ;乘法指令中的操作数不能是立即数〔6MOV[BX],[SI] ;源和目的操作数不能同时为内存操作数〔7MOVSBYTEPTRDS:[DI],BYTEPTRDS:[SI] ;目的操作数应该在ES段。〔8ADDDATA[DI+BP],ES:[CX] ;CX不能做间址寄存器使用〔9JMPBYTEPTR[SI] ;操作数必须是字类型〔10OUT3F8H,AL ;16位的端口地址不能直接在输入输出指令中使用。根据要求写出一条〔或几条汇编语言指令。〔1将立即数4000H送入寄存器BX。〔2将立即数4000H送入段寄存器DS。〔3将变址寄存器DI的内容送入数据段中2000H的存储单元。〔4把数据段中2000H存储单元的内容送段寄存器ES。〔5将立即数3DH与AL相加,结果送回AL。〔6把BX与CX寄存器内容相加,结果送入BX。〔7寄存器BX中的低4位内容保持不变,其他位按位取反,结果仍在BX中。〔8实现AX与-128的乘积运算。〔9实现CX中高、低8位内容的交换。〔10将DX中D0、D4、D8位置1,其余位保持不变。解:〔1将立即数4000H送入寄存器BX。MOVBX,4000H〔2将立即数4000H送入段寄存器DS。MOVAX,4000HMOVDS,AX〔3将变址寄存器DI的内容送入数据段中2000H的存储单元。MOV[2000H],DI〔4把数据段中2000H存储单元的内容送段寄存器ES。MOVAX,[2000H]MOVES,AX〔5将立即数3DH与AL相加,结果送回AL。ADDAL,3DH〔6把BX与CX寄存器内容相加,结果送入BX。ADDBX,CX〔7寄存器BX中的低4位内容保持不变,其他位按位取反,结果仍在BX中。MOVAX,BX,NOTAXANDAX,0FFF0HANDBX,000FHORBX,AX〔8实现AX与-128的乘积运算。MOVBX,-128IMULBX〔9实现CX中高、低8位内容的交换。MOVAL,8ROLCXAL〔10将DX中D0、D4、D8位置1,其余位保持不变。0RDX,0111H设SS=2000H,SP=1000H,SI=2300,DI=7800,BX=9A00H。说明执行下面每条指令时,堆栈内容的变化和堆栈指针的值。PUSHSIPUSHDIPOPBX解:PUSHSI〔0FFFH=23H〔0FFEH=00HSP=0FFEHPUSHDI〔0FFDH=78H〔0FFCH=00HSP=0FFCHPOPBXBX=7800HSP=0FFEH内存中18FC0H、18FC1H、18FC2H单元的内容分别为23H、55、5AH,DS=1000H,BX=8FC0H,SI=1,执行下面两条指令后AX=?DX=?MOVAX,[BX+SI]LEADX,[BX+SI]解:AX=5A55HDX=8FC1H回答下列问题:〔1设AL=7FH,执行CBW指令后,AX=?〔2设AX=8A9CH,执行CWD指令后,AX=?DX=?解:〔1设AL=7FH,执行CBW指令后,AX=007FH〔2设AX=8A9CH,执行CWD指令后,AX=8A9CHDX=FFFFH执行以下两条指令后,FLAGS的6个状态标志位的值是什么?MOVAX,847BHADDAX,9438H结果为118B3H解:CF=1PF=0〔为运算结果的低8位奇偶AF=1ZF=0SF=0OF=1下面程序段将03E8H转换成十进制数并显示,填写指令后的空格。MOVAX,03E8H ;AH=03H,AL=E8HMOVCX,4MOVDI,2000H;DI=2000HMOVBX,10;BH=00,BL=0AHGO0:SUBDX,DX;CF=0,ZF=1DIVBX;AX=64H,DX=0MOV[DI],DL;[DI]=0INCDILOOPGO0;CX=3MOVCX,4GO1:DECDI ;DI=2003HMOVDL,[DI];DL=01ORDL,30H;DL=31HMOVAH,02;显示1位十进制数1INT21HLOOPGO1用串操作指令替换以下程序段:ABC:MOVAL,[SI]MOVES:[DI],ALINCSIINCDILOOPABC解:REPMOVSB设AX=AAH,顺序执行下列各条指令,填写空格。〔1XORAX,0FFFFH;AX=〔2ANDAX,13A0H〔3ORAX,25C9H;A〔4TESTAX,0004H;AX=解:〔1XORAX,0FFFFH;AX=FF55H〔2ANDAX,13A0H;AX=〔3ORAX,25C9H;AX=〔4TESTAX,0004H;AX=00AAH试写出执行下列3条指令后BX寄存器的内容。MOVCL,2HMOVBX,CO2DHSHRBX,CL解:BX=300BH执行下列程序段后,AX、BX的内容各是什么?〔1MOVAX,0001HMOVBX,8000HNEGAX;0-0001HMOVCX,4AA:SHLAX,1RCLBX,1LOOPAAHLT解:AX=FFF0HBX=000FH〔2MOVAX,0
MOVBX,1
MOVCX,100A:ADDAX,BX
INCBX
LOOPA
HLT解:AX=8080HBX=0101H编写程序段,实现下述要求:使AX寄存器的低4位清0,其余位不变。使BX寄存器的低4位置1,其余位不变。测试AX的第0位和第4位,两位都是1时将AL清0。测试AX的第0位和第4位,两位中有一个为1时将AL清0。解:〔1使AX寄存器的低4位清0,其余位不变。ANDAX,0FFF0H使BX寄存器的低4位置1,其余位不变。ORAX,0FH〔3测试AX的第0位和第4位,两位都是1时将AL清0。TESTAX,01HJZAATESTAX,10HJZAAMOVAL,0HLTAA:〔4测试AX的第0位和第4位,两位中有一个为1时将AL清0。TESTAX,11HJZAAMOVAL,0AA:编写程序段,完成把AX中的16进制数转换为ASCII码,并将对应的ASCII码依次存入MEM开始的存储单元中。例如,当AX的内容为37B6H时,MEM开始的4个单元的内容依次为33H,37H,42H,36H。解:MOVCX,4LEASI,MEM ADDSI,3 ;SI指向MEM+3CC:MOVBX,AX ;保存原始数据ANDAX,000FH ;取个位数CMPAL,9 JAAA ;在A~B之间就加37HADDAL,30H ;在0~9之间就加30HJMPBBAA:ADDAL,37HBB:MOV[SI],AL ;保存ASCII值DECSIPUSHCXMOVAX,BXMOVCL,4SHRAX,CL ;准备取下一个数POPCXLOOPCC编写程序段,求从TABLE开始的10个无符号数的和,结果放在SUM单元中。解: LEASI,TABLE MOVCX,10 XORAX,AXNEXT: ADDAL,[SI] ADCAH,0 INCSI LOOPNEXT MOVSUM,AX编写程序段,从键盘上输入字符串‘HELLO’,并在串尾加结束标志‘$’。解:LEADX,STRING;设置字符串存放缓冲区首地址MOVAH,0AH;调用10号功能,输入字符串INT21HMOVCL,STRING+1;实际键入的字符个数送CL XORCH,CH ADDDX, 2 ADDDX,CX;得到字符串尾地址 MOVBX,DXMOVBYTEPTR[BX],'$'编写程序段,在屏幕上依次显示1、2、3、A、B、C。解:LEABX,STR ;STR为6个字符的存放区域首地址 MOVCX,6 LPP:MOVAH,2 MOVDL,[BX] INCBX INT21H ;利用2号功能调用依次先生6个字符 LOOPLPP编写程序段,在屏幕上显示字符串"HelloWorld"。解:LEADX,STRING;STRING字符的存放区域首地址 MOVAH,09H INT21H ;利用9号功能调用显示字符串编写程序段,把内存中首地址为MEM1的200个字节送到首地址为MEM2的区域。解:MOV AX,SEGMEM1MOV DS,AX ;设定源串段地址MOV AX,SEGMEM2MOV ES,AX ;设定目标串段地址MOV SI,0 ;设定源串偏移地址MOV DI,0 ;设定目标串偏移地址MOV CX,200 ;串长度送CXCLD ;〔DF=0,使地址指针按增量方向修改REP MOVSB ;每次传送一个字节,并自动HLT编写程序段,以4000H为起始地址的32个单元中存有32个有符号数,统计其中负数的个数,并将统计结果保存在BUFFER单元中。解:START:MOVDI,OFFSETBUFFERXORAL,AL MOV[DI],ALMOVSI,4000H MOVCX,32AA: MOVAL,[SI] ORAL,AL JNSX1INC[DI]X1:INCSINEXT:LOOPAA HLT第四章习题及答案什么叫汇编?汇编语言源程序的处理过程是什么?解:任何CPU都只能执行机器语言程序。汇编语言不是机器语言,汇编语言程序必须通过具有"翻译"功能的系统程序的处理,处理的过程称为汇编。汇编语言源程序经过汇编生成机器语言目标程序,简称目标程序。目标程序经过连接程序连接,就得到可执行的机器语言程序文件。汇编语言的语句类型有哪些?各有什么特点?解:汇编语言的语句类型有两种:指示性语句和指令性语句。指示性语句可以位于任何段中,指令性语句必须位于代码段内。指示性语句又称为伪操作语句,它不是8088/8086CPU的指令,它与汇编程序〔assembler有关。指示性语句的功能主要是变量定义、为数据分配存储空间、告诉汇编程序如何对源程序汇编等。源程序汇编后指示性语句不生成目标代码,所以常被称为伪指令。指令性语句指令性语句是可执行语句,是8088/8086CPU的指令。源程序汇编后指令性语句生成目标代码。第3章中介绍的所有指令都是指令性语句的主体,其操作数最多只能有两个。汇编语言源程序的基本结构是什么?解:汇编语言源程序由若干段组成:数据段、附件数据段、堆栈段和代码段等,段与段之间的顺序可以随意排列,每一段由SEGMENT开始,以ENDS结束,每段的开始和结束都附有相同的名字。一个程序一般定义三个段:数据段、堆栈段和代码段,必要时增加定义附加数据段,能独立运行的程序至少包含一个代码段。写出完成下述要求的变量定义的语句:为缓冲区BUFF保留200个字节的内存空间将字符串’BYTE’,’WORD’存放于某数据区在数据区中存入下列5个数据:2040H,0300H,10H,0020H,1048H解:〔1为缓冲区BUFF保留200个字节的内存空间BUFFDB200DUP<?>〔2将字符串’BYTE’,’WORD’存放于某数据区DB‘BYTE’,’WORD’〔3在数据区中存入下列5个数据:2040H,0300H,10H,0020H,1048H DW2040H,0300H,10H,0020H,1048H画出下面数据段汇编后的内存图,并标出变量的位置。DATASEGMENTAAEQU78HAA0DB09H,-2,45H,2DUP〔01H,?,’AB’AA1DW-2,34H+AAAA2DD12H;双字类型DATAENDS解:如图所示。设程序中的数据定义如下:NAMEDB30DUP〔?LIST DB1,8,3,2ADDRDW30DUP〔?取NAME的偏移地址放入SI取LIST的前两个字节存入AX取LIST实际长度解:〔1取NAME的偏移地址放入SIMOVSI,OFFSETNAME〔2取LIST的前两个字节存入AXMOVAX,WORDPTR[LIST]〔3取LIST实际长度MOVAX,SIZELIST;P85依据下列指示性语句,求表达式的值。SHOW0EQU200 SHOW1EQU15 SHOW2EQU2=1\*GB2⑴SHOW0X100+55 =2\*GB2⑵SHOW0ANDSHOW1-15=3\*GB2⑶<SHOW0/SHOW2>MODSHOW1=4\*GB2⑷SHOW1ORSHOW0解:〔1SHOW0X100+55=200X100+55=2\*GB2⑵SHOW0ANDSHOW1-15=C8HAND0FH-0FH=0;减法的优先级过于AND=3\*GB2⑶〔SHOW0/SHOW2MODSHOW1=100MOD15=10=4\*GB2⑷SHOW1ORSHOW0=0FHORC8H=CF编写程序,统计寄存器BX中二进制位"1”的个数,结果存在AL中。DATASEGMENTNUMDW?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAL,0MOVBX,NUM;把数X传送给BXMOVCX,16NEXT:SHLAX,1JNCNEXT1INCALNEXT1:LOOPNEXTMOVAH,4CHINT21HCODEENDSENDSTART某数据块存放在BUFFER开始的100个字节单元中,试编写程序统计数据块中正数〔不包括0的个数,并将统计的结果存放到NUMBER单元中。解DATASEGMENTBUFFERDB100<?>NUMBERDB0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXXORDX,DXMOVCX,100 MOVSI,OFFSETBUFFERNEXT:MOVAL,[SI] INCSI TESTAL,80H ;是正数吗? JNZGOON ;否,转移到GOONCMPAL,0JZGOONINCDXGOON:LOOPNEXTMOVNUMBER,DXMOVAH,4CHINT21HCODEENDSENDSTART阅读下面程序段,指出它的功能。DATA SEGMENTASCIIDB30H,31H,32H,33H,34H,35H,36H,37H,38H,39HHEX DB04HDATAENDS CODE SEGMENTASSUMECS:CODE,DS:DATA START: MOVAX,DATAMOVDS,AXMOVBX,OFFSETASCIIMOVAL,HEXANDAL,0FHMOVAL,[BX+AL]MOVDL,ALMOVAH,2INT21HMOVAH,4CHINT21H CODE ENDS ENDSTART解:这时一个查表程序,查表取出HEX的ASCII。并在屏幕上显示ASCII码某数据区中有100个小写字母,编程把它们转换成大写字母,并在屏幕上显示。解:DATASEGMENTBUFFERDB100<?>DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVCX,100 MOVSI,OFFSETBUFFERNEXT:MOVAL,[SI] INCSICMPAL,61H ;是小写字母吗? JBGOON ;否,转移到GOON〔小于则转移SUBAL,20HMOVDL,AL MOVAH,2 INT21HGOON:LOOPNEXTMOVAH,4CHINT21HCODEENDSENDSTART子程序的参数传递有哪些方法?解:主程序在调用子程序时,要为子程序预置数据,在子程序返回时给出数据处理的结果,这称为数据传送或变量传送。方法主要有以下几种:①寄存器传送。②地址表传送,需要传送的参数较多时可以利用存储单元传送。在调用子程序前,把所有参数依次送入地址表,然后将地址表的首地址作为子程序入口参数传递给子程序。③堆栈传送,这种方式要审慎注意堆栈的变化情况。过程定义的一般格式是什么?子程序开始处为什么常用PUSH指令?返回前用POP指令?解:格式见P90,如果一个子程序被多次调用,保护与恢复〔主程序现场就非常重要。主程序每次调用子程序时,主程序的现场不会相同,保护与恢复现场的工作就只能在子程序中进行。原则上,在子程序中,首先把子程序中要用到的寄存器、存储单元、状态标志等压入堆栈或存入特定空间中,然后子程序才可以使用它们,使用完后再将它们弹出堆栈或从特定空间中取出,恢复它们原来的值,即恢复主程序现场。保护和恢复现场常使用PUSH和POP指令。阅读下面程序段,指出它的功能。DATASEGMENTSTRINGDB‘Exxperience…’LENGDW100KEYDB‘x’DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATAMAINPROCFARSTART:MOVAX,DATA MOVDS,AXDI-DI+SI+SP->BPBP-BP+IP-IP+[BP+4]->SICLCH[BP+6]->DIBLBH MOVES,AX LEABX,STRING;字符串地址->BX LEACX,LENG;字符串长->CX PUSHBX PUSHCX MOVAL,KEY CALLDELCHAR MOVAH,4CH INT21HMAINENDPDELCHARPROC PUSHBP MOVBP,SP PUSHSI PUSHDICLD MOVSI,[BP+4] MOVCX,[SI] MOVDI,[BP+6] REPNESCASB JNEDONEMOVSI,[BP+4] DECWORDPTR[SI] MOVSI,DI DECDI REPMOVSBDONE:POPDI POPSI POPBPRETDELCHARENDPCODEENDS ENDSTART解:从字符串中删去多余的‘X’字符。显示两位压缩BCD码值〔0~99,要求不显示前导0。解:DATASEGMENTBUFDB?;内存中的两位压缩BCD码DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAL,BUFMOVBL,ALNEXT: MOVCL,4SHRAL,CLANDAL,0FHCMPAL,0JZGOON ADDAL,30H ;显示高位BCD码MOVDL,AL MOVAH,2INT21HGOON:MOVAL,BLANDAL,0FHADDAL,30H ;显示低位BCD码MOVDL,ALMOVAH,2 INT21HMOVAH,4CHINT21HCODEENDSENDSTART某数据区中连续存放着100个整数,要求将其中为0的元素删除,并将保留的数据连续存放。解:DATASEGMENTSTRINGDB100<?>LENGDW100KEYDB0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATAMAINPROCFARSTART:MOVAX,DATA MOVDS,AX MOVES,AX LEABX,STRING LEACX,LENG PUSHBX PUSHCX MOVAL,KEY CALLDELCHAR MOVAH,4CH INT21HMAINENDPDELCHARPROC PUSHBP MOVBP,SP PUSHSIPUSHDI CLD MOVSI,[BP+4] MOVCX,[SI] MOVDI,[BP+6] REPNESCASB JNEDONEMOVSI,[BP+4] DECWORDPTR[SI] MOVSI,DI DECDI REPMOVSBDONE:POPDIPOPSI POPBP RETDELCHARENDPCODEENDS ENDSTART编程,把以DATA为首址的两个连续单元中的16位无符号数乘以10。解:DATASEGMENTBUFFERDBA3H,27HDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEASI,BUFFERMOVAX,[SI]SHLAX,1MOVBX,AXMOVCL,3MOVAX,[SI]SHLAX,CLADDAX,BX MOVBUFFER,AL MOVBUFFER+1,AHMOVAH,4CHINT21HCODEENDSENDSTART注:2X+23X=2X+8X=10X编程,比较两个字串是否相同,并找出其中第一个不相等字符的地址,将该地址送BX,不相等的字符送AL。两个字符串的长度均为200个字节,M1为源串首地址,M2为目标串首地址。解:DATASEGMENTM1DB100DUP<?>DATAENDSEDATASEGMENTM2DB100DUP<?>EDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:EDATASTART:MOVAX,DATAMOVDS,AXMOVAX,EDATAMOVES,AXLEA SI,M1 ;〔SI←源串首地址LEA DI,M2 ;〔DI←目标串首地址MOV CX,200 ;〔CX←串长度CLD ;〔DF=0,使地址指针按增量方向修改REPE CMPSB ;若相等则重复比较ANDCX,0FFFFH;检查〔CX是否等于零JZ STOP ;〔CX=0则转STOPDEC SI ;〔SI-1,指向不相等单元MOV BX,SI ;〔BX←不相等单元的地址MOV AL,[SI] ;〔AL←不相等单元的内容STOP:MOVAH,4CHINT21HCODEENDSENDSTART编程,在内存的数据段中存放了100个8位带符号数,其首地址为TABLE,试统计其中正元素、负元素、和零元素的个数,并分别将个数存入PLUS,MINUS,ZERO等3个单元中;解:DATASEGMENTTABLEDB100DUP<?>DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXXORALMOVPLUS,ALMOVMINUS,ALMOVZERO,ALLEASI,TABLEMOVCX,100CLDCHECK:LODSBORAL,AL JSX1JZX2INCPLUSJMPNEXTX1: INCMINUSJMPNEXTX2: INCZERONEXT: LOOPCHECK: MOVAH,4CHINT21HCODEENDSENDSTART编程,在数据段DATA1开始的80个连续的存储单元中,存放80位同学某门课程的考试成绩<0~100>。编写程序统计成绩≥90分的人数,80~89分的人数,70~79分的人数,60~69分以及<60分的人数。将结果存放到DATA2开始的存储单元中。解:DATASEGMENTDATA1DB80DUP<?>;假定学生成绩已放入这80个单元中DATA2DB5DUP<0>;统计结果的存放单元DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVCX,80;统计80个学生的成绩LEASI,DATA1 LEADI,DATA2AGAIN:MOVAL,[SI]CMPAL,90;与90比较JCNEXT1;小于90分,转NEXT1INCBYTEPTR[DI];否则90分以上的人数加1JMPSTO;转循环控制处理NEXT1:CMPAL,80;与80比较JCNEXT2 ;小于80分,转NEXT2INCBYTEPTR[DI+1];否则80分以上的人数加1 JMPSTONEXT2:CMPAL,70;与70比较 JCNEXT3 ;小于70分,转NEXT3INCBYTEPTR[DI+2];否则70分以上的人数加1JMPSTONEXT3:CMPAL,60;与60比较JCNEXT4;小于60分,转NEXT4INCBYTEPTR[DI+3];否则60分以上的人数加1JMPSTO;转循环控制处理NEXT4NEXT4:INCBYTEPTR[DI+4];60分以下的人数加1STO:INCSI;指向下一个学生成绩 LOOPAGAIN;循环,直到所有成绩都统计完MOVAH,4CH;返回DOSINT21HCODEENDSENDSTART第五章习题及答案半导体存储器按照工作方式可分为哪两大类?它们的主要区别是什么?答:〔1半导体存储器按照工作方式可分为ROM和RAM。〔2它们之间的主要区别是:ROM在正常工作时只能读出,不能写入。RAM则可读可写。断电后,ROM中的内容不会丢失,RAM中的内容会丢失。静态RAM和动态RAM的存储元的工作原理是什么?动态RAM为什么需要定时刷新?答:〔1静态RAM的存储元的工作原理是利用双稳态触发器的工作原理保存信息;动态RAM的存储元的工作原理是把电荷存储到电容中来实现信息存储。〔2DRAM的存储元以电容来存储信息,由于存在漏电现象,电容中存储的电荷会逐渐泄漏,从而使信息丢失或出现错误。因此需要对这些电容定时进行"刷新"。存储器的地址译码方法有哪两种方式?答:存储器的地址译码方法有:全地址译码和部分地址译码两种。什么是位扩展?什么是字扩展?答:〔1当存储芯片每个单元的字长小于所需内存单元字长时,需要用多个芯片构成满足字长要求的存储模块,这就是位扩展。〔2当存储芯片的容量小于所需内存容量时,需要用多个芯片构成满足容量要求的存储器,这就是字扩展。设计一个4KBROM与4KBRAM组成的存储器系统,芯片分别选用2716〔2K×8和6116〔2K×8,其地址范围分别为4000H~4FFFH和6000H~6FFFH,CPU地址空间为64K,画出存储系统与CPU连接图。答:分析:2716〔2KX811根地址线A0~~A106116〔2KX811根地址线A0~~A10CPU:64K=26X21016根地址线A0~~A15分别需芯片个数:2716:4KX8/2KX8=26116:4KX8/2KX8=2将地址展开成二进制:①4KB的ROM地址空间4000H~4FFFHA15A14A13A12010000……0010001……1010010……0010011……12716〔2KX8:2片第一片地址范围:4000~~47FFH第二片地址范围:4800H~~4FFFH②4KB的RAM地址空间:6000H~6FFFHA15A14A13A011000……0011001……1011010……0011011……16116〔2KX8:2片第一片地址范围:6000~~67FFH第二片地址范围:6800H~~6FFFH利用:CPU的剩余地址线A15~A11,使用3:8译码器进行全地址译码,生成片选信号#Y0、#Y1、#Y4、#Y5,为四个芯片使用。CBA#YA15A01000#Y001001#Y101100#Y401101#Y5存储系统与CPU连接图如下图所示:试利用全地址译码将6264芯片接到8088系统总线上,使其所占地址范围为32000H~33FFFH。答:将地址范围展开成二进制形式如下图所示。 00110010000000000000 001100111111111111116264芯片的容量为8K×8,需要13根地址线A0~A12。而剩下的高7位地址应参加该芯片的地址译码。电路如图所示:若采用6264芯片构成内存地址从20000H~8BFFFH的内存空间,需要多少片6264芯片?答:从20000H~8BFFFH的内存空间共有8BFFFH-20000H+1=6C000H〔432K个字节,每个6264芯片的容量位8KB,故需432/8=54片。设某微型机的内存RAM区的容量为128KB,若用2164芯片构成这样的存储器,需多少2164芯片?至少需多少根地址线?其中多少根用于片内寻址?多少根用于片选译码?答:〔1每个2164芯片的容量为64K×1bit,共需128/64×8=16片。〔2128KB容量需要地址线17根。〔316根用于片内寻址。〔41根用于片选译码。注意,用于片内寻址的16根地址线要通过二选一多路器连到2164芯片,因为2164芯片是DRAM,高位地址与低位地址是分时传送的。高速缓冲存储器的工作原理是什么?为什么设置高速缓冲存储器?答:〔1高速缓冲存储器的工作原理是基于程序和数据访问的局部性原理。〔2设置高速缓冲存储器为了缓解CPU和内存之间存取速度的矛盾,将当前正在执行的指令及相关联的后继指令集从内存读到Cache,使CPU执行下一条指令时,从Cache中读取。Cache的存在使CPU既可以以较快的速度读取指令和数据,又不至于使微机的价格大幅提高。现有两片6116芯片,所占地址范围为61000H~61FFFH,试将它们连接到8088系统中。并编写测试程序,向所有单元输入一个数据,然后再读出与之比较,若出错则显示"Wrong!",全部正确则显示"OK!"。答:连接如下图所示。测试程序段如下:OK DB ‘OK!’,$WRONG DB ‘Wrong!’,$…MOV AX,6100HMOV ES,AXMOV DI,0MOV CX,1000H;4KMOV AL,55HREP STOSBMOV DI,0MOV CX,1000HREPZ SCASBJZ DISP_OKLEA DX,WRONGDISP:MOV AH,9INT 21HHLTDISP_OK:LEA DXJMPDISP第六章习题及答案什么是接口?其作用是什么?参考答案:接口是CPU与外部设备进行信息交换时,必需的一组逻辑电路及控制软件。主要作用有:〔1信号电平转换〔2数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个人房产抵押借款规范合同版B版
- 双十二数码之路
- 农业电商春节之道
- 2024年跨境电商物流解决方案合作合同
- 2024年版企业债务偿还抵扣协议版B版
- 大巴用车合同(2篇)
- 2025年度餐厨废弃物无害化处理与综合利用合同3篇
- 2024年高压开关设备安装协议
- 专业化眼科义齿2024年加工服务协议模板版B版
- 2025年父母房产处置与子女就业支持协议3篇
- 2025年中国南水北调集团限公司总部招聘工作人员(27人)高频重点提升(共500题)附带答案详解
- 缝纫技能培训课件
- 2024年新技术、新产品、新工艺、新材料的应用培训课件
- 2024年销售岗位工作总结
- 数字化解决方案设计师职业技能竞赛参考试题库(含答案)
- 2025新年春节专用对联蛇年春联带横批
- 2025年中联重科公司发展战略和经营计划
- Unit8 Chinese New Year 第一课时(说课稿)-2024-2025学年译林版(三起)英语六年级上册
- JGJT46-2024《施工现场临时用电安全技术标准》条文解读
- 半结构化面试题100题
- 服装厂班组长培训
评论
0/150
提交评论