




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机原理与接口技术复习题一、 定义一个带符号的字节数组,数组的长度(元素个数)至少为10,然后求该数组各元素的和,结果保存到字类型的变量中。DATA SEGMENTARRAY DB 23,24,26,72,92,20,29,28,25,26,32COUNT EQU $-ARRAYRESULT DW ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATAMAIN:MOV AX,DATAMOV DS,AXLEA BX,ARRAYMOV CX,COUNTMOV AX,0GOON:ADD AL,BXADC AH,0INC BXLOOP GOONMOV RESULT,AXMOV AH,4CHINT 21HCODE ENDSEND MAIN二、 把一个字节类型的无符号数乘以20,乘积保存到字类型的变量中,要求采用加法和移位指令完成该乘法运算,不能使用乘法指令。DATA SEGMENTC1 DB 2RESULT DW ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATABEGIN: MOVAX,DATAMOVDS,AXMOVAL,C1MOVAH,0SHLAX,1SHLAX,1MOVBX,AXSHLAX,1SHLAX,1ADDAX,BXMOVRESULT,AXMOV AH,4CHINT 21HCODE ENDS END BEGIN三、 对字节变量X1和X2分别进行初始化,然后求它们的无符号乘积和带符号乘积,并将运算结果分别存入字变量M1和M2中。DATA SEGMENTX1 DB -10X2 DB 20M1 DW ?M2 DW ?DATA ENDSASSUME CS:CODE,DS:DATABEGIN:MOV AX,DATAMOV DS,AXMOV AL,X1MOV AH,0MUL X2MOV M1,AXMOV AL,X1MOV AH,0IMUL X2MOV M2,AXMOV AH,4CHINT 21HCODE ENDSEND BEGIN四、 定义一个带符号的字节数组,数组的长度(元素个数)至少为10,然后从中找出最小元素和最大元素,并把它们分别保存到字节变量X1和X2中。DATA SEGMENTARRAY DW -94,175,22,214,400 DW 1,500,300,-33,20,3COUNT EQU ($-ARRAY)/2X1 DW ?;最小元素X2 DW ?;最大元素DATA ENDS CODE SEGMENTASSUME CS:CODE,DS:DATABEGIN:MOV AX,DATAMOV DS,AXLEA BX,ARRAYMOV AX,BXMOV DX,BXMOV CX,COUNTMAX:CMP DX,BXJGE MIN;大于或等于转移MOV DX,BXMIN: CMP AX, BXJLE SKIP;小于或等于转移MOV AX, BXSKIP:INC BXINC BXLOOP MAXMOV X1,AXMOV X2,DXMOV AH,4CHINT 21HCODE ENDSEND BEGIN五、定义两个字节类型的数组,统计既属于第一个数组又属于第二个数组的元素个数,统计结果保存到变量RESULT中。DATASEGMENTARRY1DB1,2,3,4,5,6,7,8,9,10C1EQU$-ARRY1ARRY2DB0,2,3,7,6,8,9,4,2,22C2EQU$-ARRY2RESULTDB0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVCX,C1LEASI,ARRY1GOON: LEABX,ARRY2MOVDX,C2MOVAL,SICALLCOUNTERINCSILOOPGOONMOVAH,4CHINT21HCOUNTERPROCNEXT:DECDXCMPAL,BXJEADDONEINCBXCMPDX,0JNENEXTJMPEXITADDONE:INCRESULTEXIT:RETCOUNTERENDPCODEENDSEND START六、对无符号字变量X1和X2分别进行初始化,然后采用辗转相除法求它们的最大公约数,结果保存到字变量RESULT中。DATA SEGMENTX1 DW 60X2 DW 75RESULT DW ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATABEGIN:MOV AX,DATA MOV DS,AX MOV AX,X1 MOV BX,X2 CMP AX,BX;比较前者是否大于后者以便相除 JAE GOON ;无符号,大于或等于转移 XCHG AX,BX ;前者小于后者则交换GOON:MOV DX,0 DIV BX ;对于(DX,AX)/SRC,结果保留在(余数)DX和(商)AX中 MOV AX,BX ;将除数放在被除数中 MOV BX,DX ;将余数放在除数中,完成辗转 CMP DX,0 ;对余数位置进行判断,如果等于0则结束运算 JNE GOON MOV RESULT AX MOV AH,4CH INT 21HCODE ENDSEND BEGIN七、对字节变量VALUE进行初始化,然后从一个给定的字节数组中查找与该变量等值的元素,数组的长度保存在变量LEN中。如果找到,则把该元素从数组中删除,并且修改数组的长度;如果未找到,则不做任何处理。DATA SEGMENTARY DB 1,2,3,4,5,6,7,8,9,10LEN EQU $-ARYVALUE DB 10DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATABEGIN: MOV AX,DATA MOV DS,AX MOV ES,AX MOV AX,VALUE LEA DI,ARY MOV CX,LENCLDREPNE SCASBJNE STOPCMP CX,0JE SKIPMOV SI,DIDEC DIREP MOVSBSKIP: DEC LENSTOP: MOV AH,4CH INT 21H CODE ENDSEND BEGIN八、定义一个带符号的字节数组,数组的长度(元素个数)至少为10。然后将该数组中的正、负数分开,正数和零存入BUF1缓冲区,负数存入BUF2缓冲区。DATA SEGMENT ARRAY DB 1,2,3,-1,-2,-3,0,4,5,6 COUNT EQU $-ARRY1 BUF1 DB 5 DUP(?)BUF2 DB 5 DUP(?)DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA SI,ARRAY MOV CX,COUNT ;将长度放到CX中 GOON: MOV AL,SIMOV AH,0MAX:CMP AX,0JLE MINMOV BUF1,ALJMP SKIPMIN:MOV BUF2,ALSKIP:INC SILOOP GOONMOV AH,4CH INT 21HCODE ENDS END START九、按从小到大的顺序以十进制形式在屏幕上显示110的平方,相邻两个数之间以空格分隔。DATA SEGMENTASC DB 5 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATAMAIN:MOV AX,DATAMOV DS,AXMOV BL,1GOON:MOV AL,BLMUL AL;获得1,并自乘CALL OUTPUTCMP AX,100JAE STOPINC BLJMP GOON STOP: MOV AH,4CH INT 21HOUTPUT PROC PUSH AXPUSH BX;将BX送入堆栈保存LEA SI,ASC+4;将指针指向保存十进制各个位的数组的最末尾MOV BX,10MOV CX,0NEXT:MOV DX,0;初始化DX,用作记录每次的余数DIV BX;AX除以BX,即获得商放在AX中,DX放余数ADD DL,48;将余数,即最末尾的数直接转换为ASC码对应的数MOV SI,DLDEC SIINC CXCMP AX,0JNE NEXTSHOW:INC SIMOV DL,SIMOV AH,2INT 21HLOOP SHOWMOV DL,空格MOV AH,2INT 21HPOP BXPOP AXRETOUTPUT ENDPCODE ENDSEND MAIN十、按从小到大的顺序以十进制形式在屏幕上显示Fibonacci数列100以内各项的值,相邻两项之间以空格分隔。其中第1项Fib(1)1,第2项Fib(2)1,以后各项按下列公式计算:Fib(n)Fib(n2)Fib(n1)n2十一、从键盘输入一个字符串,然后将其中所有的小写字母转换成对应的大写字母,并在屏幕上显示转换后的字符串。DATA SEGMENTSTRING DB 100 DB ? DB 100 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATABEGIN: MOV AX,DATAMOV DS,AXLEA DX,STRING;将字符串的偏移地址放入dxMOV AH 0AH;调用10号功能输入一个字符串INT 21HMOV CL,STRING+1;将字符串的长度放入clMOV CH,0LEA SI,STRING+2;将指针指向字符串的内容GOON:MOV AL,SI;一个一个地读取内容CMP AL,aJB SKIP;小于aCMP AL,zJA SKIP;大于zSUB AL,32;大于a且小于z的统一减32,即变大写SKIP:MOV DL,AL;将前面没有在a,z范围的普通字符放入dl准备输出MOV AH,02H;调用2号功能输出INT 21HINC SI;指针下移准备下一个LOOP GOONMOV AH,4CHINT 21HCODE ENDSEND BEGIN十二、从键盘输入一个字符串,统计其中大写字母、小写字母和数字字符的个数,并将统计结果分别存入变量X1、X2和X3中。DATASEGMENTSTRDB100 ;最多可输入的字符数DB ? ;实际输入的字符数DB 100DUP(?) ;存放输入的字符数X1DB0 ;大写字母X2,DB0 ;小写字母X3DB0 ;数字字符DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEADX,STR ;输入一个字符串MOVAH,0AHINT21HMOVCL,STR+1 MOV CH,0LEA SI,STR+2GOON:CMPSI,A ;65与A做比较JAEBIGORSMALL ;无符号,大于或等于INCX3BIGORSMALL:CMPSI,Z ;90JBEADDBIG ;无符号,小于或等于转移CMPSI,a ;97JAESMALLINCX3JMPSTOPSMALL:CMPSI,z ;122JBEADDSMALLINCX3JMPSTOPADDBIG:INCX1JMPSTOPADDSMALL:INCX2JMPSTOPSTOP:INC SILOOPGOONMOVAH,4CHINT21HCODEENDSENDSTART十三、用某个十进制数对字变量VALUE进行初始化,然后将其值转换为十六进制数并在屏幕上输出。DATA SEGMENT VALUE DW 12345DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATABEGIN:MOV AX,DATAMOV DS,AXMOV BX,VALUEMOV CX,4GOON:ROL BX,1ROL BX,1ROL BX,1ROL BX,1MOV DX,BX ;将数字取出处理,原数据不变AND DL,0FH ;单独抽取最低那位CMP DL,9;和9比较看看是要转字母还是直接输出数字JBE SKIP;小于或等于9,即纯数字直接转ASC码ADD DL,7;7是ASC数字和字母之间的差SKIP:ADD DL,30H;转ASC码MOV AH,2INT 21HLOOP GOONADD DL,”H”;转ASC码MOV AH,2INT 21HMOV AH,4CHINT 21HCODE ENDSEND BEGIN十四、从键盘输入一个不超过4位的十进制数,把该数的值保存到变量VALUE中。要求程序能对非法输入(指按下了非数字键)进行检测,并在屏幕上显示该十进制数,当用户按回车键时输入结束。DATA SEGMENTVALUE DW ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATABEGIN:MOV AX,DATAMOV DS,AX MOV BX,0;用作累加 MOV CX,4;循环计数NEXT: MOV AH,7 ;键盘输入字符无回显 INT 21H CMP AL,ODH;和回车做比较,如果相同则表示输入结束 JE STOP CMP AL,0;和0做比较,小于则不输入 JB NEXT CMP AL,9;和9做比较,大于则不输入 JA NEXT MOV DL,AL;纯数字直接输出 MOV AH,2INT 21H AND AL,0FH CALL MUL10 MOV AH,0 ADD BX,AX;累加 LOOP NEXTSTOP :MOV VALUE,BX;将数值赋给VALUE MOV AH,4CH INT 21HMUL10 PROC SAL BX,1;乘2 MOV DX,BX SAL BX,1;乘4 SAL BX,1;乘8 ADD BX,DX;扩大十倍 RET MUL10 ENDP CODE ENDSEND BEGIN十五、某微型机的中断系统由3片8259A组成,以级联方式进行连接。其中作为主片的8259A的端口地址为20H和21H,工作方式为特殊完全嵌套、电平触发、缓冲及中断非自动结束,中断类型号为484FH。第一个从片8259A的端口地址为40H和41H,工作方式为完全嵌套、电平触发、缓冲及中断非自动结束,中断类型号为6067H,中断请求输出端INT与主片的IR3连接在一起;第二个从片8259A的端口地址为42H和43H,工作方式为完全嵌套、电平触发、缓冲及中断非自动结束,中断类型号为686FH,中断请求输出端INT与主片的IR5连接在一起。请编写程序分别对上述三个8259A芯片进行初始化。;主片的初始化MOV DX,20HMOV AL,00011001B;ICW1 电平触发、缓冲及中断非自动结束OUT DX,ALMOV DX,21HMOV AL,48H;ICW2 中断类型号OUT DX,ALMOV AL,00010100B;ICW3OUT DX,ALMOV AL,00011101B;ICW4OUT DX,AL ; 第一个从片MOV DX,40HMOV AL,00011001B;ICW1OUT DX,ALMOV DX,41HMOV AL,60H;ICW2OUT DX,ALMOV AL,00000011B;ICW3 与主片的IR3连接在一起OUT DX,ALMOV AL,00001001B;ICW4OUT DX,AL; 第二个从片MOV DX,42HMOV AL,00011001B;ICW1OUT DX,ALMOV DX,43HMOV AL,68H;ICW2OUT DX,ALMOV AL,00000101B;ICW3OUT DX,ALMOV AL,00001001B ;ICW4OUT DX,AL 十六、8255A以查询方式向打印机输出数据。假设8255A的端口A工作在方式1,数据输出,打印机的BUSY信号连接到PC4,三个端口以及控制寄存器的地址分别为6063H。写出打印机驱动程序,将内存缓冲区BUFFER中的2000个字节的数据发送到打印机输出,请参考教材第253页的例7.6。DATA SEGMENTBUFFER DB 2000H DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATABEGIN: MOV AX,DATAMOV DS,AXMOV DX,63H;获得操作控制口地址MOV AL,10101000B;编写控制字OUT DX,AL;将控制字写入控制口LEABX,BUFFERMOV CX,2000;将要传送的字数放入CXL1: MOV DX,62H;获得C端口的地址 IN AL,DX;从C端口调回是否忙的值 TEST AL,00010000B;测试是否正忙 JNZ L1;JNZ为判断ZF是否为0 MOV AL,BX;将即将传送的字的地址放 MOV DX,60H;获得端口A,即输出端的地址 OUT DX,AL;将数据输出 INC BX;修改地址LOOP L1MOV AH,4CHINT 21HCODE ENDSEND BEGIN十七、8255A以中断方式向打印机输出数据。假设8255A的端口A工作在方式1,数据输出,其中断请求信号通过PC3连接到8259A的IR2,端口B和端口C不用,三个端口以及控制寄存器的地址为6063H;8259A的工作方式为电平触发、单片、完全嵌套、非缓冲且中断非自动结束,中断类型号为080FH,端口地址为2021H。要求写出主程序和中断服务程序,在主程序中分别对8259A、8255A和中断向量表初始化,在中断服务程序中向打印机输出字符,请参考老师在上课时讲解的例题。DATA SEGMENTBUFFER DB 2000 DUP(?)COUNT DW 2000DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATAMAIN: CLI;CLI(CLEARINTERRUPT)中断标志置0指令使IF=0. MOV DX,20H MOV AL,00011011B;ICW1 OUT DX,AL MOV DX,21H MOV AL,08H;ICW2 OUT DX,AL MOV AL,00000001B;ICW4,这里是单片不写ICW3OUT DX,AL IN AL,DX AND AL,11111011B;设置8259A的中断屏蔽字 OUT DX,AL MOV DX,63H;获得操作控制口地址,控制器端口是数字最大的60-63H MOV AL,10100000B;8255A编写控制字 OUT DX,AL;将控制字写入控制口 MOV AL,00000111B;PC3,查格式表写出OUT DX,AL MOV DX,SEG PRINT;以下都是中断向量表初始化 MOV DS,DX MOV DX,OFFSET PRINT MOV AL,0AH;设置中断号AL=中断号 MOV AH,25H;设置中断向量 INT 21H;中断向量表初始化到这 MOV AX,DATA MOV DS,AX LEA BX,BUFFER STI;STI(SETINTERRUPT)中断标志置1指令使IF=1;WAIT0:CMP COUNT,0;等待中断 JNE WAIT0 MOV AH,4CH INT 21HPRINT PROC MOV AL,BX;向A端传送 MOV DX,60H OUT DX,AL INC BX;下一个字 DEC COUNT MOV DX,63H;获得操作控制口地址MOV AL,00100000B;写OCW3,送中断命令EOI OUT DX,AL STI IRET PRINT ENDPCODE ENDSEND BEGIN十八、假设8254的四个端口地址分别为4043H。现在要求计数器0#工作在方式2,计数初值为1200H,按二进制计数;计数器1#工作在方式0,计数初值为99,按BCD码计数;计数器2#工作在方式3,计数初值为3FFH,按二进制计数。请分别写出对该8254三个计数器初始化的程序段以及读取计数器0#当前值的程序段,要求把读出结果保存到寄存器AX中。MOV DX,43H;获得控制端口MOV AL,00110100B;编写控制字OUT DX,AL;将控制字写入端口MOV DX,40H;选取第一个计数器的控制端口MOV AX,1200H;写入值OUT DX,AL;低位赋值MOV AL,AHOUT DX,AL;高位赋值MOV DX,43H;获得控制端口MOV AL,01010001B;编写控制字OUT DX,AL;将控制字写入端口MOV DX,41H;选取第二个计数器的控制端口MOV AL,99;写入值OUT DX,ALMOV DX,43H;获得控制端口MOV AL,10110110B;编写控制字OUT DX,AL;将控制字写入端口MOV DX,42H;选取第三个计数器的控制端口MOV AX,3FFH;写入值OUT DX,AL;低位赋值MOV AL,AHOUT DX,AL;高位赋值MOV DX,43H;获得控制端口MOV AL,11000010B;写无效控制字OUT DX,AL;将无效控制字写入端口MOV DX,40HIN AL,DX;读取计数器0的当前值MOV AH,AL;先去取出了低位值IN AL,DX;取出高位值XCHG AH,AL;交换位置使值正确十九、已知8254的四个端口地址分别为3F8H3FBH,利用8254的读回命令锁定三个计数器的状态字和当前计数值,然后分别读取这些状态字和计数值。请编写实现上述功能的程序段,要求把三个状态字分别存入变量ST0、ST1和ST2中,三个当前计数值分别存入变量CT0、CT1和CT2中,假设每个计数值均为16位二进制数。DATA SEGMENTST0 DB ?ST1 DB ?ST2 DB ?CT0DW?CT1DW?CT2DW?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAL,11001110B;写控制字OUT 3FBH,AL;读计数器0的值,放到CTOIN AL,3F8HMOV ST0,ALINAL,3F8HMOV AH,ALIN AL,3F8HXCHGAH,ALMOVCTO,AX;读计数器1的值,放到CT1IN AL,3F9HMOVST1,ALIN AL,3F9HMOVAH,ALIN AL,3F9HXCHG AH,ALMOVCT1,AX;读计数器2的值,放到CT2IN AL,3FAHMOVST2,ALIN AL,3FAHMOVAH,ALIN AL,3FAHXCHG AH,ALMOV CT2,AXCODEENDSENDSTART二十、利用8254的计数器0#和计数器1#每秒钟产生一次中断请求,共中断10次,每次中断在屏幕上输出一串字符。假设8254的计数器0#和计数器1#均工作在方式3,计数器0#的时钟信号CLK0由外界引入,其频率为2.5MHz,其输出信号OUT0与计数器1#的时钟信号CLK1连接,而计数器1#的输出信号OUT1被接入8259A的IR0引脚,作为中断请求信号。已知8254的端口地址为4043H;8259A的端口地址为2021H,中断类型号为080FH,工作方式为电平触发、单片、完全嵌套、非缓冲、非自动结束。要求写出主程序和中断服务程序,在主程序中分别对8259A、8254和中断向量表初始化,在中断服务程序中输出字符串,请参考老师在上课时讲解的例题。DATA SEGMENTSTRING DB “THE PROGRAM IS INTERRUPTED”,0DH,0AH,”$”COUNT DB 10DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATAMAIN : CLI MOV DX,20H MOV AL,00011011B;ICW1 OUT DX,AL MOV DX,21H MOV AL,08H;ICW2 OUT DX,AL MOV AL,00000001B;ICW4,因为单片不写ICW3 OUT DX,AL IN AL,DX AND AL,11111110B;设置8259A屏蔽字 OUT DX,AL MOV DX,43H MOV AL,00110110B;写控制字(计数器0,写读后写,方式3,二进制)OUT DX,AL MOV DX,40H;写第一个端口的值 MOV AX,2500 OUT DX,AL;输出低位 MOV AL,AH OUT DX,AL;输出高位 MOVDX,SEGINTP;以下都是中断向量表初始化 MOVDS,DX MOVDX,OFFSETINTP MOV AL,0AH MOV AH,25H INT 21H ;中断向量表初始化到这 MOV AX,DATA MOV DS,AX STIWAIT0: CMP COUNT,0;等待中断 JNE WAIT0 MOV AH,4CH INT 21HINTP PROC LEA DX,STRING MOV AH,9;调用9号功能显示字符串 INT 21H DEC COUNT;准备下次 MOV DX,20H MOV AL,00100000B;写OCW2,送中断结束命令EOI OUT DX,AL IRET INTP ENDP CODE ENDS END MAIN二十
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025药房药店员工考试试试题及答案
- (新)2025年急救相关知识考试题库及答案
- 镁精炼工岗位操作技能考核试卷及答案
- 钻井协作工设备调试考核试卷及答案
- 幕墙防裂、防渗漏及防水质量保障措施
- 中国观光车市场发展现状与未来趋势研究报告(2025-2026)
- 2025年传染病信息报告管理及重点传染病防控培训试题及答案
- 2025新冠疫情消毒试题及答案
- 物料输送及烟气净化工数字化技能考核试卷及答案
- 民宿礼仪培训课件
- 2025年教科版新教材科学三年级上册全册教案设计(含教学计划)
- 从+“心”+出发遇见更好的自己-开学第一课暨心理健康教育主题班会-2025-2026学年高中主题班会
- 2025年苏教版新教材数学二年级上册教学计划(含进度表)
- 大众文化概论-课件
- 安全风险辨识与分级管控制度
- 【无线射频电路】-微波笔记·糖葫芦低通滤波器的设计
- 机械加工切削参数表
- 供应商现场考核记录
- 视频拍摄入门(上)课件
- 基础培训s8课件
- 美林时钟的自我救赎
评论
0/150
提交评论