




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机原理与接口技术复习题一、定义一个无符号的字节数组,数组的长度元素个数至少为10,然后求该数组各元素的和,结果保存到字类型的变量中。DATASEGMENTARRAY1DB2,2,2,2,2,2,2,2,2,2C1EQUARRAY1X1DBDATAENDSCODESEGMENTASSUMEDSDATA,CSCODEMAINMOVAX,DATAMOVDS,AXLEASI,ARRAY1MOVCX,C1MOVDX,0CALLSUMMOVX1,DLMOVAH,4CHINT21HSUMPROCGOONADDDX,SIINCSILOOPGOONRETSUMENDPCODEENDSENDMAIN二、定义一个带符号的字节数组,数组的长度元素个数至少为10,然后分别统计该数组中正数包括零和负数的个数,并将统计结果存入变量X1和X2中。DATASEGMENTARRY1DW1,2,3,1,2,3,0,4,5,6C1EQUARRY1ZHENGSHUDB0FUSHUDB0DATAENDSCODESEGMENTASSUMECSCODE,DSDATASTARTMOVAX,DATAMOVDS,AXLEASI,ARRY1MOVAX,C1将长度放到CX中MOVCL,1SHRAX,CLMOVCX,AX将长度放到CX中MOVDX,0CALLSUMJMPMOVAX,4CHINT21HSUMPROCGOONMOVAX,SICMPAX,0JGEADD1INCFUSHUJMPNEXTADD1INCZHENGSHUNEXTADDSI,2LOOPGOONRETSUMENDPCODEENDSENDSTART三、定义一个带符号的字节数组,数组的长度元素个数至少为10,然后从中找出最小/最大的元素,并把该元素保存到字节变量MIN/MAX中。DATASEGMENTARRYDW2,6,3,11,5,3,7,8,9,4ARRYDW2,1,2,2,5,2,2,2,2,2C1EQUARRYMAXDWMINDWDATAENDSCODESEGMENTASSUMECSCODE,DSDATASTARTMOVAX,DATAMOVDS,AXLEASI,ARRYMOVAX,C1MOVCL,1SHRAX,CLMOVCX,AXMOVDX,MAXCALLFINDMAXMOVMAX,DXMOVDX,0CALLFINDMINMOVMIN,DXJMPMOVAX,4CHINT21HFINDMAXPROCGOONMOVAX,SICMPAX,DXJGCHANGEMAXJMPNEXTCHANGEMAXMOVDX,AXNEXTADDSI,2LOOPGOONRETFINDMAXENDPFINDMINPROCGOON1MOVAX,SICMPDX,AXJLCHANGEMINJMPNEXT1CHANGEMINMOVDX,AXNEXT1ADDSI,2LOOPGOON1RETFINDMINENDPCODEENDSENDSTART四、定义两个字节类型的数组,统计既属于第一个数组又属于第二个数组的元素个数,统计结果保存到变量RESULT中。DATASEGMENTARRY1DB1,2,3,4,5,6,7,8,9,5C1EQUARRY1ARRY2DB0,2,3,7,6,8,9,4,2,0C2EQUARRY2RESULTDB0DATAENDSCODESEGMENTASSUMECSCODE,DSDATASTARTMOVAX,DATAMOVDS,AXMOVCX,C1MOVDX,C2LEASI,ARRY1LEABX,ARRY2GOONMOVAL,SICALLCOUNTERADDDX,10INCSILOOPGOONJMPMOVAX,4CHINT21HCOUNTERPROCNEXTDECDXCMPAL,BXJEADDONEINCBXCMPDX,0JNENEXTSUBBL,10JMPEXITADDONEINCRESULTEXITRETCOUNTERENDPCODEENDSENDSTART五、用某个十进制数对字变量VALUE进行初始化,然后将其值转换为十六进制数并在屏幕上输出。DATASEGMENTVALUEDW20HDATAENDSCODESEGMENTASSUMECSCODE,DSDATABEGINMOVAX,DATAMOVDS,AXMOVBX,VALUEMOVCX,4GOONROLBX,1ROLBX,1ROLBX,1ROLBX,1MOVDX,BX将数字取出处理,原数据不变ANDDL,0FH单独抽取最低那位CMPDL,9和9比较看看是要转字母还是直接输出数字JBESKIP小于或等于9,即纯数字直接转ASC码ADDDL,77是ASC数字和字母之间的差SKIPADDDL,48转ASC码MOVAL,2INT21HLOOPGOONMOVAH,4CHINT21HCODEENDSENDBEGIN六、对无符号字变量X1和X2分别进行初始化,然后采用辗转相除法求它们的最大公约数,结果保存到字变量RESULT中。DATASEGMENTX1DW60X2DW75RESULTDWDATAENDSCODESEGMENTASSUMECSCODE,DSDATABEGINMOVAX,DATAMOVDS,AXMOVAX,X1MOVBX,X2CMPAX,BX比较前者是否大于后者以便相除JAEGOON前者大于后者直接进入辗转相除循环XCHGAX,BX前者小于后者则交换GOONMOVDX,0DIVBX对于(DX,AX)/SRC,结果保留在DX和AX中MOVAX,BX将除数放在被除数中MOVBX,DX将余数放在除数中,完成辗转CMPDX,0对余数位置进行判断,如果等于0则结束运算JNEGOONMOVRESULT,AXMOVAH,4CHINT21HCODEENDSENDBEGIN七、对字节变量VALUE进行初始化,然后从一个给定的字节数组中查找与该变量等值的元素,数组的长度保存在变量LEN中。如果找到,则把该元素从数组中删除,并且修改数组的长度;如果未找到,则不做任何处理。DATASEGMENTARYDB1,2,3,4,5,6,7,8,9,10COUNTEQUARYLENDBCOUNTVALUEDB10DATAENDSCODESEGMENTASSUMECSCODE,DSDATABEGINMOVAX,DATAMOVDS,AXMOVAL,VALUELEADI,ARYMOVCX,COUNTCLDREPNESCASB在数组中找指定的ALJNESTOPCMPCX,0找到相同的值了,测试当前的CX值以便后面使用字符串传送JESKIPMOVSI,DI将DI的地址放到SI中并错开,将DI从相同那个值开始以后的值覆盖到SI中DECDIREPMOVSBSKIPDECLENSTOPMOVAH,4CHINT21HCODEENDSENDBEGIN八、按从小到大的顺序以十进制数的形式在屏幕上显示2N0N7,相邻两个数之间以空格分隔。DATASEGMENTNUMDB5DUPDATASEGMENTCODESEGMENTASSUMECSCODE,DSDATASTARTMOVAX,DATAMOVDS,AXMOVAL,1CALLOUTPUTMOVBL,1MOVAL,1GOONMUL2CALLOUTPUTADDBL,1CMPBL,7JEEXITMOVDL,MOVAH,2INT21HLOOPGOONEXITMOVAH,4CHINT21HOUTPUTPROCPUSHBXMOVBX,10LEASI,NUM4MOVCX,0NEXTMOVDX,0DIVBXADDDL,48MOVSI,DLDECSIINCCXCMPAX,0JNENEXTSHOWINCSIMOVDL,SIMOVAH,2INT21HLOOPSHOWPOPBXRETOUTPUTENDSCODEENDSENDSTART九、按从小到大的顺序以十进制数的形式在屏幕上显示110的平方,相邻两个数之间以空格分隔。DATASEGMENTASCDB5DUPDATAENDSCODESEGMENTASSUMECSCODE,DSDATAMAINMOVAX,DATAMOVDS,AXMOVBL,1GOONMOVAL,BLMULAL获得1,并自乘CALLOUTPUTINCBLCMPBL,10JBEGOONOUTPUTPROCPUSHBX将BX送入堆栈保存MOVBX,10给BX赋值,用作除数,每次除10,获得末尾值LEASI,ASC5将指针指向保存十进制各个位的数组的最末尾MOVCX,0初始化CXNEXTMOVDX,0初始化DX,用作记录每次的余数DIVBXAX除以BX,即获得商放在AX中,DX放余数ADDDL,48将余数,即最末尾的数直接转换为ASC码对应的数值DECSI指针下降MOVSI,DL将值保存到数组中INCCXCX加一用作后面弹出数组里数字个数的依据CMPAX,0用商和0做比较,如果已经小于0说明已经除完了JNENEXTSHOWMOVDL,SI将数组里保存的数依次显示MOVAH,2调用2号方法显示INT21HINCSIMOVDL,空格,空格的ASC码为20HMOVAH,2INT21HPOPBXLOOPSHOWRETOUTPUTENDPCODEENDSENDMAIN十、从键盘输入一个字符串,然后将其中所有的小写字母转换成对应的大写字母,并在屏幕上显示转换后的字符串。DATASEGMENTSTRINGDB100DBDB100DUPDATAENDSCODESEGMENTASSUMECSCODE,DSDATABEGINMOVAX,DATAMOVDS,AXLEADX,STRING将字符串的偏移地址放入DXMOVAH,0AH调用10号功能输入一个字符串INT21HMOVCL,STRING1将字符串的长度放入CLMOVCH,0LEASI,STRING2将指针指向字符串的内容GOONMOVAL,SI一个一个地读取内容CMPAL,97JBSKIP小于ACMPAL,122JASKIP大于ZSUBAL,32大于A且小于Z的统一减32,即变大写SKIPMOVDL,AL将前面没有在A,Z范围的普通字符放入DL准备输出MOVAH,02H调用2号功能输出INT21HINCSI指针下移准备下一个LOOPGOONMOVAH,4CHINT21HCODEENDSENDBEGIN十一、从键盘输入两个字符串,比较它们是否相同。如果相同,则在屏幕上显示字母“Y“;如果不同,则在屏幕上显示字母“N“。DATASEGMENTSTR1DB100,100DUPSTR2DB100,100DUPS1DBPLEASEENTERTHEFRISTSTRINGS2DBPLEASEENTERTHESECONDSTRINGS3DBYS4DBNDATAENDSCODESEGMENTASSUMECSCODE,DSDATA,ESDATABEGINMOVAX,DATAMOVDS,AXMOVES,AXCALLENTERLEADX,S1MOVAH,9INT21HLEADX,STR1MOVAH,10INT21HCALLENTERLEADX,S2MOVAH,9INT21HLEADX,STR2MOVAH,10INT21HMOVCL,STR11CMPCL,STR21JNENOSAMEMOVCH,0LEASI,STR12LEADI,STR22CLDREPZCMPSBJNENOSAMECALLENTERLEADX,S3MOVAH,9INT21HJMPSTOPNOSAMECALLENTERLEADX,S4MOVAH,9INT21HSTOPCALLENTERCALLENTERMOVAH,4CHINT21HENTERPROCMOVAH,22号功能调用MOVDL,0DH回车的ASC码为0DHINT21HMOVDL,0AH换行的ASC码为0AHINT21HRETENTERENDPCODEENDSENDBEGIN十二、从键盘输入一个字符串,统计其中大写字母、小写字母和数字字符的个数,并将统计结果分别存入变量X1、X2和X3中。DATASEGMENTSTRDB100,100DUPX1DB0X2,DB0X3DB0DATAENDSCODESEGMENTASSUMECSCODE,DSDATASTARTLEADX,STR输入一个字符串MOVAH,0AHINT21HMOVDL,0DH输出一个回车换行MOVAH,02HINT21HMOVDL,0AHINT21HLEASI,STRMOVCL,STR1GOONCMPSI,65JAEBIGORSMALLINCX3STOPLOOPGOONBIGORSMALLCMPSI,91JBEADDBIGCMPSI,97JAESMALLINCX3JMPSTOPSMALLCMPSI,122JBEADDSMALLINCX3JMPSTOPADDBIGINCX1JMPSTOPADDSMALLINCX2JMPSTOPMOVAH,4CHINT21HCODEENDSENDSTART十三、编写程序,从键盘输入一个不超过4位的十进制数,把该数的值保存到变量VALUE中。要求程序能对非法输入指按下了非数字键进行检测,并在屏幕上显示该十进制数,当用户按回车键时输入结束。DATASEGMENTVALUEDWDATAENDSCODESEGMENTASSUMECSCODE,DSDATABEGINMOVAX,DATAMOVDS,AXMOVBX,0用作累加MOVCX,4循环计数NEXTMOVAH,7INT21HCMPAL,0DH和回车做比较,如果相同则表示输入结束JESTOPCMPAL,0和0做比较,小于则不输入JBNEXTCMPAL,9和9做比较,大于则不输入JANEXTMOVDL,AL纯数字直接输出INT21HSUBDL,30H将ASC码减48获得等值的数字CALLMUL10MOVDH,0ADDBX,DX累加LOOPNEXTSTOPMOVVALUE,BX将数值赋给VALUEMOVAH,4CHINT21HMUL10PROCPUSHDXSALBX,1乘2MOVDX,BXSALBX,1乘4SALBX,1乘8ADDBX,DX扩大十倍POPDXRETMUL10ENDPCODEENDSENDBEGIN十四、定义一个字节数组,其中所有的元素均为带符号数,数组的长度元素个数至少为10。要求在主程序中使用INT60H调用中断服务程序INTSORT对数组各元素按从小到大的顺序排列,并且主程序使用寄存器BX和DX向中断服务程序传送数组的起始地址和长度。DATASEGMENTARRAYDB5,6,13,9,2,8,7,15,20,4COUNTEQUARRAYDATAENDSCODESEGMENTASSUMECSCODE,DSDATAMAINMOVCX,SEGINTSORTMOVDS,CXMOVCX,OFFSETINTSORTMOVAL,60H设置中断号,AL中断号MOVAH,25H设置中断向量INT21HMOVAX,DATAMOVDS,AXLEABX,ARRAY向中断服务程序传送数组的起始地址MOVDX,COUNT向中断服务程序传送长度INT60HMOVMAX,ALMOVAH,4CHINT21HINTSORTPROC这里写排序程序,参考课本151IRET中断返回INTSORTENDPCODESEGMENTENDMAIN十五、某微型机的中断系统由3片8259A组成,以级联方式进行连接。其中作为主片的8259A的端口地址为20H和21H,工作方式为特殊完全嵌套、电平触发、缓冲及中断非自动结束,中断类型号为484FH。第一个从片8259A的端口地址为40H和41H,工作方式为完全嵌套、电平触发、缓冲及中断非自动结束,中断类型号为6067H,中断请求输出端INT与主片的IR3连接在一起;第二个从片8259A的端口地址为42H和43H,工作方式为完全嵌套、电平触发、缓冲及中断非自动结束,中断类型号为686FH,中断请求输出端INT与主片的IR5连接在一起。请编写程序分别对上述三个8259A芯片进行初始化。MOVDX,20H主片MOVAL,00011001BICW1OUTDX,ALMOVDX,21HMOVAL,48HICW2OUTDX,ALMOVAL,00101000BICW3OUTDX,ALMOVAL,00001101BICW4OUTDX,ALMOVDX,40H从片1MOVAL,00011001BICW1OUTDX,ALMOVDX,41HMOVAL,60HICW2OUTDX,ALMOVAL,00000010BICW3OUTDX,ALMOVAL,00001001BICW4OUTDX,ALMOVDX,42H从片2MOVAL,00011001BICW1OUTDX,ALMOVDX,43HMOVAL,68HICW2OUTDX,ALMOVAL,00000101BICW3OUTDX,ALMOVAL,00001001BICW4OUTDX,AL十六、8255A以查询方式向打印机输出数据。假设8255A的端口A工作在方式1,数据输出,打印机的BUSY信号连接到PC4,三个端口以及控制寄存器的地址分别为6063H。写出打印机驱动程序,将内存缓冲区BUFFER中的2000个字节的数据发送到打印机输出,请参考教材第253页的例76。DATASEGMENTBUFFERDB2000HDUPDATAENDSCODESEGMENTASSUMECSCODE,DSDATASTARTMOVAX,DATAMOVDS,AXMOVDX,63H获得操作控制口地址MOVAL,10101000B编写控制字OUTDX,AL将控制字写入控制口LEABX,BUFFERMOVCX,2000H将要传送的字数放入CXL1MOVDX,62H获得C端口的地址INAL,DX从C端口调回是否忙的值TESTAL,01H测试是否正忙JNZL1JNZ为判断ZF是否为0MOVAL,BX将即将传送的字的地址放MOVDX,60H获得端口A,即输出端的地址OUTDX,AL将数据输出INCBX修改地址LOOPL1MOVAH,4CHINT21HCODEENDSENDSTART十七、8255A以中断方式向打印机输出数据。假设8255A的端口A工作在方式1,数据输出,其中断请求信号通过PC3连接到8259A的IR2,端口B和端口C不用,三个端口以及控制寄存器的地址为6063H;8259A的工作方式为电平触发、单片、完全嵌套、非缓冲且中断非自动结束,中断类型号为080FH,端口地址为2021H。要求写出主程序和中断服务程序,在主程序中分别对8259A、8255A和中断向量表初始化,在中断服务程序中向打印机输出字符,请参考老师在上课时讲解的例题。DATASEGMENTBUFFERDB2000DUPCOUNTDW2000DATAENDSCODESEGMENTASSUMECSCODE,DSDATABEGINCLICLICLEARINTERRUPT中断标志置0指令使IF0MOVDX,20HMOVAL,00011011BICW1OUTDX,ALMOVDX,21HMOVAL,08HICW2OUTDX,ALMOVAL,00000001BICW4,这里是单片不写ICW3OUTDX,ALINAL,DXANDAL,11111011B设置8259A的中断屏蔽字OUTDX,ALMOVDX,63H获得操作控制口地址,控制器端口是数字最大的6063HMOVAL,10100000B编写控制字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,送中断命令EOIOUTDX,ALSTIIRETPRINTENDPCODEENDSENDBEGIN十八、假设8254的四个端口地址分别为3F8H3FBH。现在要求计数器0工作在方式0,计数初值为5000,按二进制计数;计数器1工作在方式1,计数初值为200,按BCD码计数;计数器2工作在方式3,计数初值为160,按二进制计数。请分别写出对该8254三个计数器初始化的程序段以及读取计数器0当前值的程序段,要求把读出结果保存到寄存器AX中。MOVDX,3FBH获得控制端口MOVAL,00110000B编写控制字OUTDX,AL将控制字写入端口MOVDX,3F8H选取第一个计数器的控制端口MOVAX,5000写入值OUTDX,AL低位赋值MOVAL,AHOUTDX,AL高位赋值MOVDX,3FBH获得控制端口MOVAL,01010011B编写控制字OUTDX,AL将控制字写入端口MOVDX,3F9H选取第二个计数器的控制端口MOVAL,200写入值OUTDX,ALMOVDX,3FBH获得控制端口MOVAL,10010110B编写控制字OUTDX,AL将控制字写入端口MOVDX,3FAH选取第三个计数器的控制端口MOVAL,160写入值OUTDX,ALMOVDX,3FBH获得控制端口MOVAL,11000010B写无效控制字OUTDX,AL将无效控制字写入端口MOVDX,3F8HINAL,DX读取计数器0的当前值MOVAH,AL先去取出了低位值INAL,DX取出高位值XCHGAH,AL交换位置使值正确十九、已知8254的四个端口地址分别为3F8H3FBH,利用8254的读回命令锁定三个计数器的状态字和当前计数值,然后分别读取这些状态字和计数值。请编写实现上述功能的程序段,要求把三个状态字分别存入变量ST0、ST1和ST2中,三个当前计数值分别存入变量COUNT0、COUNT1和COUNT2中,假设每个计数值均为16位二进制数。DATASEGMENTST0DBST1DBST2DBCOWT0DWCOWT1DWCOWT2DWDATAENDSCODESEGMENTASSUMECSCODE,DSDATASTARTMOVAL,11001110B写控制字OUT3FBH,ALINAL,3F8HMOVST0,ALINAL,3F8HMOVAH,ALINAL,3F8HXCHGAH,ALMOVCOWTO,AXINAL,3F9HMOVST1,ALINAL,3F9HMOVAH,ALINAL,3F9H读计数器0的值,放到COWTO读计数器1的值,放到COWT1XCHGAH,ALMOVCOWT1,AXINAL,3FAHMOVST2,ALINAL,3FAHMOVAH,ALINAL,3FAHXCHGAH,ALMOVCOWT2,AXCODEENDSENDSTART二十、利用8254的计数器0每秒钟产生一次中断请求,共中断10次,每次中断在屏幕上输出一串字符。假设8254的计数器0工作在方式3,其时钟信号CLK0的频率为25KHZ,其输出信号OUT0被接入8259A的IR2引脚,端口地址为4043H;8259A的工作方式为电平触发、单片、完全嵌套、非缓冲、非自动结束,中断类型号为080FH,端口地址为2021H。要求写出主程序和中断服务程序,在主程序中分别对8259A、8254和中断向量表初始化,在中断服务程序中输出字符串,请参考老师在上课时讲解的例题。DATASEGMENTSTRINGDB“THEPROGRAMISINTERRUPTED”,0DH,0AH,”COUNTDB10DATAENDSCODESEGMENTASSUMECSCODE,DSDATAMAINCLIMOVDX,20HMOVAL,00011011BICW1OUTDX,ALMOVDX,21HMOVAL,08HICW2OUTDX,ALMOVAL,00000001BICW4,因为单片不写ICW3读计数器2的值,放到COWT2OUTDX,ALINAL,DXANDAL,11111011B设置8259A屏蔽字MOVDX,43HMOVAL,00110110B写控制字(计数器0,写读后写,方式3,二进制)OUTDX,ALMOVDX,40H写第一个端口的值MOVAX,2500OUTDX,AL输出低位MOVAL,AHOUTDX,AL输出高位MOVDX,SEGINTP以下都是中断向量表初始化MOVDS,DXMOVDX,OFFSETINTPMOVAL,0AHMOVAH,25HINT21H中断向量表初始化到这MOVAX,DATAMOVDS,AXSTIWAIT0CMPCOUNT,0等待中断JNEWAIT0MOVAH,4CHINT21HINTPPROCLEADX,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 田径三级裁判考试题库及答案
- 第1课 中华文明的起源与早期国家
- 中学校长在2025年秋季学期开学典礼上致辞:在时光里耕耘在成长中绽放
- 2025年高级保育师模考试题(含参考答案)
- 2025年高等数学的考察与解题试题及答案
- 中职美术基础题库及答案
- 万达物业出租管理办法
- 专项保护基金管理办法
- 碳减排贷款管理办法
- 社区楼门长管理办法
- 2025届四川眉山中考历史真题试卷【含答案】
- 2024北京北师大实验中学高二10月月考数学试题及答案
- 子宫腺肌症术后护理查房
- 在制品生产车间管理制度
- 学校口腔健康知识讲座
- 子公司运营规范管理制度
- 医疗美容手术管理制度
- 道路绿化修剪合同范本
- T/CSPSTC 75-2021微动探测技术规程
- 城市轨道交通工程测量技术培训课件
- 2025年数据分析师初级考试试题及答案
评论
0/150
提交评论