微机原理接口课程设计.doc_第1页
微机原理接口课程设计.doc_第2页
微机原理接口课程设计.doc_第3页
微机原理接口课程设计.doc_第4页
微机原理接口课程设计.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

实验一 字符串匹配设计一、设计要求:编写程序,实现两个字符串比较。如相同,则显示“MATCH”,否则,显示“NOMATCH”。二、设计目的:掌握提示信息的使用方法及键盘输入信息的用法。三、程序框图:开始初始化寄存器显示提示信息输入串1串2串1的第一个字符在串2中匹配吗串2完?YYY串1完?显示匹配串2完?显示不匹配YY下一个字符匹配?串1指回第一个字符串2指向下一个字符返回DOS四、程序清单:DATA SEGMENTBUF1 DB 10 ;字符串键盘输入(0A号功能)DB 0DB 10 DUP(0);字符串1的缓冲区BUF2 DB 10DB 0DB 10 DUP(0);字符串2的缓冲区XS1 DB PLEASE INPUT STRING1!$XS2 DB PLEASE INPUT STRING2!$DSAMEDB MATCH!,$DDIFF DB NO MATCH!,$DATA ENDSCODE SEGMENT ASSUME CS:CODE, DS:DATASTART:MOV AX,DATAMOV DS,AXMOV ES,AX LEA DX,XS1 ;显示提示信息1,存放在DS:DXMOV AH,09HINT 21HCALL DISPLEA DX,BUF1;调用写字符串DS:DX指向缓冲区MOV AH,0AHINT 21HCALL DISPLEA DX,XS2 ;显示提示信息2,存放在DS:DXMOV AH,09HINT 21HCALL DISPLEA DX,BUF2 ;调用写字符串DS:DX指向缓冲区MOV AH,0AHINT 21HCALL DISPLEA SI,BUF1 ;SI指向BUF1的偏移地址LEA DI,BUF2;DI指向BUF2的偏移地址MOV CL,SI+1MOV CH,0;循环次数MOV DL,DI+1MOV DH,0L1:MOV AL,SI+2CMP AL,DI+2;字符串1的第一个字符在字符串2中是否匹配JZ L2;第一个字符匹配成功到L2L3: INC DI;第一个字符匹配不成功DI加1,DX减1DEC DXJZ DIFF;DX为0时说明没有匹配的结束JMP L1;字符串2没完,重新匹配L2:DEC CX;前一个成功则CX减1JZ SAME;CX为0则完全匹配DEC DX;DX减1JZ DIFF;DX为0则不匹配INC SI;DX不为0,CX不为0则比较下一个INC DIMOV AL,SI+2;下一个字符比较CMP AL,DI+2JZ L2;相等跳到L2继续比较下一个DEC DX;不相等DX减1JZ DIFF;DX为0则没有匹配的,结束LEA SI,BUF1;DX不为0,SI回0,CX回初始值MOV CL,SI+1MOV CH,0INC DI;DI指向下一个字符JMP L1;跳到L1重新比较SAME:LEA DX,DSAMEMOV AH,09HINT 21HJMP EXITDIFF:LEA DX,DDIFFMOV AH,09HINT 21HEXIT:MOV AH,4CHINT 21HDISPPROC ;调用单字符显示功能显示回车和换行MOV DL,0DHMOV AH,02HINT 21HMOV DL,0AHMOV AH,02HINT 21HRETDISP ENDPCODE ENDSEND START五、运行结果:实验二 从键盘输入数据并显示设计一、设计要求:编写程序,将键盘接收到的四位十六进制数转换为等值的二进制数,再显示在屏幕上。二、设计目的:掌握接收键盘数据的方法,并了解将键盘数据显示时须转换为ASCII码的原理。三、程序框图:开始SI指向第一个字符初始化寄存器显示提示信息CX=4,AL=SIAL是0-9?Y接收字符串(4字符)AL是A-F?调用转换子函数结果写入BXAL是a-f?AL=AL-30HYAL=AL-7Y送CL=16YAL=AL-WBX左移一位是1?显示0显示1AL=0BX左移4位送CL=0?AL移入BXY返回DOSCX=0?Y四、程序清单:返回DATASEGMENT BUF DB 5;字符串键盘输入(0A DB ?;字符串的缓冲区 DB 5 DUP(?)XS DB INPUT FOUR DATA(0-F),0DH,0AH,$DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX MOV DX,OFFSET XS ;显示提示信息 MOV AH,09H INT 21H CALL CONVERTMOV CL,16L2:RCL BX,1JC S1;是1则转到S1MOV DL,0 ;0执行此条语句 JMP S2 S1:MOV DL,1S2:MOV AH,02HINT 21HLOOP L2MOV AH,4CHINT 21HCONVERT PROCMOV DX,OFFSET BUF ;等待输入字符串 MOV AH,0AH INT 21H CALL DISP;显示回车和换行 MOV AX,DX ADD AX,2 MOV SI,AX ;SI指向输入的字符缓冲区MOV CX,4 ;四个十六进制数MOV BX,0;BX存放四位十六进制数转换为二进制后的数L1:PUSH CXMOV AL,SIINC SICMP AL,0JB WRONGCMP AL,9JA AGAIN1SUB AL,0;说明是0-9MOV CL,4ROL BX,CLADD BL,ALPOP CXLOOP L1JMP FINISHAGAIN1: CMP AL,AJB WRONG ;小于则输入错误CMP AL,FJA AGAIN2 ;大于则再次判断SUB AL,7;说明是A-FMOV CL,4ROL BX,CLADD BL,ALPOP CXLOOP L1JMP FINISHAGAIN2: CMP AL,aJB WRONG ;小于则输入错误CMP AL,fJA WRONG ;大于则输入错误SUB AL,W ;说明是a-fMOV CL,4ROL BX,CLADD BL,ALPOP CXLOOP L1JMP FINISH WRONG:MOV CL,4ROL BX,CLPOP CXLOOP L1FINISH:RET CONVERT ENDPDISPPROC ;调用单字符显示功能显示回车和换行PUSH DXMOV DL,0DHMOV AH,02HINT 21HMOV DL,0AHMOV AH,02HINT 21HPOP DXRETDISP ENDPCODEENDSEND START三、运行结果:实验三 字符和数据的显示程序设计一、设计要求:显示信息“INPUT STRING,THE END FLAG IS ENTER”,在接收字符。如为0-9,则计数器加1,并显示数据;如为非数字,则直接显示,但不计数。二、设计目的:掌握字符和数据的显示方法。三、程序框图:开始初始化寄存器显示提示信息输入1字符到AL是回车键?Y显示数字、字符和数字个数等信息是数字?Y是字符Count加1返回DOS写入数字缓冲区写入字符缓冲区四、程序清单:DATASEGMENT BUF1 DB 50;字符串键盘输入(0A) DB ?;字符存放区 DB 50 DUP(?)BUF2 DB 50 DB ?;数字存放处 DB 50 DUP(?)COUNT DB 0,0,$XS1 DB INPUT STRING,THE END FIAG IS ENTER,0DH,0AH,$XS2 DB THERE ARE ,$XS3DB NUMBERS,0DH,0AH,$DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX MOV DX,OFFSET XS1 ;显示提示信息 MOV AH,09H INT 21H MOV DI,OFFSET BUF1ADD DI,2MOV SI,OFFSET BUF2ADD SI,2L1:MOV AH,01HINT 21HCMP AL,0DH ;比较是否为#JZ OVERCMP AL,0 JB ZIFU CMP AL,9 JA ZIFU MOV SI,AL ;是数字的处理程序INC SIINC COUNTJMP L1ZIFU:MOV DI,AL ;是字符的处理程序INC DIJMP L1OVER:CALL DISP ;结束显示各种信息MOV BYTE PTRSI,$MOV BYTE PTRDI,$MOV DX,OFFSET BUF1ADD DX,02H MOV AH,09H INT 21H CALL DISP MOV DX,OFFSET BUF2 ADD DX,02H MOV AH,09H INT 21H CALL DISPCALL CONVERTMOV DX,OFFSET XS2 ;显示提示信息 MOV AH,09H INT 21H MOV DX,OFFSET COUNT ;显示提示信息 MOV AH,09H INT 21HMOV DX,OFFSET XS3 ;显示提示信息 MOV AH,09H INT 21H MOV AH,4CHINT 21HCONVERT PROC ;把COUNT第一位的16进制数转换为两个十进制数MOV AL,00HADD AL,COUNTDAA MOV AH,ALAND AL,0FHADD AL,30HMOV COUNT+1,ALMOV AL,AHMOV CL,4SHR AL,CLMOV AL,30HMOV COUNT,ALRETCONVERT ENDPDISPPROC ;调用单字符显示功能显示回车和换行PUSH DXMOV DL,0DHMOV AH,02HINT 21HMOV DL,0AHMOV AH,02HINT 21HPOP DXRETDISP ENDPCODEENDSEND START五、运行结果:实验四 响铃程序设计一、设计要求:从键盘按收输入字符,如是数字N,则响铃N次,如不是数字或数字是0,则不响。二、设计目的:掌握响铃符的使用方法。开始三、 程序框图:四、程序清单:初始化寄存器显示提示信息DATA SEGMENTXS DB INPUT A NUMBER,0DH,0AH,$DATA ENDSSTACK SEGMENT STACK输入1字符到ALDB 20 DUP(?)STACK ENDS是0-9?CODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKYSTART:MOV AX,DATA对应数值送往CLMOV DS,AXMOV DX,OFFSET XS ;显示提示符调用响铃功能MOV AH,9INT 21H延时MOV AH,1INT 21H ;输入一个字符CL=0?CMP AL,0JB FINISHCMP AL,9Y返回DOSJA FINISHSUB AL,30HMOV CL,ALMOV CH,0 ;N的值存放在CX中L1:MOV DL,07HMOV AH,2 ;发出响铃INT 21HCALL DELAYLOOP L1FINISH:MOV AH,4CHINT 21HDELAY PROC ;延时PUSH AXPUSH BXMOV BX,6000H L2:MOV AX,6000HL3:DEC AXJNZ L3DEC BXJNZ L2POP BXPOP AXRETDELAY ENDPCODE ENDS END START五、运行结果: 说明:输入0-9时有对应数值的响声其他字符无响声直接退出实验五 字母的大小写转换设计一、设计要求:编写程序,接受键盘字符,并将其中的小写字母转变为大写字母,然后显示在屏幕上。二、设计目的:了解小写字母和大写字母在计算机内的表示方法,并学习如何进行转换。三、程序框图:开始初始化 显示提示信息调用DOS中断接收键入的字符返回DOS显示缓存区内容Y是回车键?是小写字母Y转换为大写字母写入显示缓存区四、程序清单:DATA SEGMENTBUF DB 50 DUP(0);转换后的存储区XS1 DB PLEASE INPUT THE DATA:,0DH,0AH,$XS2 DB 0DH,0AH,$DATAENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA DI,BUFMOV DX,OFFSET XS1;显示提示信息MOV AH,09HINT 21HMOV CX,50L1:MOV AH,1;单字符输入INT 21HCMP AL,0DH;判断输入的是否为回车符JZ FINISH;是回车跳到FINISHCMP AL,aJB L2CMP AL,zJA L2SUB AL,20H;转为大写字母MOV DI,ALINC DIJMP L3L2:MOV DI,ALINC DIL3:LOOP L1FINISH: MOV DX,OFFSET XS2;换行MOV AH,09HINT 21HMOV BYTE PTRDI,$MOV DX,OFFSET BUFMOV AH,09HINT 21HMOV AH,4CHINT 21HCODE ENDS END START四、运行结果:实验六 计算机钢琴的程序设计一、设计要求:编写程序,程序运行时使PC机成为一架可自动弹奏的“钢琴”,循环演奏简单的乐曲,按回车键返回DOS。二、设计目的:1、掌握利用PC机场声器发出不同频率声音的方法。2、学习利用系统功能调用从表格上读取字符的方法。三、设计说明:通过给8253定时器装入不同的计数值,可以使其输出不同频率的波形。当与门打开后,经过放大器放大的作用,便可驱动扬声器发出不同频率的音调,要使该音调的声音持续一段时间,只要插入一段延时程序,之后再将扬声器切断(关闭与门)即可。另外,若要使计算机成为可直接演奏的钢琴,则需要使用系统调用的01H以接收键入字符,并且要建立一张表,使表上字符与频率值构成一个对应关系。开 始四、程序框图:Y结 束回车键输入?五、程序清单:DATASEGMENT判断输入的字符是否为1-8XS1DB THIS IS A ELECTRONICDB PIANO,INPUT 1-8!,$BUF DW 524,588,660,698,784,880,988,1048查乐谱表获得演奏的音符DATAENDSCODESEGMENT将字符转换为偏移量送BXASSUME CS:CODE,DS:DATASTART: MOV AX,DATA120000H为被除数送DX,AX MOV DS,AX MOV BX,0查表的频率值为除数 MOV DX,OFFSET XS;显示提示信息MOV AH,09H相除结果作计数初值送AX INT 21HCALL DISP置8253计数器2的方式P1:MOV AH,01H;输入1字符 INT 21H装入计数初值 CMP AL,0DH;判断是否为回车键 JZ EXIT;是回车键跳到EXIT打开与门 CMP AL,31H ;判断是否为1-8 JL P1;小于则重新输入延 时 CMP AL,38H;判断是否大于8 JG P1;大于则重新输入关闭与门 SUB AL,31H;转换成查表偏移量 SHL AL,1;偏移量X2 返回 MOV BL,AL MOV DI,BUFBX CALL SINGING;调用钢琴子程序 JMP P1EXIT:MOV AH,4CH INT 21HSINGING PROC MOV AL,0B6H OUT 43H,AL ;写方式控制字 MOV DX,12H MOV AX,0000H ;DX+AX被除数,DI除数 DIV DI ;计算结果即初值放在AX中 OUT 42H,AL;装入初值,先装高位然后再装低位 MOV AL,AH OUT 42H,ALIN AL,61H ;打开与门 OR AL,3 OUT 61H,ALCALL DELAY IN AL,61H ;关闭与门AND AL,0FCH OUT 61H,AL RETSINGING ENDPDISP PROC MOV DL,0DH MOV AH,02H INT 21H MOV DL,0AH INT 21H RETDISP ENDPDELAY PROCMOV SI,02FFHDELAY1:MOV CX,0FFFFHP2: LOOP P2 DEC SI JNZ DELAY1RETDELAY ENDPCODE ENDS END START六、运行结果:说明:输入1-8时发出乐谱声,输入其他字符不发出声音。实验七 显示目录的设计一、设计要求:编写程序,使其相当于DOS命令DIR的功能,即在屏幕上显示目录。二、设计目的:掌握目录操作的DOS功能调用。三、设计说明:检索目录应先使用INT21H的4EH号调用,它将检索到第一个匹配的文件,然后不断的使用INT21H的4FH号调用,检索下一个匹配文件,这就能实现DIR功能。以上两个子功能均能识别文件名通配符?和#。开始初始化设置DTA用INT 21H的4EH号调用检索第一个匹配文件出错文件名计数值CX=0SI指向DTA的文件名首址SI送AL,SI+1AL=0CX+1用INT21H的40H号调用显示文件名用INT21H的40H号调用搜索下一个匹配的文件返回DOS出错NNNNNNYY四、程序框图:五、程序清单:CRLF MACRO MOV AH,02H MOV DL,0DHINT 21H ;回车换行宏定义 MOV AH,02H MOV DL,0AH INT 21HENDMDATASEGMENTBUF DB 128 DUP(?) ;DTA磁盘传送缓冲区FNAMEDB *.*,0 ;ASCIIZ串,匹配任意文件DATA ENDSSTACK SEGMENTSTA DW 32 DUP(?)STACKENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOV AX,DATAMOV DS,AX ;段寄存器和堆栈初始化MOV ES,AXMOV SP,STAMOV DX,OFFSET BUF ;设置磁盘传送缓冲区DTA DS:DX=磁盘缓冲区首址MOV AH,1AH INT 21H MOV DX,OFFSET FNAM

温馨提示

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

评论

0/150

提交评论