微机原理课程设计报告(程序)
微机原理课设报告

中南大学微机原理课程设计报告一、课程设计目的通过本次课程设计要掌握8088,8255,0809,0832,8279 等多种芯片使用的方法,灵活运用课本知识,加深所学的知识,对所学的相关芯片的原理、内部结构、使用方法等有更加深刻的了解,学会利用课本知识联系实际应用及编程。
同时并了解综合问题的程序设计掌握实时处理程序的编制和调试方法,掌握一般的设计步骤和流程,使我们以后搞设计时逻辑更加清晰。
二、课程设计任务本次课设选题为“模拟电压采集,直流电机控制”。
根据我自己对这个课题的理解,我认为这个课题应该实现以下的要求:基本要求:1、对模拟电压进行采集转换为数字信号,并实时显示。
2、用转换的到的数字信号再经数模转换,对直流电机进行控制。
拓展要求:1、通过发光二极管作为信号指示灯,实时的指示直流电机的工作状态是否正常。
2、建立报警电路,对电机非正常工作情况以及反转工作情况下进行报警。
三、设计思想与原理1、设计思想本次课设选题为“模拟电压采集,直流电机控制”,基本分为两大部分:模拟量采集的模数转换部分,以及电机控制中的数模转换部分。
而为了让模拟量的采集结果更加明显可察,将加入数码管显示模块,实时显示模拟量采集的大小情况。
与此同时,在选题基础上添加了直流电机工作状态指示灯电路和报警电路。
2、设计原理根据试验箱相关配置,取电位器0~5V 可调电压为模拟量输出模块,可线性调节输出。
取芯片ADC 0809 对采集到的模拟信号进行模数转换,将0~5V 的电压信号转为00~FF 的数字信号,并通过8279 键盘扫描输出模块进行相应的显示输出。
得到转换后的数字量之后,使用DAC0832 数模转换芯片进行数模转换,并将所得模拟量输出到直流电机控制端,进行电机驱动。
对于添加的模块,主要通过8255 芯片来实现,取8255 的PA0 口作为输出端口,连接试验箱上的开关量输入显示区的发光二极管。
对A口分别赋值01H (直流电机正向非正常工作)、02H(直流电机正常工作)、04H(直流电机反向非正常工作)并输入给开关量输入显示区的发光二极管,驱动前三个二极管在电机的三种工作状态下分别发光,从而实现指示灯电路。
微机原理课程设报告

微机原理课程设计设计报告一、设计目的1、对微机原理课程中所学的理论知识进行进一步巩固和加深。
2、学会查阅相关手册与资料,培养独立分析与解决问题的能力。
3、学会使用屏幕编辑程序—MASM对汇编程序的编写,调试和运行。
4、了解对系统中DOS和BIOS的使用,弄懂汇编程序的上机过程以及如何运用DEBUG软件进行汇编程序的调试。
二、设计内容本次为期一周的课程设计,主要编写调试了5个程序,题目如下:1、字符串匹配设计为掌握提示信息的设置方法及读取键入信息的方法。
编写程序实现两个字符串比较。
如相同,则显示“MATCH”,否则,则显示“NO MATCH”。
2、从键盘上输出数据并显示为掌握接收键盘数据的方法,并了解将键盘数据显示时须转换为ASCII码的原理。
编写程序,将键盘接收到的四位十六进制数据转换为等值的二进制数,再显示在终端上。
3、字符和数据的显示设计为掌握字符和数据的显示方法,编写程序,先显示信息:INPUT STRING,THE END FLAG IS$,再接收字符。
如为0-9,则计数器加1,并显示数据;如为非数字,则直接显示,但不计数4、学生成绩名次表设计为进一步熟悉排序方法。
编写程序,将0-100之间的30个成绩存入首址为1000H的存储区中。
1000H+i表示学号为i的学生成绩。
编写程序使得在2000H 开始的区域排除名次表。
2000H+i为学号i的学生的名次。
三、具体设计程序设计一:字符串匹配设计为掌握提示信息的设置方法及读取键入信息的方法。
编写程序实现两个字符串比较。
如相同,则显示“MATCH”,否则,则显示“NO MATCH”。
流程图程序DATA SEGMENTDAT1 DB 'INPUT STRING1:','$' ;$保持当前地址DAT2 DB 'INPUT STRING2:','$'DAT3 DB 'MATCH!',0AH,0DH,'$' ;0DH为回车ASCII码,0AH为换行ASCII码DAT4 DB 'NOT MATCH!',0AH,0DH,'$'STRING1 DB 50 ;最长长度DB ? ;实际长度DB 50 DUP(?) ;存储空间STRING2 DB 50DB ?DB 50 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATASTART: MOV AX,DATA ;数据段设置MOV DS,AXMOV ES,AXMOV AH,09H ;字符串显示,显示DAT1,显示DS:DX MOV DX,OFFSET DAT1INT 21HMOV AH,0AH ;字符串缓冲输入,接收输入字符串MOV DX,OFFSET STRING1INT 21HMOV DL,0AH ;输出换行MOV AH,02HINT 21HMOV AH,09HMOV DX,OFFSET DAT2 ;显示DAT2INT 21HMOV AH,0AHMOV DX,OFFSET STRING2INT 21HMOV DL,0AH ;输出换行MOV AH,02HINT 21HLEA SI,STRING1 ;比较LEA DI,STRING2ADD SI,2 ;串1首字符[SI+2]ADD DI,2 ;串2首字符[DI+2]CLD ;DF=0MOV CX,50REPZ CMPSB ;CX≠0或ZF=1时重复,DS:SI和ES:DI所指的两个字节相同则继续比较,如果比较相等,ZF=1,则继续比较下一个字节,DI和SI分别加1(DF=0时),CX-1JZ MATCHNMATCH:MOV AH,09HMOV DX,OFFSET DAT4 ;输出不匹配INT 21HJMP NEXTMATCH: MOV AH,09HMOV DX,OFFSET DAT3 ;输出匹配INT 21HNEXT: MOV AH,4CHINT 21HCODE ENDSEND START小结在设计过程中,我把程序分成了宏定义显示回车,数据段定义,初始化,开始比较,匹配时再比较,不匹配时SI指向串1首字符,DI指向新字符重新开始比较等模块。
微机原理课程设计报告文库

微机原理课程设计报告文库一、课程目标知识目标:1. 理解微机原理的基本概念,掌握微机硬件结构及其功能;2. 学会分析微机工作原理,了解指令系统及编程方法;3. 掌握微机接口技术,了解常见接口芯片的功能和应用。
技能目标:1. 能够运用所学知识进行微机系统的简单设计和调试;2. 培养学生具备一定的微机编程能力,能够编写简单的汇编语言程序;3. 提高学生动手实践能力,能够进行基本的硬件焊接和电路搭建。
情感态度价值观目标:1. 培养学生对微机原理课程的兴趣,激发学生学习热情;2. 培养学生具备良好的团队合作意识,学会与他人共同解决问题;3. 增强学生的创新意识,鼓励学生勇于探索新知识,提高自主学习能力。
课程性质:本课程为理论与实践相结合的课程,强调培养学生的动手实践能力和创新能力。
学生特点:学生已具备一定的电子技术和计算机基础,具有较强的学习能力和好奇心。
教学要求:教师应注重理论与实践相结合,引导学生主动参与课堂讨论,鼓励学生动手实践,培养学生解决问题的能力。
在教学过程中,关注学生的学习进度,及时调整教学策略,确保课程目标的实现。
通过本课程的学习,使学生能够掌握微机原理的基本知识,具备实际应用能力,为后续相关课程和未来职业发展打下坚实基础。
二、教学内容本课程教学内容主要包括以下几部分:1. 微机硬件结构:介绍微处理器、存储器、输入输出接口等硬件组件的工作原理和功能;教材章节:第一章 微机系统概述内容列举:CPU结构、存储器分类、I/O接口基础等。
2. 指令系统与编程:讲解汇编语言的基本指令、寻址方式、程序设计方法等;教材章节:第二章 指令系统与汇编语言内容列举:基本指令、汇编语言程序结构、循环、分支等编程技巧。
3. 微机接口技术:分析常见接口芯片的原理与应用,如并行接口、串行接口、定时器/计数器等;教材章节:第三章 微机接口技术内容列举:并行接口、串行接口、定时器/计数器接口芯片等。
4. 微机系统设计与实践:培养学生动手实践能力,进行简单的微机系统设计与调试;教材章节:第四章 微机系统设计与实践内容列举:硬件焊接、电路搭建、程序下载与调试等。
微机原理课程设计报告

微机原理课程设计报告 ̄ ̄ ̄电子时钟学校:山东大学学院:电气工程学院班级:2007级5班实验者: 于春辉学号:261目录摘要----------------------------------------------2一.设计目的--------------------------------------2二.程序功能--------------------------------------2三.程序设计原理DISCHAR/DIS(蛋糕图案显示程序)------------------------3 DISSTRING(字符串显示程序)------------------------3 BCDASC\BCDASC1(日期\时间转换为ASCII子程序)------------------------3 CHANGE(设置时间子程序)-----------------------4 四.硬件设计原理----------------------------------4 五.程序流程图------------------------------------4 六.程序代码--------------------------------------7七.程序运行效果图-------------------------------17 八.设计体会-------------------------------------19九.参考文献-------------------------------------20摘要本设计用软件实现了电子时钟的功能。
在运用汇编语言这个工具下在PC机上实现的,并且在实现调用系统日期、时间、星期几等基本功能的基础上我们为时钟加了蛋糕形的外框,并在其上方动态显示“HAPPY”字样。
程序的设计人员也采用彩色字显示在蛋糕之中,两侧边框及蜡烛着色,以及字体和背景等都加上了颜色,这样使得电子时钟显得美观。
微机技术原理课程设计报告

微机技术原理课程设计报告设计背景和目的:微机技术原理课程设计的主要目的是培养学生的计算机系统综合能力,通过设计和实现一个完整的微机系统,来加深学生对微机技术原理的理解,提高他们的动手能力和解决问题的能力。
本次课程设计的主题是设计一个简单的计算器程序,要求能够实现基本的四则运算功能以及其它一些扩展功能。
设计方案和流程:1. 确定系统需求:根据题目要求,确定计算器的基本功能为加减乘除四则运算,同时考虑到用户体验,还要加入其他一些功能,如开平方、取余等。
2. 确定系统架构:根据需求,确定使用的软件开发平台和工具,如C++编程语言和Visual Studio集成开发环境(IDE)。
3. 分解系统模块:根据计算器的功能,将系统分解为多个模块,如界面模块、算法模块和控制模块等。
4. 设计界面模块:根据用户交互需求,设计并实现计算器的用户界面,包括数字按钮、运算符按钮和结果显示区域等。
5. 设计算法模块:根据需求,设计并实现计算器的算法模块,包括加、减、乘除等基本运算算法,以及开平方、取余等扩展算法。
6. 设计控制模块:根据系统架构,设计并实现计算器的控制模块,用于协调界面模块和算法模块之间的交互,处理用户输入和计算结果的显示。
7. 调试和测试:在开发过程中,及时调试和测试各个模块的功能,确保各模块之间的协调正常,并对程序进行全面测试,保证程序的正确性和稳定性。
实施计划和进度安排:本次课程设计将分为多个阶段进行,每个阶段都有具体的任务和时间安排。
以下是整个设计的大致计划和进度安排:1. 第一周:确定系统需求,设计系统架构,完成界面模块的设计和实现。
2. 第二周:完成算法模块的设计和实现,完成控制模块的设计和实现。
3. 第三周:进行系统的集成测试和调试,解决存在的问题和bug。
4. 第四周:进行功能测试和性能测试,优化程序,准备最终的系统交付。
设计结果和实施效果:经过设计和实施,计算器程序可以实现基本的四则运算功能,并且还加入了一些扩展功能,如开平方、取余等。
微机原理课程设计报告

微机课程设计报告班级:姓名:学号:任务一:1、目的:字符串匹配的设计要求:为掌握提示信息的设置方法及读取键入信息的方法。
编写程序实现两个字符串比较,如相同,则显示“MATCH”;否则,显示“NO MATCH”。
2、流程图3、源程序:DATAS SEGMENTs1 db'please input the first string:','$'st1 db 100db?db 100 dup(?)s2 db 0ah,'plaese input the second string:','$'st2 db 100db?db 100 dup(?)s3 db 0ah,'matah','$'s4 db 0ah,'no match','$';此处输入数据段代码DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXmov dx,offset s1 ;显示提示信息1mov ah,9hint 21hmov dx,offset st1 ;接收键入的字符串1mov ah,0ahint 21hmov dx,offset s2 ; 显示提示信息2mov ah,9hint 21hmov dx,offset st2 ;接收键入的字符串2mov ah,0ahint 21hmov si,offset st1 ;字符串1的地址送给SImov di,offset st2 ; 字符串2的地址送给DImov ax,0lp1: mov bl,[si+1] ; 字符串1的字符数送给bl cmp bl,[di+1] ;字符串2的字符数与字符串1相比较jnz lp4 ;不等转lp4mov al,[si+1]mov cx,ax ; 给cx赋字符串1的字符数lp2: mov bl,[si+2] ; 字符串1的第一个字符在字符串2中匹配cmp bl,[di+2]jnz lp4inc siinc diloop lp2 ;循环cx内容减1,cx不等于0,继续循环,跳转lp2lp3: mov dx,offset s3mov ah,9hint 21hjmp nextlp4: mov dx,offset s4mov ah,9hint 21h;此处输入代码段代码next: MOV AH,4CHINT 21HCODES ENDSEND START4、结果:5、心得要先比较字符串的长度,前面要先分别定义match和nomatch,并且应该保留足够的字节空间。
微机原理课程设计报告

微机原理课程设计报告班级:电信科技0801姓名:学号: 3080504016一、目的结合微型计算机原理课程的学习,进一步巩固已学的知识,同时针对微型计算机原理知识的具体应用,学会对系统中DOS和BIOS的使用,学会使用EDIT软件,弄懂汇编程序的上机过程以及如何运用DEBUG软件进行汇编程序的调试。
二、内容1.字符串匹配设计为掌握提示信息的设置方法及读取键入信息的方法。
编写程序实现两个字符串比较。
如相同,则显示“MATCH”,否则,显示“NO MATCH”。
2.接收年、月、日信息并显示的设计为掌握响铃的使用方法。
并掌握年月日输入方法,编写程序,先显示“Input the data(xxxx/xx/xx):”并响铃一次,然后接收键盘输入的信息,最后显示出来。
3.响铃设计为掌握响铃的使用方法。
编写程序,从键盘接收输入字符,如是数字N,则响N次;如不是数字,则不响。
4.计算机钢琴的设计为掌握pc机扬声器发出不同频率声音的方法和进一步掌握利用系统功能调用从键盘上读取字符的方法。
编写程序,在程序运行时使PC机成为一架可弹奏的“钢琴”。
当按下数字键1-9时,会依次发出1,2,3,4,5,6,7,高音1,高音2九个音调,按回车后退出。
5.排序设计为掌握用汇编语言编写排序程序的思路和方法。
编写程序,从首地址为1000H开始存放35个数,要求设计程序将这些数由小到大排序,排序后的数,仍放在该区域中。
6.计算N的阶乘的设计为了解高级语言中的数学函数是怎样在汇编语言一级上实现的。
编写计算N!的程序。
数值由键盘输入,结果在屏幕上输出。
N的范围是0~FFFFH,即刚好能被一个16位寄存器容纳。
三、重点内容:本次课程设计中,我做的重点内容是计算机钢琴和N的阶乘设计,计算机钢琴是我感觉比较有趣,而N的阶乘设计花的时间做多,因此此处主要介绍N的阶乘的设计内容。
(1)流程图主程序的流程图如下:开始显示请输入数字N调用get 子程序,得到的N 放入BPSI 指向结果数据缓存区ANS初始化检测是否输入错误BP=0或1?BP 值放入ANS 首地址,默认长度放入L 中BP=BP-1BP=1?CY=0,BX=0结果缓存长度L 放入CX[SI+BX]*BPAX+C(上次相乘的进位数据)DX 加1有进位?AX 放入[SI+BX]中DX 放入进位缓存C 中BX=BX+2指向ANS 的下一个数据位置CX=CX-1CX=0?DX=0?结果长度L 加1DX 放入[SI+BX]单元内ANS 结果放1显示‘the result is ’调用显示子程序返回dos 结束YesNoYesNoNoYes YesNoYes No(2)源程序代码DATA SEGMENTANS DW 5000 DUP(?) ;运算结果缓存区 SS1 DB 'Please INPUT the number(END WITH H):','$' SS2 DB 'WRONG INPUT!','$' SS3 DB 'THE RESULT IS:','$'L DW 1 ;存结果长度C DW 0 ;存上次运算进位数据ZIXING DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,41H,42H,43H,44H,45H,46H ;显示时的字形码 DATA ENDS;---------------------------------------------------------------------------- CODE SEGMENTASSUME CS:CODE,DS:DATASTART PROC FARMOV AX,DATAMOV DS,AXMOV DX,OFFSET SS1MOV AH,9INT 21H ;输出'Please INPUT the number(END WITH H):' MOV BP,00HCALL GET ;调用取数据N子程序MOV DL,0AhMOV AH,02HINT 21HMOV DI,LCMP DI,0JE ENDD ;判断是否输入错误CMP BP,01HJNA ANSWER1 ;BP=0/1MOV SI,OFFSET ANSMOV [SI],BPMNEXT: DEC BP ;N不断减1直到N=1CMP BP,1JE ANSWERNMOV C,0XOR BX,BXMOV CX,L ;长度放CXM1: MOV AX,[SI+BX]MUL BP ;上次运算结果与BP相乘ADD AX,CADC DX,0HMOV [SI+BX],AXMOV C,DXINC BXINC BX ;指向下一单元DEC CX ;目前长度减1JNZ M1CMP DX,0JZ MNEXTMOV AX,LINC AXMOV L,AX ;长度加1MOV [SI+BX],DXJMP MNEXTANSWER1:MOV SI,OFFSET ANS ;如果N=1、0,结果为1 MOV AX,1MOV [SI],AXANSWERN:MOV AH,2 ;回车MOV DL,0DHINT 21HMOV DX,OFFSET SS3MOV AH,9INT 21HCALL DISPLAY ;显示结果MOV DL,48H ;最后加一个H表示是16进制MOV AH,2INT 21HENDD: MOV AH,4CH ;返回DOSINT 21HRETSTART ENDP;----------------------------------------------------------------- GET PROC NEARNE1: MOV AH,01HINT 21HCMP AL,29H ;先判断是否输入正确0~FJNA WRONGCMP AL,39HJA N1SUB AL,30HJMP ADN1: CMP AL,40HJNA WRONGCMP AL,46HJA WRONGSUB AL,37HAD: MOV AH,00HMOV CL,4SHL BP,CLADD AX,BP ;将取到的值放入BP中MOV BP,AXJMP NE1WRONG: CMP AL,48H ;判断结束标志JNE TWRONGRETTWRONG: MOV DX,OFFSET SS2 ;判断为错误输入MOV AH,09HINT 21HMOV AX,0MOV L,AXRETGET ENDP;------------------------------------------------------------DISPLAY PROC NEARMOV BX,L ;结果长度放入BXSHL BX,1AG1: SUB BX,2 ;运算得到正确的偏移值MOV DX,[BX+SI]MOV CH,4 ;每次输出4位AG2: MOV AX,DXAND AH,0F0HPUSH BXMOV BX,OFFSET ZIXINGMOV AL,AHMOV CL,4SHR AX,CLXLAT ;查表得到输出字形POP BXPUSH DXMOV DL,ALMOV AH,02HINT 21HPOP DXSHL DX,CLDEC CHJNZ AG2CMP BX,0 ;判断是否输完JNE AG1RETDISPLAY ENDP;---------------------------------------------------------------------CODE ENDSEND START四、心得体会经过了为期一周的微机原理课程设计,我又重新掌握了微机原理汇编这门语言。
微机原理课程设报告

微机原理课程设计设计报告一、设计目的1、对微机原理课程中所学的理论知识进行进一步巩固和加深。
2、学会查阅相关手册与资料,培养独立分析与解决问题的能力。
3、学会使用屏幕编辑程序—MASM对汇编程序的编写,调试和运行。
4、了解对系统中DOS和BIOS的使用,弄懂汇编程序的上机过程以及如何运用DEBUG软件进行汇编程序的调试。
二、设计内容本次为期一周的课程设计,主要编写调试了5个程序,题目如下:1、字符串匹配设计为掌握提示信息的设置方法及读取键入信息的方法。
编写程序实现两个字符串比较。
如相同,则显示“MATCH”,否则,则显示“NO MATCH”。
2、从键盘上输出数据并显示为掌握接收键盘数据的方法,并了解将键盘数据显示时须转换为ASCII码的原理。
编写程序,将键盘接收到的四位十六进制数据转换为等值的二进制数,再显示在终端上。
3、字符和数据的显示设计为掌握字符和数据的显示方法,编写程序,先显示信息:INPUT STRING,THE END FLAG IS$,再接收字符。
如为0-9,则计数器加1,并显示数据;如为非数字,则直接显示,但不计数4、学生成绩名次表设计为进一步熟悉排序方法。
编写程序,将0-100之间的30个成绩存入首址为1000H的存储区中。
1000H+i表示学号为i的学生成绩。
编写程序使得在2000H 开始的区域排除名次表。
2000H+i为学号i的学生的名次。
三、具体设计程序设计一:字符串匹配设计为掌握提示信息的设置方法及读取键入信息的方法。
编写程序实现两个字符串比较。
如相同,则显示“MATCH”,否则,则显示“NO MATCH”。
流程图程序DATA SEGMENTDAT1 DB 'INPUT STRING1:','$' ;$保持当前地址DAT2 DB 'INPUT STRING2:','$'DAT3 DB 'MATCH!',0AH,0DH,'$' ;0DH为回车ASCII码,0AH为换行ASCII码DAT4 DB 'NOT MATCH!',0AH,0DH,'$'STRING1 DB 50 ;最长长度DB ? ;实际长度DB 50 DUP(?) ;存储空间STRING2 DB 50DB ?DB 50 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATASTART: MOV AX,DATA ;数据段设置MOV DS,AXMOV ES,AXMOV AH,09H ;字符串显示,显示DAT1,显示DS:DX MOV DX,OFFSET DAT1INT 21HMOV AH,0AH ;字符串缓冲输入,接收输入字符串MOV DX,OFFSET STRING1INT 21HMOV DL,0AH ;输出换行MOV AH,02HINT 21HMOV AH,09HMOV DX,OFFSET DAT2 ;显示DAT2INT 21HMOV AH,0AHMOV DX,OFFSET STRING2INT 21HMOV DL,0AH ;输出换行MOV AH,02HINT 21HLEA SI,STRING1 ;比较LEA DI,STRING2ADD SI,2 ;串1首字符[SI+2]ADD DI,2 ;串2首字符[DI+2]CLD ;DF=0MOV CX,50REPZ CMPSB ;CX≠0或ZF=1时重复,DS:SI和ES:DI所指的两个字节相同则继续比较,如果比较相等,ZF=1,则继续比较下一个字节,DI和SI分别加1(DF=0时),CX-1JZ MATCHNMATCH:MOV AH,09HMOV DX,OFFSET DAT4 ;输出不匹配INT 21HJMP NEXTMATCH: MOV AH,09HMOV DX,OFFSET DAT3 ;输出匹配INT 21HNEXT: MOV AH,4CHINT 21HCODE ENDSEND START小结在设计过程中,我把程序分成了宏定义显示回车,数据段定义,初始化,开始比较,匹配时再比较,不匹配时SI指向串1首字符,DI指向新字符重新开始比较等模块。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理课程设计报告班级:电科1201 姓名:李建学号:3120504023课程设计目的结合微型计算机原理课程的学习,进一步巩固已学的知识,同时针对微型计算机原理知识的具体应用,学会对系统中DOS和BIOS的使用。
学会使用全屏幕编辑程序—PE,弄懂汇编程序的上机过程以及如何运用DEBUG软件进行汇编程序的调试。
课程设计内容1.字符串匹配设计为掌握提示信息的设置方法及读取键入信息的方法。
编写程序实现两个字符串比较。
如相同,则显示“MA TCH”,否则,显示“NO MATCH”。
程序流程图程序代码为:DA TA SEGMENTDATA1 DB 40DB ?DB 40 DUP(?)DATA2 DB 40DB ?DB 40 DUP(?)DISPP1 DB 'input the first line:$',0DH,0AH,'$'DISPP2 DB 'input the second line:$',0DH,0AH,'$'DISPP3 DB 0DH,0AH,'$'DISPP4 DB 'MATCH!$',0DH,0AH,'$'DISPP5 DB 'NO MATCH!$',0DH,0AH,'$'DA TA ENDSCASE SEGMENTASSUME CS:CASE,DS:DATASTART: MOV AX,DATAMOV DS,AXLEA DX,DISPP1MOV AH,9INT 21HMOV DX,OFFSET DA TA1MOV AH,0AHINT 21HCALL ENTERLEA DX,DISPP2MOV AH,9INT 21HMOV DX,OFFSET DA TA2MOV AH,0AHINT 21HCALL ENTERMOV AL,DATA1+1MOV AH,0MOV BL,DATA2+1MOV BH,0CMP AL,BLJNZ L2MOV CL,BLMOV SI,OFFSET DA TA1+2MOV DI,OFFSET DATA2+2L1: MOV DX,DS:[SI]CMP DX,DS:[DI]JNE L2INC DIINC SILOOP L1MOV DX,1JMP L3L2: MOV DX,0L3: CMP DX,0JZ L4MOV DX,OFFSET DISPP4MOV AH,9INT 21HJMP L5L4: MOV DX,OFFSET DISPP5MOV AH,9INT 21HL5: MOV AH,4CHINT 21HENTER PROCLEA DX,DISPP3MOV AH,9INT 21HRETENTER ENDPCASE ENDSEND START运行结果:2.字符和数据的显示设计为掌握字符和数据的显示方法。
编写程序,先显示信息:INPUT STRING,THE END FLAG IS$,再接收字符。
如为0-9,则计数器加1,并显示数据;如为非数字,则直接显示,但不计数。
程序代码为:DA TA SEGMENTDATA1 DB 40 DUP(?)DISPP1 DB 'input string,the end flag is IS,quit with ctrl-c',0DH,0AH,'$'DISPP2 DB 0DH,0AH,'$'DISPP3 DB 'the input string is:','$'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START: MOV AX,DA TAMOV DS,AXMOV SI,00HMOV CL,0MOV BX,OFFSET DATA1LEA DX,DISPP1MOV AH,9INT 21HL1: MOV AH,1INT 21HCMP AL,03HJZ L4CMP AL,0DHJZ L3MOV [BX+SI],ALINC SICMP AL,30HJNB kkJMP L1kk: CMP AL,39HJNA L2JMP L1L2: INC CLJMP L1L3: LEA DX,DISPP2MOV AH,9INT 21HLEA DX,DISPP3MOV AH,9INT 21HADD CL,30HMOV [BX+SI+1],CLMOV AL,0AHMOV [BX+SI+2],ALMOV AL,'$'MOV [BX+SI+3],ALMOV DX,BXMOV AH,9INT 21HJMP L4L4: MOV AH,4CHINT 21HCODE ENDSEND START运行结果:3.接收年、月、日信息并显示的设计为掌握响铃使用方法,并掌握年、月、日输入方法。
编写程序,先显示“WHAT IS THE DA TE(MM/DD/YY)?”并响铃一次,然后接收键盘输入的月/日/年信息,并显示。
程序流程图程序代码为:CRLF MACROMOV AH,02HMOV DL,0DHINT 21HMOV AH,02HMOV DL,0AHINT 21HENDMDA TA SEGMENTMESS DB 'PLEASE INPUT MONTH,DAY ,YEAR(MM/DD/YY)',0DH,0AH,'$'MESS1 DB 0DH,0AH,'MONTH ERROR,PLEASE INPUT AGAIN',0DH,0AH,'$'MESS2 DB 0DH,0AH,'DAY ERROR,PLEASE INPUT AGAIN',0DH,0AH,'$' ERROR DB 0DH,0AH,'ERROR,PLEASE INPUT AGAIN',0DH,0AH,'$' MARK DB ?REG DW ?DA TA ENDSSTACK SEGMENTSTA DW 32 DUP(?)TOP DW ?STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA,ES:DA TA,SS:STACKSTART: MOV AX,DATAMOV DS,AXMOV ES,AXMOV SP,TOPHEAD: MOV MARK,0MOV AH,09HMOV DX,OFFSET MESSINT 21HMOV AH,02HMOV DL,07HINT 21HCALL GETNUMCMP MARK,01HJE HEADPUSH DXCALL GETNUMCMP MARK,01HJNE K1POP DXJMP HEADK1: PUSH DXCALL GETNUMCMP MARK,01HJNE K2POP DXPOP DXJMP HEADK2: MOV AX,DXCALL DISPNOPMOV AH,02HMOV DL,'-'INT 21HPOP AXPUSH DXMOV REG,AXAND AX,00FFHCMP AX,0012HJBE W1MOV AH,09HLEA DX,MESS1INT 21HJMP STARTW1: MOV AX,REG CALL DISPPMOV AH,02HMOV DL,'-'INT 21HPOP AXMOV REG,AXAND AX,00FFHCMP AX,31HJBE W2MOV AH,09HLEA DX,MESS2INT 21HJMP STARTW2: MOV AX,REG CALL DISPPMOV AX,4C00HINT 21HDISPP PROC NEARMOV BL,ALMOV DL,BLMOV CL,04ROL DL,CLAND DL,0FHCALL DISPLMOV DL,BLAND DL,0FHCALL DISPLRETDISPP ENDPDISPL PROC NEARADD DL,30HCMP DL,3AHADD DL,27HDDD: MOV AH,02HINT 21HRETDISPL ENDPDISP PROC NEARPUSH BXPUSH CXPUSH DXPUSH AXMOV AL,AHCALL DISPPPOP AXCALL DISPPPOP DXPOP CXPOP BXRETDISP ENDPGETNUM PROC NEARPUSH CXXOR DX,DXGGG: MOV AH,01HINT 21HCMP AL,0DHJZ PPPCMP AL,20HJZ PPPSUB AL,30HCMP AL,0JB KKKCMP AL,0AHJB GETSJMP KKKGETS: MOV CL,04SHL DX,CLXOR AH,AHADD DX,AXJMP GGGKKK: PUSH AXPUSH DXMOV AH,09HMOV DX,OFFSET ERRORMOV MARK,01HPOP DXPOP AXPPP: PUSH DXMOV AH,02HMOV DX,07HINT 21HCRLFPOP DXPOP CXRETGETNUM ENDPCODE ENDSEND START运行结果:4.将键盘输入的小写字母转换成大写字母的设计为了解小写字母的大写字母在计算机内的表示方法,并学习如何进行转换。
编写程序,接收键盘字符,并将其中的小写字母转变为大写字母,然后显示在屏幕上。
程序流程图程序代码为:DA TA SEGMENTT1 DB 'INPUT A STRING:','$' T2 DB 'THE RESUIT IS:','$'D1 DB 100 DUP (?)D2 DB 100 DUP (?)DISPP1 DB 0DH,0AH,'$'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA START:MOV AX,DATAMOV DS,AXMOV DX,OFFSET T1MOV AH,9INT 21HLEA BX,D1LEA SI,D2L1: MOV AH,1INT 21HMOV [BX],ALINC BXCMP AL,0DHJZ L2CMP AL,61HJB L3CMP AL,7AHJA L3SUB AL,20HMOV [SI],ALINC SIJMP L4L3: MOV [SI],ALINC SIL4: JMP L1L2: MOV BYTE PTR [BX],'$'MOV BYTE PTR [SI],'$'LEA DX,D1MOV AH,9INT 21HCALL ENTERMOV AH,9LEA DX,T2INT 21HLEA DX,D2INT 21HMOV AH,4CHINT 21HENTER PROCLEA DX,DISPP1MOV AH,9INT 21HRETENTER ENDPCODE ENDSEND START运行结果:5.学生成绩名次表设计为进一步熟悉排序方法。