微机原理与接口技术复习题2014级_第1页
微机原理与接口技术复习题2014级_第2页
微机原理与接口技术复习题2014级_第3页
微机原理与接口技术复习题2014级_第4页
微机原理与接口技术复习题2014级_第5页
已阅读5页,还剩20页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1/25微机原理与接口技术复习题一、定义一个带符号的字节数组,数组的长度元素个数至少为10,然后求该数组各元素的和,结果保存到字类型的变量中。DATASEGMENTARRAYDB23,24,26,72,92,20,29,28,25,26,32COUNTEQUARRAYRESULTDWDATAENDSCODESEGMENTASSUMECSCODE,DSDATAMAINMOVAX,DATAMOVDS,AXLEABX,ARRAYMOVCX,COUNTMOVAX,0GOONADDAL,BXADCAH,0INCBXLOOPGOONMOVRESULT,AXMOVAH,4CHINT21HCODEENDSENDMAIN二、把一个字节类型的无符号数乘以20,乘积保存到字类型的变量中,要求采用加法和移位指令完成该乘法运算,不能使用乘法指令。DATASEGMENTC1DB2RESULTDWDATAENDS2/25CODESEGMENTASSUMECSCODE,DSDATABEGINMOVAX,DATAMOVDS,AXMOVAL,C1MOVAH,0SHLAX,1SHLAX,1MOVBX,AXSHLAX,1SHLAX,1ADDAX,BXMOVRESULT,AXMOVAH,4CHINT21HCODEENDSENDBEGIN三、对字节变量X1和X2分别进行初始化,然后求它们的无符号乘积和带符号乘积,并将运算结果分别存入字变量M1和M2中。DATASEGMENTX1DB10X2DB20M1DWM2DWDATAENDSASSUMECSCODE,DSDATABEGINMOVAX,DATAMOVDS,AXMOVAL,X1MOVAH,0MULX23/25MOVM1,AXMOVAL,X1MOVAH,0IMULX2MOVM2,AXMOVAH,4CHINT21HCODEENDSENDBEGIN四、定义一个带符号的字节数组,数组的长度元素个数至少为10,然后从中找出最小元素和最大元素,并把它们分别保存到字节变量X1和X2中。DATASEGMENTARRAYDW94,175,22,214,400DW1,500,300,33,20,3COUNTEQUARRAY/2X1DW最小元素X2DW最大元素DATAENDSCODESEGMENTASSUMECSCODE,DSDATABEGINMOVAX,DATAMOVDS,AXLEABX,ARRAYMOVAX,BXMOVDX,BXMOVCX,COUNTMAXCMPDX,BXJGEMIN大于或等于转移MOVDX,BX4/25MINCMPAX,BXJLESKIP小于或等于转移MOVAX,BXSKIPINCBXINCBXLOOPMAXMOVX1,AXMOVX2,DXMOVAH,4CHINT21HCODEENDSENDBEGIN五、定义两个字节类型的数组,统计既属于第一个数组又属于第二个数组的元素个数,统计结果保存到变量RESULT中。DATASEGMENTARRY1DB1,2,3,4,5,6,7,8,9,10C1EQUARRY1ARRY2DB0,2,3,7,6,8,9,4,2,22C2EQUARRY2RESULTDB0DATAENDSCODESEGMENTASSUMECSCODE,DSDATASTARTMOVAX,DATAMOVDS,AXMOVCX,C1LEASI,ARRY1GOONLEABX,ARRY25/25MOVDX,C2MOVAL,SICALLCOUNTERINCSILOOPGOONMOVAH,4CHINT21HCOUNTERPROCNEXTDECDXCMPAL,BXJEADDONEINCBXCMPDX,0JNENEXTJMPEXITADDONEINCRESULTEXITRETCOUNTERENDPCODEENDSENDSTART六、对无符号字变量X1和X2分别进行初始化,然后采用辗转相除法求它们的最大公约数,结果保存到字变量RESULT中。DATASEGMENTX1DW60X2DW75RESULTDWDATAENDSCODESEGMENTASSUMECSCODE,DSDATABEGINMOVAX,DATA6/25MOVDS,AXMOVAX,X1MOVBX,X2CMPAX,BX;比较前者是否大于后者以便相除JAEGOON无符号,大于或等于转移XCHGAX,BX前者小于后者则交换GOONMOVDX,0DIVBX对于(DX,AX)/SRC,结果保留在余数DX和商AX中MOVAX,BX将除数放在被除数中MOVBX,DX将余数放在除数中,完成辗转CMPDX,0对余数位置进行判断,如果等于0则结束运算JNEGOONMOVRESULTAXMOVAH,4CHINT21HCODEENDSENDBEGIN七、对字节变量VALUE进行初始化,然后从一个给定的字节数组中查找与该变量等值的元素,数组的长度保存在变量LEN中。如果找到,则把该元素从数组中删除,并且修改数组的长度;如果未找到,则不做任何处理。DATASEGMENTARYDB1,2,3,4,5,6,7,8,9,10LENEQUARYVALUEDB10DATAENDSCODESEGMENTASSUMECSCODE,DSDATA,ESDATABEGINMOVAX,DATAMOVDS,AXMOVES,AXMOVAX,VALUE7/25LEADI,ARYMOVCX,LENCLDREPNESCASBJNESTOPCMPCX,0JESKIPMOVSI,DIDECDIREPMOVSBSKIPDECLENSTOPMOVAH,4CHINT21HCODEENDSENDBEGIN八、定义一个带符号的字节数组,数组的长度元素个数至少为10。然后将该数组中的正、负数分开,正数和零存入BUF1缓冲区,负数存入BUF2缓冲区。DATASEGMENTARRAYDB1,2,3,1,2,3,0,4,5,6COUNTEQUARRY1BUF1DB5DUPBUF2DB5DUPDATAENDSCODESEGMENTASSUMECSCODE,DSDATASTARTMOVAX,DATAMOVDS,AXLEASI,ARRAYMOVCX,COUNT将长度放到CX中GOONMOVAL,SIMOVAH,08/25MAXCMPAX,0JLEMINMOVBUF1,ALJMPSKIPMINMOVBUF2,ALSKIPINCSILOOPGOONMOVAH,4CHINT21HCODEENDSENDSTART九、按从小到大的顺序以十进制形式在屏幕上显示110的平方,相邻两个数之间以空格分隔。DATASEGMENTASCDB5DUPDATAENDSCODESEGMENTASSUMECSCODE,DSDATAMAINMOVAX,DATAMOVDS,AXMOVBL,1GOONMOVAL,BLMULAL获得1,并自乘CALLOUTPUTCMPAX,100JAESTOPINCBLJMPGOONSTOP9/25MOVAH,4CHINT21HOUTPUTPROCPUSHAXPUSHBX将BX送入堆栈保存LEASI,ASC4将指针指向保存十进制各个位的数组的最末尾MOVBX,10MOVCX,0NEXTMOVDX,0初始化DX,用作记录每次的余数DIVBXAX除以BX,即获得商放在AX中,DX放余数ADDDL,48将余数,即最末尾的数直接转换为ASC码对应的数MOVSI,DLDECSIINCCXCMPAX,0JNENEXTSHOWINCSIMOVDL,SIMOVAH,2INT21HLOOPSHOWMOVDL,空格MOVAH,2INT21HPOPBXPOPAXRETOUTPUTENDPCODEENDSENDMAIN十、按从小到大的顺序以十进制形式在屏幕上显示FIBONACCI数列100以内各项的值,相邻两项之间以空格分隔。其中第1项FIB11,第2项FIB21,以后各项按下列公式计算10/25FIBNFIBN2FIBN1N2十一、从键盘输入一个字符串,然后将其中所有的小写字母转换成对应的大写字母,并在屏幕上显示转换后的字符串。DATASEGMENTSTRINGDB100DBDB100DUPDATAENDSCODESEGMENTASSUMECSCODE,DSDATA11/25BEGINMOVAX,DATAMOVDS,AXLEADX,STRING将字符串的偏移地址放入DXMOVAH0AH调用10号功能输入一个字符串INT21HMOVCL,STRING1将字符串的长度放入CLMOVCH,0LEASI,STRING2将指针指向字符串的内容GOONMOVAL,SI一个一个地读取内容CMPAL,AJBSKIP小于ACMPAL,ZJASKIP大于ZSUBAL,32大于A且小于Z的统一减32,即变大写SKIPMOVDL,AL将前面没有在A,Z范围的普通字符放入DL准备输出MOVAH,02H调用2号功能输出INT21HINCSI指针下移准备下一个LOOPGOONMOVAH,4CHINT21HCODEENDSENDBEGIN十二、从键盘输入一个字符串,统计其中大写字母、小写字母和数字字符的个数,并将统计结果分别存入变量X1、X2和X3中。DATASEGMENTSTRDB100最多可输入的字符数DB实际输入的字符数DB100DUP存放输入的字符数X1DB0大写字母X2,DB0小写字母12/25X3DB0数字字符DATAENDSCODESEGMENTASSUMECSCODE,DSDATASTARTMOVAX,DATAMOVDS,AXLEADX,STR输入一个字符串MOVAH,0AHINT21HMOVCL,STR1MOVCH,0LEASI,STR2GOONCMPSI,A65与A做比较JAEBIGORSMALL无符号,大于或等于INCX3BIGORSMALLCMPSI,Z90JBEADDBIG无符号,小于或等于转移CMPSI,A97JAESMALLINCX3JMPSTOPSMALLCMPSI,Z122JBEADDSMALLINCX3JMPSTOPADDBIGINCX1JMPSTOPADDSMALLINCX2JMPSTOP13/25STOPINCSILOOPGOONMOVAH,4CHINT21HCODEENDSENDSTART十三、用某个十进制数对字变量VALUE进行初始化,然后将其值转换为十六进制数并在屏幕上输出。DATASEGMENTVALUEDW12345DATAENDSCODESEGMENTASSUMECSCODE,DSDATABEGINMOVAX,DATAMOVDS,AXMOVBX,VALUEMOVCX,4GOONROLBX,1ROLBX,1ROLBX,1ROLBX,1MOVDX,BX将数字取出处理,原数据不变ANDDL,0FH单独抽取最低那位CMPDL,9和9比较看看是要转字母还是直接输出数字JBESKIP小于或等于9,即纯数字直接转ASC码ADDDL,77是ASC数字和字母之间的差SKIPADDDL,30H转ASC码MOVAH,2INT21HLOOPGOON14/25ADDDL,”H”转ASC码MOVAH,2INT21HMOVAH,4CHINT21HCODEENDSENDBEGIN十四、从键盘输入一个不超过4位的十进制数,把该数的值保存到变量VALUE中。要求程序能对非法输入指按下了非数字键进行检测,并在屏幕上显示该十进制数,当用户按回车键时输入结束。DATASEGMENTVALUEDWDATAENDSCODESEGMENTASSUMECSCODE,DSDATABEGINMOVAX,DATAMOVDS,AXMOVBX,0用作累加MOVCX,4循环计数NEXTMOVAH,7键盘输入字符无回显INT21HCMPAL,ODH和回车做比较,如果相同则表示输入结束JESTOPCMPAL,0和0做比较,小于则不输入JBNEXTCMPAL,9和9做比较,大于则不输入JANEXTMOVDL,AL纯数字直接输出MOVAH,2INT21HANDAL,0FHCALLMUL1015/25MOVAH,0ADDBX,AX累加LOOPNEXTSTOPMOVVALUE,BX将数值赋给VALUEMOVAH,4CHINT21HMUL10PROCSALBX,1乘2MOVDX,BXSALBX,1乘4SALBX,1乘8ADDBX,DX扩大十倍RETMUL10ENDPCODEENDSENDBEGIN十五、某微型机的中断系统由3片8259A组成,以级联方式进行连接。其中作为主片的8259A的端口地址为20H和21H,工作方式为特殊完全嵌套、电平触发、缓冲及中断非自动结束,中断类型号为484FH。第一个从片8259A的端口地址为40H和41H,工作方式为完全嵌套、电平触发、缓冲及中断非自动结束,中断类型号为6067H,中断请求输出端INT与主片的IR3连接在一起;第二个从片8259A的端口地址为42H和43H,工作方式为完全嵌套、电平触发、缓冲及中断非自动结束,中断类型号为686FH,中断请求输出端INT与主片的IR5连接在一起。请编写程序分别对上述三个8259A芯片进行初始化。主片的初始化MOVDX,20HMOVAL,00011001BICW1电平触发、缓冲及中断非自动结束OUTDX,ALMOVDX,21HMOVAL,48HICW2中断类型号OUTDX,ALMOVAL,00010100BICW3OUTDX,ALMOVAL,00011101BICW4OUTDX,AL第一个从片16/25MOVDX,40HMOVAL,00011001BICW1OUTDX,ALMOVDX,41HMOVAL,60HICW2OUTDX,ALMOVAL,00000011BICW3与主片的IR3连接在一起OUTDX,ALMOVAL,00001001BICW4OUTDX,AL第二个从片MOVDX,42HMOVAL,00011001BICW1OUTDX,ALMOVDX,43HMOVAL,68HICW2OUTDX,ALMOVAL,00000101BICW3OUTDX,ALMOVAL,00001001BICW4OUTDX,AL十六、8255A以查询方式向打印机输出数据。假设8255A的端口A工作在方式1,数据输出,打印机的BUSY信号连接到PC4,三个端口以及控制寄存器的地址分别为6063H。写出打印机驱动程序,将内存缓冲区BUFFER中的2000个字节的数据发送到打印机输出,请参考教材第253页的例76。DATASEGMENTBUFFERDB2000HDUPDATAENDSCODESEGMENTASSUMECSCODE,DSDATABEGINMOVAX,DATAMOVDS,AXMOVDX,63H获得操作控制口地址17/25MOVAL,10101000B编写控制字OUTDX,AL将控制字写入控制口LEABX,BUFFERMOVCX,2000将要传送的字数放入CXL1MOVDX,62H获得C端口的地址INAL,DX从C端口调回是否忙的值TESTAL,00010000B测试是否正忙JNZL1JNZ为判断ZF是否为0MOVAL,BX将即将传送的字的地址放MOVDX,60H获得端口A,即输出端的地址OUTDX,AL将数据输出INCBX修改地址LOOPL1MOVAH,4CHINT21HCODEENDSENDBEGIN十七、8255A以中断方式向打印机输出数据。假设8255A的端口A工作在方式1,数据输出,其中断请求信号通过PC3连接到8259A的IR2,端口B和端口C不用,三个端口以及控制寄存器的地址为6063H;8259A的工作方式为电平触发、单片、完全嵌套、非缓冲且中断非自动结束,中断类型号为080FH,端口地址为2021H。要求写出主程序和中断服务程序,在主程序中分别对8259A、8255A和中断向量表初始化,在中断服务程序中向打印机输出字符,请参考老师在上课时讲解的例题。DATASEGMENTBUFFERDB2000DUPCOUNTDW2000DATAENDSCODESEGMENTASSUMECSCODE,DSDATAMAINCLICLICLEARINTERRUPT中断标志置0指令使IF0MOVDX,20HMOVAL,00011011BICW1OUTDX,AL18/25MOVDX,21HMOVAL,08HICW2OUTDX,ALMOVAL,00000001BICW4,这里是单片不写ICW3OUTDX,ALINAL,DXANDAL,11111011B设置8259A的中断屏蔽字OUTDX,ALMOVDX,63H获得操作控制口地址,控制器端口是数字最大的6063HMOVAL,10100000B8255A编写控制字OUTDX,AL将控制字写入控制口MOVAL,00000111BPC3,查格式表写出OUTDX,ALMOVDX,SEGPRINT以下都是中断向量表初始化MOVDS,DXMOVDX,OFFSETPRINTMOVAL,0AH设置中断号AL中断号MOVAH,25H设置中断向量INT21H中断向量表初始化到这MOVAX,DATAMOVDS,AXLEABX,BUFFERSTISTISETINTERRUPT中断标志置1指令使IF1;WAIT0CMPCOUNT,0等待中断JNEWAIT0MOVAH,4CHINT21HPRINTPROCMOVAL,BX向A端传送MOVDX,60HOUTDX,ALINCBX下一个字DECCOUNTMOVDX,63H获得操作控制口地址MOVAL,00100000B写OCW3,送中断命令EOI19/25OUTDX,ALSTIIRETPRINTENDPCODEENDSENDBEGIN十八、假设8254的四个端口地址分别为4043H。现在要求计数器0工作在方式2,计数初值为1200H,按二进制计数;计数器1工作在方式0,计数初值为99,按BCD码计数;计数器2工作在方式3,计数初值为3FFH,按二进制计数。请分别写出对该8254三个计数器初始化的程序段以及读取计数器0当前值的程序段,要求把读出结果保存到寄存器AX中。MOVDX,43H获得控制端口MOVAL,00110100B编写控制字OUTDX,AL将控制字写入端口MOVDX,40H选取第一个计数器的控制端口MOVAX,1200H写入值OUTDX,AL低位赋值MOVAL,AHOUTDX,AL高位赋值MOVDX,43H获得控制端口MOVAL,01010001B编写控制字OUTDX,AL将控制字写入端口MOVDX,41H选取第二个计数器的控制端口MOVAL,99写入值OUTDX,ALMOVDX,43H获得控制端口MOVAL,10110110B编写控制字OUTDX,AL将控制字写入端口MOVDX,42H选取第三个计数器的控制端口MOVAX,3FFH写入值OUTDX,AL低位赋值MOVAL,AHOUTDX,AL高位赋值20/25MOVDX,43H获得控制端口MOVAL,11000010B写无效控制字OUTDX,AL将无效控制字写入端口MOVDX,40HINAL,DX读取计数器0的当前值MOVAH,AL先去取出了低位值INAL,DX取出高位值XCHGAH,AL交换位置使值正确十九、已知8254的四个端口地址分别为3F8H3FBH,利用8254的读回命令锁定三个计数器的状态字和当前计数值,然后分别读取这些状态字和计数值。请编写实现上述功能的程序段,要求把三个状态字分别存入变量ST0、ST1和ST2中,三个当前计数值分别存入变量CT0、CT1和CT2中,假设每个计数值均为16位二进制数。DATASEGMENTST0DBST1DBST2DBCT0DWCT1DWCT2DWDATAENDSCODESEGMENTASSUMECSCODE,DSDATASTARTMOVAL,11001110B写控制字OUT3FBH,AL读计数器0的值,放到CTOINAL,3F8HMOVST0,ALINAL,3F8HMOVAH,ALINAL,3F8HXCHGAH,AL21/25MOVCTO,AX读计数器1的值,放到CT1INAL,3F9HMOVST1,ALINAL,3F9HMOVAH,ALINAL,3F9HXCHGAH,ALMOVCT1,AX读计数器2的值,放到CT2INAL,3FAHMOVST2,ALINAL,3FAHMOVAH,ALINAL,3FAHXCHGAH,ALMOVCT2,AXCODEENDSENDSTART二十、利用8254的计数器0和计数器1每秒钟产生一次中断请求,共中断10次,每次中断在屏幕上输出一串字符。假设8254的计数器0和计数器1均工作在方式3,计数器0的时钟信号CLK0由外界引入,其频率为25MHZ,其输出信号OUT0与计数器1的时钟信号CLK1连接,而计数器1的输出信号OUT1被接入8259A的IR0引脚,作为中断请求信号。已知8254的端口地址为4043H;8259A的端口地址为2021H,中断类型号为080FH,工作方式为电平触发、单片、完全嵌套、非缓冲、非自动结束。要求写出主程序和中断服务程序,在主程序中分别对8259A、8254和中断向量表初始化,在中断服务程序中输出字符串,请参考老师在上课时讲解的例题。DATASEGMENTSTRINGDB“THEPROGRAMISINTERRUPTED”,0DH,0AH,”COUNTDB10DATAENDSCODESEGMENTASSUMECSCODE,DSDATA22/25MAINCLIMOVDX,20HMOVAL,00011011BICW1OUTDX,ALMOVDX,21HMOVAL,08HICW2OUTDX,ALMOVAL,00000001BICW4,因为单片不写ICW3OUTDX,ALINAL,DXANDAL,11111110B设置8259A屏蔽字OUTDX,ALMOVDX,43HMOVAL,00110110B写控制字(计数器0,写读后写,方式3,二进制)OUTDX,ALMOVDX,40H写第一个端口的值MOVAX,2500OUTDX,AL输出低位MOVAL,AHOUTDX,AL输出高位MOVDX,SEGINTP以下都是中断向量表初始化MOVDS,DXMOVDX,OFFSETINTPMOVAL,0AHMOVAH,25HINT21H中断向量表初始化到这MOVAX,DATAMOVDS,AXSTI23/25WAIT0CMPCOUNT,0等待中断JNEWAIT0MOVAH,4CHINT21HINTPPROCLEADX,STRINGMOVAH,9调用9号功能显示字符串INT21HDECCOUNT准备下次MOVDX,20HMOVAL,00100000B写OCW2,送中断结束命令EOIOUTDX,ALIRETINTPENDPCODEENDSENDMAIN二十一、利用8237A的通道2实现外设到主存的数据传送。已知主存数据区的首

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论