武汉科技大学微机原理课程设计
微机原理课程设计
前言
加热器数字控制系统的设计与功能的实现要求学生在学习完微机原理及应用这门课的基础上,在对芯片类知识以及汇编语言有一定基础的前提下进行的一个非常体现学生综合能力的一个设计。要想很好的完成这个题目,必须对芯片的功能有很详细的了解,同时也要求学生的汇编语言基础要扎实。计算机技术的飞速发展,使的计算机知识和应用技能已成为人类知识经济的重要组成部分。《微型计算机原理》正是掌握计算机结构和工作原理的入门课程,它偏重于实际应用的课程,要求学生在学好理论知识的基础上,培养定的实践动手操作能力,学生将所学的理论知识和实践有机结合,初步掌握计算机应用系统设计的步骤和接口设计的方法,提高分析和解决实际问题的能力。微机原理课程设计是对《微型计算机原理》课程理论教学和实验教学的综合和总结。
[2]、徐建民·《汇编语言程序设计》[M]·北京:电子工业出版社
[3]、洪永强.微机原理与接口技术.北京:科学出版社. 2004年
课程设计图纸
程序清单
DATA SEGMENT
INTR_IVADDEQU01C8H;INTR对应的中断矢量地址(对应着中断程序入口地址)
INTR_OCW1EQU0A1H;INTR对应PC机内部8259的OCW1地址
MOV AX,SEG MYISR
MOV ES:[DI],AX;ห้องสมุดไป่ตู้置当前中断处理程序入口段地址
MOV DX,INTR_OCW1 ;设置中断屏蔽寄存器,打开INTR的屏蔽位
INAL,DX
MOV IM_BAK,AL;保存INTR原中断屏蔽字
AND AL,INTR_IM
OUTDX,AL
MOV DX,MY8259_ICW1 ;初始化实验系统中8259的ICW1
MOV DI,INTR_IVADD
微机原理课设报告
中南大学微机原理课程设计报告一、课程设计目的通过本次课程设计要掌握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(直流电机反向非正常工作)并输入给开关量输入显示区的发光二极管,驱动前三个二极管在电机的三种工作状态下分别发光,从而实现指示灯电路。
武科大微机原理课程设计
一、设计题目键控数据采集及数值显示电路设计二、设计任务按不同的数字键(0、1、2、3、4、5、6、7)采集0809相应数据通道的模拟量,并在LED 数码管上显示值。
设定输入模拟量在0—5V范围内,显示值在0—255范围内。
三、设计要求1.画出连接线路图或功能模块引脚连接图。
2.采用8088CPU作主控制器,0809作A/D转换器,采用直接地址译码方法,给各芯片分配地址,选取芯片中必须包含有8255。
3.采用3个共阴极型LED动态显示,只需显示0—255范围内的值。
四、设计思想及需要用的主要芯片1、设计思想首先通过编程对8255初始化,然后通过8255对ADC0809转换器初始化,通过0~7号按键(在这里0~7号按键用开关实现,有按键的过程中会有抖动,所以需要加入一个74LS244芯片,用于缓冲),经8088微处理器处理后选择ADC0809的模拟通道,将0~5V内的模拟量通过选择的模拟通道传递给模数转换器,通过转换器把模拟量转换为0~255之间的数字量,将数字量通过可编程并行接口8255(在这里端口A作为数据输入端,端口B作为数据输出端,端口C作为控制端),送给LED数码管显示。
2.主要芯片及其功能ADC0809与系统的接口包括两个输出口和一个输入口,第一个输出口用于控制芯片内部的模拟通道选择,CPU输出的通道地址从ADC0809的引脚ADDA、ADDB、ADDC输入,并利用ALE信号触发锁存;第二个输出口是哑元,用以触发ADC0809的引脚START启动转换。
当转换结束后,ADC0809的引脚EOC会产生一个高电平的状态信号,该信号用于检测,也可用于申请中断。
随后,CPU可以从ADC0809的引脚D0-D7输入转换后的数据。
其芯片引脚图如下8255是并行通信接口芯片,其基本功能是以并行的方式在系统总线与I/O设备之间传送数据。
8255A共有三个I/O端口,其中A口和B口J均为8位,而C口既可以作为8位端口,又可以分成两个4位端口。
武汉科技大学微机原理课程设计
课程设计报告学号:姓名:学院:信息科学与工程学院专业:电子信息工程班级:电信班指导教师:***用汇编语言实现电话本功能一、目的:运用所学汇编语言知识,编写一个具有电话本功能的程序,达到提高动手能力以及检验对微机原理课程学习和掌握的程度。
二、内容及要求:1)能够储存50个电话号码,其中包括人名(20个字符),电话号码(11个字符)。
2)系统可以随时接收新的人名及电话号码。
3)系统具有随时查询号码的功能,输入人名后,在屏幕上显示其相应的电话号码。
4)运行此系统后,显示菜单选项进行功能选择。
三、数据存储方案:对于电话薄的每一位联系人,姓名占20个字符,加上结束标志$共21字符;电话占11个字符,加上结束标志$共12个字符。
所以每一位联系人共占据33个单元,这样我们可以在存储区开辟33*50=1650字节的地址空间。
四、流程图:(1)程序框图:在主菜单界面下有三大模块,分别是:添加联系人信息,搜索联系人信息,退出系统。
(2)汇编流程图:有错误有错误有错误建立、修改asm 文件 汇编生成obj 文件正确? 链接、生成exe 可执行文件正确? Debug 调试 正确? 结束 开始五、汇编运行效果:(1)在win7命令窗口下使用MASM对源程序进行编译,生成目标文件weiji.obj;(2)对生成的weiji.obj文件使用link命令进行链接生成weiji.exe可执行文件;(3)在win7继续执行debug weiji.exe,会出现如下结果,这是由于版本不兼容造成的。
我之后的实验步骤均是在DOSBox软件下完成的。
(4)打开DOSBox,找到汇编路径。
执行命令debug.exe,然后使用U命令进行反汇编。
(5)继续使用G命令运行程序,得到如下界面菜单显示。
按“1”键后显示添加联系人信息,添加完毕后显示菜单。
(6)按“2”键后显示搜索联系人姓名,回车后显示对应联系人电话号码,同时显示菜单界。
(7)按“3”键后显示程序终止正常,退出系统。
微机原理课程设计教学大纲
《微机原理与接口技术》实习教学大纲一、课程基本信息开课单位:电气与信息工程学院课程编号:课程名称:微机原理与接口技术英文名称:Microcomputer Principle & Interfacing Technique学分:2学分二、课程的性质与教学目标(一)课程性质:本课程是高等院校计算机科学与技术及计算机相关专业的一门专业技术基础课程,是在《微机原理与接口技术》理论课程结束后的一次大型实践性教学环节。
(二)教学目标:本课程以相应课程的理论知识和课程实验为基础,学生通过课程设计,应初步学会利用微机和接口芯片设计应用系统的基本方法;初步掌握微机应用系统中硬件电路的设计方法;掌握利用汇编语言设计和编写应用程序的方法;提高调试综合应用程序的能力。
通过理论设计和实践操作巩固和加深对理论知识的理解,增强设计微机应用系统和调试应用软件的能力,提高学生的工程素质。
三、教学内容、时间安排及教学要求(一)实习内容及要求1、实习内容(16学时)可在以下5个课题中任选其一:课题1:数据采集系统课题2:异步通信系统课题3:电机调速系统课题4:计时器课题5:计算器(1)要求课程设计完成后,学生应交课程设计报告一份。
(2)内容课题1:数据采集系统数据采集系统有两个子课题,根据实验安排完成其中一个:1)用LED显示输出的数据采集系统;2)用打印机输出的数据采集系统。
理论设计要求:①以8088/86及其支持电路为基础,配必要的存储器、中断、定时系统、感测接口、LED显示器或打印机接口等构成数据采集系统;②系统可控制8路采集,采集信号的最高频率为10Hz;③采集数据存储在内存区,要求能连续保存10分钟的各路数据;④在LED显示器上顺序输出各路采集数据,输出内容包括采集路号以及对应的实时数据;若使用打印机输出,可在10分钟后批量打印采集的数据;⑤方案设计中要突出数据采集分系统和输出接口的设计,进行多种速率、多路采集控制等方面的分析,为硬件设计和软件编程提供依据;⑥硬件设计要求画出功能框图和逻辑原理图;编程要有程序框图和流程图。
微机原理课程设计 完整版
微机原理课程设计题目基于8086的电子称设计指导教师姓名学号王华民************姓名学号赵儒桐************姓名学号孙敬周************专业11级电子信息工程教学单位物理与电子信息学院(盖章)二O一三年六月二十二日目录摘要及关键字 (1)1绪论 (1)2 总体设计及其框图 (1)2.1 电阻应变式传感器 (1)2.2 信号放大模块 (2)2.3重量显示及其控制模块 (2)3 硬件电路设计 (2)3.1数据采集电路 (2)3.2 放大校正电路 (3)3.3 ADC0809与8255的连接 (3)3.4 8086的可编程外设接口电路 (4)3.5 数据显示部分 (5)3.6 系统硬件原理图 (6)4系统软件流程图 (7)5总结 (8)参考文献 (8)基于8086电子称设计摘要本文介绍了一种基于8086微处理器的电子称系统,采用电子称传感器采集数据,用CPU控制重量值稳定在预设重量:当重量高于预设重量值时报警。
系统操作简便、自动化程度高、扩展方便且具有良好的人机交互的能力。
该系统通过实验,取得了较为满意的控制效果,可应用在一些精度要求不太高的系统中。
为了降低整个系统的成本,在满足性能的要求下,选择低成本器件,简化系统设计。
关键词微处理器;电阻应变式传感器;A/D转换器;控制系统一.绪论随着电子技术的发展,特别是大规模集成电路的产生,给人们的生活带来了根本性的变化,如果说微型计算机的出现使现代的科学研究得到了质的飞跃,那么微型计算机控制技术的出现则是给现代工业控制测控领域带来了一次新的革命。
目前,微处理器8086在工业控制系统诸多领域得到了广泛的应用,由于它具有极好的稳定性,更快和更准确的运算精度。
当前,微机测控系统的发展非常迅速,应用也极为广泛,它由于体积小、功能强、性能稳定、价格低廉等优点,使其在工业控制系统诸多领域得到了极为广泛的应用。
在此基础上发展起来的智能仪器无论是在测量的准确度、灵敏度、可靠性、自动化程度、应用功能等方面或在解决测试技术问题的深度及广度方面都有了巨大的发展,以一种崭新的面貌展现在人们的面前。
微机原理课程设计-四则运算
《微机原理与接口技术》课程设计电气与自动化工程系 通信工程2010年12月23院 系: 专 业: 年级班级: 学 号: 姓 名: 指导教师: 设计日期:微机原理与汇编语言课程设计一、课程设计目的进行程序设计的方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,打到独立编制和调试一定滚魔的汇编语言程序水平。
二、课程设计题目四则混合运算要求从键盘上输入数字参与运算,并在屏幕上显示结果,至少实现加法减法运算。
从键盘输入一个十进制两位数的四则运算表达式,如23*56-(8*19)/6+67-8=,编程计算表达式的值,输出十进制结果(有可能是三位或四位十进制),+-*/位置任意。
并要求程序能反复执行直道对“还要继续吗?(y/n)”之类的提示回答“n”或“N”为止三、报告内容1.设计主要内容根据题目的要求,该程序设计的关键是要根据四则运算中()、*、/、+、-、=的优先设置符号的权值,其中(、*、+、-、)、=的权值分别设置为5、4、4、3、3、1、0,然后根据权值大小进行运算。
程序使用数字标志SIGN1、括号标志SIGN2分别来判断数字是否输入完毕和括号是否配对,另外程序定义两个数据存储区域NUMB和MARK,其中NUMB用来保存输入的或运算的数值,MARK用来保存输入的符号及其对应的权值。
程序不断判断输入的符号是否是左括号‘(’,当遇到左括号是在存储区MARK保存其符号,紧跟着将‘(’的权值改为2并保存之,这是为了使程序运算括号内的表达式,当遇到右括号‘)’时括号内运算将结束。
可以把整个源程序大致划分为几个基本结构:程序加法、减法、乘法、除法、显示结果五个部分。
首先用1号功能以输入字符的形式接收输入的算式,再判断输入字符ASCII码,如果是+、-、*、/、=或数字,则跳转到相应功能模块,并把输入的字符转为数值传入BX寄存器,在各功能模块中继续用1号功能输入字符,执行以上操作,将输入号符转为数据存入DX中,由于*、/优先级要高,加、减模块的实现中要根据输入运算符号进行将BX入栈操作,如果是相同优先级运算符,则直接将BX,DX中的数据进行相应运算,输入=则输出运算结果,这时输出字符串Continue?,用户输入y/n执行继续计算和退出操作。
微机原理及应用课程设计-武汉科技大学-铁路与公路交叉路口的自动交通管理系统-Proteus-微机原理与接口技术
二○一三~二○一四学年第一学期信息科学与工程学院自动化系课程设计计划书姓名:学号:班级:课程名称:微机原理及应用课程设计学时学分: 1 周 1 学分指导教师:二○一三年12 月25 日(一)课程设计的任务(目的和要求)题目三铁路与公路交叉路口的自动交通管理系统某路口是由铁路和公路交叉行程,为保证交通的正常,需要设计一个铁道与公路交叉路口的自动交通管理系统。
设计要求:(1)当检测到铁轨振动(火车将到)时,自动发出警报信号,并控制关闭栅栏,同时公路方向红灯亮。
(2)火车将到时(关闭栅栏后),当检测到铁路上有物体时,自动发出紧急刹车信号,并以急促的声音报警,同时红灯闪烁。
(3)当铁轨震动信号由大到小达到一定程度(火车已过)时,自动解除报警,同时打开栅栏门,公路方向绿灯亮。
提示:铁轨振动信号可由振动传感器检测,这里用模拟电压代替,输出的报警信号可参考题目二,指示灯由发光二极管代替,关栅栏门信号由输出开关信号表示,输出的紧急刹车信号由DAC0832的输出模拟信号代替。
(二)总体方案铁轨振动信号可由振动传感器检测,这里用模拟电压(5V)代替,经ADC0808采集来的数字量由8086比较判断是否高于2.5V(若是高于2.5V,表示震动大,火车来了);输出的报警信号由喇叭给出,由三极管来驱动,通过控制通断的时间来调节音量,指示灯由发光二极管代替;铁轨上是否有物体通过数字电平信号来模拟(高电平表示有物体);关栅栏门信号由输出开关信号表示(高电平表示栅栏开),输出的紧急刹车信号(直接将ADC0808采集的数字量作为刹车信号)由DAC0832输出模拟信号,模拟信号由电压表显示出来。
(三)系统原理框图及其电路原理图8086最小系统(74LS373锁存地址)138译码器地址译码控制两片8255138译码器地址译码控制第一片8255,控制第片8255第一片8255的地址:60-62-64-66H 第一片8255的地址:70-72-74-76H(四)程序流程图 (五)设计总结ADC0808将震动信号(0-5V电压模拟)转换为数字量(查询法判断是否转换完毕),由第一片8255的PA0-PA2选通IN0,PA7启动转换,PC0查询EOC来判断是否转换完毕,PC7 控制OE是否允许输出。
微机原理及应用课程设计指导书
微机原理及应用课程设计指导书《微机原理及应用》课程设计指导书一、课程设计的目的和作用课程设计是培养和锻炼学生在学习完《微机原理及应用》后综合应用所学理论知识解决实际工程设计和应用问题的能力、进行工程实训的重要教学环节,它具有动手、动脑,理论联系实际的特点,是培养在校工科大学生理论联系实际、敢于动手、善于动手和独立自主解决设计实践中遇到的各种问题能力的一种较好方法。
《微机原理及应用》是一门应用性、综合性、实践性较强的课程,没有实际的有针对性设计环节,学生就不能很好的理解和掌握所学的技术知识,更缺乏解决实际问题的能力。
所以通过有针对性的课程设计,使学生学会系统地综合运用所学的技术理论知识,提高学生在微机应用方面的开发与设计本领,系统的掌握微机硬软件设计方法。
本课程设计是配合课堂教学的一个重要的实践教学环节,不仅要培养学生的实际动手能力,检验学生对本课程学习的情况,更要培养学生在实际的工程设计中查阅专业资料、工具书或参考书,掌握工程设计手段和软件工具,并能以图纸和说明书表达设计思想和结果的能力。
培养学生事实求是和严肃认真的工作态度。
通过设计过程,要求学生熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,使学生得到微机开发应用方面的初步训练。
让学生独立或集体讨论设计题目的系统方案论证设计、编程、软件硬件调试、查阅资料、绘图、编写说明书等问题,真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。
通过本次课程设计使学生熟练掌握微机系统与接口扩展电路的设计方法,熟练应用8086汇编语言编写应用程序和实际设计中的硬软件调试方法和步骤,熟悉微机系统的硬软件开发工具的使用方法。
二、课程设计内容与要求要求每个学生(或小组)都要自己动手独立设计完成一个典型的微机应用小系统.。
设计题目可以在给出的参考题目中选,也可以自己选设计题目,但难度不应小于参考题目,需经指导教师审查后方可确定是否采纳或修改设计题目。
武汉科技大学微机原理课程设计-模拟电梯系统(汇编)
二○一三~二○一四学年第二学期电子技术学院电子信息工程系课程设计报告书班级:姓名:课程名称:微机原理及应用课程设计学时学分: 1 周 1 学分指导老师:杨君二○一三年十二月三十一日一、课程设计目的:综合运用本课程知识,利用集成电路设计实现一些中小规模电子电路或者完成一定功能的程序,以复习稳固课堂所学的理论知识,提高程序设计实现系统、绘制系统电路图的能力,为实际应用奠定一定的基础。
二、课程设计时间安排:第一天:教师布置设计任务,讲解设计要求,提示设计要点。
第二~三天:查阅资料〔在图书馆或上网〕,提出设计方案。
第三~七天:画出详细设计图〔电路图〕,编写程序,调试程序,得出实验结果并写出设计报告。
三、课程设计选题:设计要求:(1). 在1-- 8楼之间一次可输入多个任意楼层号连续控制电梯按指定楼层号顺序上升与下降.以上过程完成后可重新输入任意楼层号连续控制电梯按指定楼层号顺序上升与下降.只有按ESC键才退出程序返回DOS状态。
例如: 1-3-5-7-6-4-2-1 (可观察教十楼电梯的实际运行情况).(2). 在1 -- 7 楼之间按任意顺序不连续控制电梯上升与下降. 按一次电脑键盘的上箭头电梯上升一楼,按一次电脑键盘的下箭头电梯下降一楼. (上箭头的ASCII码19H , 下箭头的ASCII码1AH . )(3). 在电梯上升与下降过程中,要显示出1--7 楼之间所要到达的楼层数,同时还要用箭头显示电梯是上升状态还是下降状态.(4). 电梯运行到指定楼层后,打开电梯门,然后关门继续运行.(5). 电梯运行时, 在任意时刻遇到紧急情况时应能实时中断电梯运行.也可以在任意时刻恢复电梯运行.(按A/a 键模拟中断发生,电梯停止运行.按B/b 键恢复电梯运行)(6). 在电脑屏幕上将电梯的平面模型改成三维立体模型.(7). 在电梯旁画一个小方块.这个小方块随电梯上升而上升,下降而下降.以增加电梯运行时的动感.(8). 电梯仿真软件运行时,应在电脑屏幕上详细说明其使用方法,以及本软件作者和日期.报告要求:(1). 在报告中应对电梯仿真软件的设计思想,设计方法用文字详细说明.(2). 在报告中应有完整的程序清单(必需加注释).(3). 在报告中应有完整的程序框图.(4). 谈谈自己通过这次设计实践的收获和体会.参考文献:[1] 朱定华,微机原理、汇编与接口技术,清华大学出版社,2005[2] 徐士良,PC机C图形编程手册,清华大学出版社,1994四、课程设计内容:1、程序模块:2、程序流程图:3、程序设计思路:电梯模拟程序主要是一个画图程序,程序需要利用一连串的画图指令来实现动画效果。
武科大微机课程设计交通灯
微机原理及应用课程设计-----------可编程芯片交通灯的应用姓名:学号:班级:二〇〇九年元月七日一、设计内容设有一十字路口,1、3为南北方向,2、4为东西方向。
每个路口均有红、黄、绿三个灯,初始状态为四个路口的红灯亮,2秒之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口通车;延时50秒后,1、3路口绿灯闪烁5秒后绿灯灭,黄灯亮,5秒后,1、3路口的红灯亮,而同时2、4路口的绿灯亮,2、4路口开始通车;延时30秒后,2、4路口绿灯闪烁5秒后绿灯灭,黄灯亮,5秒后,2、4路口的红灯亮,同时1、3路口的红灯亮(即四个路口的红灯亮),2秒之后,1、3路口的绿灯亮,2、4路口的红灯亮,重复上面的过程。
其中:●表示红灯,◎表示黄灯,〇表示绿灯二、设计思路1、总体思路根据设计内容,四个方向各有红,黄,绿三个灯,南北方向一致,东西方向一致,因此只需设计控制1、2路口6盏灯,3、4路口的灯与同方向的灯保持一致。
对6个交通灯的亮、灭、闪,用可编程并行接口芯片8255输出0、1来实现与改变,使其按规律变化。
每个灯的亮,灭,闪的时间用可编程定时器/计数器8253来实现。
当定时时间结束,则发出中断,同时在中断服务程序中设置交通灯的状态,用可编程中断控制器8259A 控制中断。
此后进行循环,实现交通灯的控制。
2、交通灯状态显示要求控制6个交通灯,将可编程并行接口8255的A口PA0-PA5与6个灯相接,由8255的输出改变灯的状态。
设置南(北)方向的红,黄,绿灯分别对应8255的PA0,PA1,PA2,东(西)方向的红,黄,绿灯分别对应8255的PA3,PA4,PA5。
3、定时器/计数器8253根据设计要求,定时2S,5S,50S,30S,通过定时器/计数器8253来实现。
但是在计算后发现,只用一片计数器时,需要赋的初值超过范围65536,因此采用计数器0和计数器1级联,计数器0设置为方式3,CLK0接1MHZ的时钟,OUT0接至计数器1的CLK1,计数器设置为方式0。
【精品完整版】微机原理课程设计(全自动豆浆机设计)
(此文档为word格式,下载后您可任意编辑修改!)一、题义分析及解决方案1.题义需求分析用STAR ES598PCI单板开发机设计一款全自动豆浆机,豆浆机的工作原理如下:上电-水位检测-水位合适开始加热-加热到80°C开始打浆(打15秒,停15秒,共4次)-继续加热一定时间(溢出到时暂时停止加热)。
打浆后继续加热,检测到4次溢出完成。
具体要求:(1)加热温度可以不到80度,设为35度;(2)水位合适由按键模拟;(3)打浆过程由电机模拟(4)温度要求显示由上述的需求可以分析如下:根据设计内容要求可知:1)用STAR ES598PCI单板开发机设计一个全自动豆浆机。
接口可以使用8255A 或8279,考虑该设计要求实现的功能较多,这里我们选择同时使用8255A和8279芯片,用于系统控制电路。
其中8255芯片主要用于控制把直流电机的控制信号输出到继电器来控制电机,接收水位测量的两个按键信号。
8279芯片用于控制温度的测量,控制LED数码管的温度显示。
2)水位合适检测和水位溢出检测由按键模拟,考虑到方便性,我们选择二进制开关,用1表示水位合适或溢出,0表示水位不合适或不溢出。
3)加热使用温度传感器DS18B20,DS18B20在本设计中主要是测量加热的温度并将接收的模拟信号转化为数字信号输出至8255A中。
4)打浆过程由直流电机模拟,打浆时,打15秒,停15秒,共四次,由软件用汇编语言编程来实现。
5)温度的显示用七段LED显示器2.解决问题方法及思路1)硬件部分为了完成这个实验,PC机和ES-PCI固然不可少,另外,为了能使各个功能模块更好的实现,我们选择8255和8279作为我们的主控芯片。
打浆功能由直流电机来实现,温度的测量由DS18B20来实现,温度的显示由LED来实现,水位的合适与溢出由两个二进制开关来实现,直流电机的控制由继电器来实现。
我们用8279的B口连接LED数码管段码,用于控制显示那一段,C口连接LED数码管选择脚。
微机原理与接口技术及实训课程设计
微机原理与接口技术及实训课程设计1. 前言微机原理与接口技术是计算机科学与技术专业中非常重要的一门课程,它主要介绍了微机的硬件组成、指令系统、中断与异常处理、接口技术等相关知识。
在此基础上,我们还可以通过实训课程进一步深入了解这些知识并进行实际操作。
本文将详细介绍微机原理与接口技术及实训课程设计中的主要内容和相关知识点,以供有需要的读者参考。
2. 微机原理2.1 微机硬件组成微机硬件由CPU、内存、输入输出设备、总线等组成,其中CPU是微机最重要的组成部分。
CPU内部包含了运算器、控制器、寄存器等基本模块。
内存是指微机中的存储器,在CPU执行程序时需要不断地从内存中读取指令和数据。
输入输出设备包括键盘、鼠标、显示器、打印机等,它们通过总线与CPU和内存相连通。
2.2 微机指令系统微机的指令系统包括一系列机器指令,它们是CPU执行程序的基本指令。
机器指令包括数据传输指令、算术运算指令、逻辑运算指令、条件转移指令、无条件转移指令等。
指令系统的设计与微机性能密切相关,一般采用CISC(复杂指令集)或RISC(精简指令集)两种设计方式。
2.3 微机中断与异常处理微机中断是指CPU在执行程序时遇到外部事件(如键盘输入、硬件故障等)时暂停当前程序的执行,去执行相应的中断程序,处理完成后再回到原来的程序继续执行。
异常处理是指CPU在执行指令时发现指令有误、数据异常、访问越界等情况时,会根据异常类别跳转到相应的异常处理程序进行处理。
2.4 微机接口技术微机接口技术是指将微机与外部设备(如传感器、机器人、仪器等)通过接口进行联通。
接口技术主要包括并口、串口、USB接口等。
其中并口是指能够并行传输数据的接口,串口是指能够串行传输数据的接口,USB接口是一种通用的高速串行总线,广泛应用于各种设备间的连接。
3. 实训课程设计3.1 实训目的微机原理与接口技术实训是该课程的重要组成部分,其主要目的是让学生通过实际操作深入了解微机的硬件组成、指令系统、中断与异常处理、接口技术等相关知识,并掌握实现具体接口应用的能力。
《微机原理课程设计》 简易全自动洗衣机设计解析
《微机原理课程设计》姓名:学号:__班级:专业:电气工程及其自动化学院:电气与信息工程学院江苏科技大学2013年9月目录一、课程设计内容 (1)二、系统功能要求 (1)2.1 基本功能要求 (1)2.2 附件功能要求 (1)三、系统方案论证 (1)四、系统硬件设计 (2)4.1 系统硬件原理 (2)4.2 功能模块设计 (6)4.3 遇到问题及解决措施 (7)五、系统软件设计 (8)5.1 总体设计思想 (8)5.2 功能模块设计 (10)5.3 遇到问题及解决措施 (11)六、总结 (11)七、附录 (13)简易全自动洗衣机设计一、课程设计内容(1)利用8255A芯片,在数码管上实时显示洗衣机档位和洗衣时间倒计时;(2)利用8254芯片,设置精确倒计时时间或者发送信号给蜂鸣器;(3)利用8259A芯片,设置按键或开关中断控制功能;(4)利用0809芯片,模拟水位传感器采集一个电压信号,控制电机旋转。
二、系统功能要求2.1 基本功能要求(1)能够实现洗衣机换挡功能,比如设置“1挡键”、“2挡键”等不同挡位;(2)能够实现电机的正转功能;比如设置电机正转3圈,反转3圈,循环工作;(3)能够实现洗衣机按键控制,比如设置“启动键”、“暂停键”或“停止键”(4)能够实现按键或开关控制洗衣机的暂停,比如按下“暂停键”,正在旋转的电机停止工作,再按一下“启动键”,洗衣机又继续工作;(5)能够实现洗涤、甩干连续自动功能,甩干后,洗衣机会通过蜂鸣器发出报警声音;2.2 附件功能要求(1)能够实现洗衣机单独甩干功能,此时电机旋转速度很快;(2)能够实现洗衣机进水、排水或者洗涤、漂洗、甩干等不同功能使用不同颜色的指示灯;(3)能够实现洗涤、漂洗、甩干全过程自动化;(4)能够实现洗衣机甩干后,发出优美的音乐,音乐一直响直到人为关掉或者音乐响一定时间后自动关闭。
(5)自己设计的其他有特色的功能。
三、系统方案论证3.1 方案一输入设备主要有启动按钮、暂停按钮、档位选择、排水按钮、及脱水按钮。
微机原理课程设计
音乐演奏程序设计1设计任务使用汇编语言设计一个在计算机上运行的音乐演奏程序,屏幕显示钢琴图像,按“A”键唱乐曲,按“X”鍵退出。
2任务扩展实现以下附加功能之一:(1)按“B”键,播放暂停;(2)按“C”键,实现重复播放;(3)按“D”键,加快播放速度;(4)按“E”键,降低播放速度;(5)按“F”键,直接跳转到下首歌。
我选择的附加功能是按“F”键,直接跳转到下一首歌。
3程序设计3.1程序设计思路画钢琴界面时,先画出一个钢琴键,然后再用循环画出其余的钢琴键。
画单个钢琴键时,先画出下面的长方形,然后画出上面的平行四边形,然后画出右边的短横线,短横线也是用循环的方法画出那么多来的。
画完所有的钢琴键后,再单独画出最后一个键右边的平行四边形阴影。
实现下一首功能是通过改变FLAG的值,让FLAG自动加一,然后比较FLAG 里面的值,按顺序跳到相应的地址,播放相应的音乐。
当FLAG的值为3后,自动将FLAG值改为零,此时再按下“F”,FLAG的值就会加一,变为“1”,然后又开始播放第一首歌。
任何时刻按下“X”,就会退出程序。
3.2程序流程图单个钢琴键的绘制程序的流程图如下:图 3.1:单键绘制流程图整个钢琴键盘绘制程序的流程图如下:图3-2:钢琴键盘绘制流程图音乐播放程序的流程图如下:图3-3:音乐播放程序的流程图3.3程序清单汇编程序的所有源代码如下:;画横线DRAW_LINEX MACRO START_X,START_Y,END_X,COLOR LOCAL PAINTPUSH AXPUSH BXPUSH CXPUSH DXMOV CX,START_XMOV DX,START_Y ;设置起始坐标MOV AH,0CH ;写像素MOV AL,COLOR ;颜色设置MOV BX,0 ;在当前页操作PAINT:INT 10H ;调用中断进行画一个像素点INC CX ;每画一个像素点,横坐标加一CMP CX,END_X ;判断是否画完JNZ PAINT ;未画完,就继续画下一个像素POP DXPOP CXPOP BXPOP AXENDM; 画竖线DRAW_LINEY MACRO START_X,START_Y,END_Y,COLORLOCAL PAINT1PUSH AXPUSH BXPUSH CXPUSH DXMOV CX,START_XMOV DX,START_YMOV AH,0CHMOV AL,COLORMOV BX,0PAINT1:INT 10HDEC DX ;没画完一个像素点,纵坐标减一CMP DX,END_Y ;判断是否画完JNE PAINT1 ;未画完,继续画下一个像素点POP DXPOP CXPOP BXPOP AXENDM;画矩形DRAW_REGTANGLE MACRO START_X,START_Y,END_X,END_Y,COLOR LOCAL DRAW_NEXTPUSH AXPUSH BXPUSH CXPUSH DXMOV AH,0CHMOV AL,COLORMOV BH,0MOV CX,START_XMOV DX,START_YDRAW_NEXT:INT 10HINC CXCMP CX,END_X ;判断一行是否画完JNE DRAW_NEXT ;未画完继续MOV CX,START_X ;回到起始横坐标DEC DX ;每画完一行,列坐标减一CMP DX,END_Y ;判断矩形是否画完JNE DRAW_NEXT ;未完继续画下一行POP DXPOP CXPOP BXPOP AXENDM;画右斜平行四边形DRAW_PARALLELOGRAMX MACRO START_X,START_Y,END_X,END_Y,COLOR LOCAL DRAWPXPUSH DSPUSH SSMOV SI,START_XMOV DI,START_Y ;设置起始坐标MOV BP,END_XDRAWPX:DRAW_LINEX SI,DI,BP,COLOR ;调用画横线宏INC SI ;每画完一行,横坐标起始点加一INC BP ;横坐标终点加一DEC DI ;纵坐标起始点减一CMP DI,END_Y ;判断是否画完JNE DRAWPX ;未画完,继续画下一行POP DSPOP SSENDM; 画阴影四边形DRAW_PARALLELOGRAMY MACRO START_X,START_Y,END_X,END_Y,COLOR LOCAL DRAWPYPUSH DSPUSH SSMOV SI,START_XMOV DI,START_YMOV BP,END_YDRAWPY:DRAW_LINEY SI,DI,BP,COLOR ;调用画竖线宏INC SI ;每画完一列,横坐标起始点加一 DEC BP ;纵坐标终点减一DEC DI ;纵坐标起始点减一CMP SI,END_X ;判断是否画完JNE DRAWPY ;未画完,继续画下一列POP SSPOP DSENDM;画间隙中的横线(侧边部分)DRAW_PARALINE1 MACRO START_X,START_Y,END_Y1,COLOR LOCAL NEXT_LINE1PUSH AXPUSH BXPUSH CXPUSH DXPUSHFPUSH DSMOV CX,START_XMOV DX,START_YMOV SI,START_XADD SI,2 ;横线长度为2MOV AH,0CHMOV AL,COLORMOV BX,0NEXT_LINE1:INT 10HINC CXCMP CX,SIJNE NEXT_LINE1MOV CX,START_XSUB DX,2 ;横线间间隙为2CMP DX,END_Y1JAE NEXT_LINE1POP DSPOPFPOP DXPOP CXPOP BXPOP AXENDM;画间键身间隙间的横线(键体部分)DRAW_PARALINE2 MACRO START_X,START_Y,END_Y2,COLOR LOCAL NEXT_LINE2,GO_ONPUSH AXPUSH BXPUSH CXPUSH DXPUSHFPUSH DSPUSH SSMOV SI,START_XMOV DI,START_YMOV BP,START_XADD BP,2 ;横线长度为2MOV AH,0CHMOV AL,COLORMOV BX,0GO_ON:ADD SI,2 ;每画完一条,起始横坐标加2 SUB DI,2 ;纵坐标减2ADD BP,2 ;终点横坐标加2MOV CX,SIMOV DX,DI ;重新设置起始点坐标NEXT_LINE2:INT 10HINC CX ;画完一个像素点,横坐标加一CMP CX,BP ;判断一条横线是否画完JNE NEXT_LINE2 ;未画完,继续画CMP DX,END_Y2 ;判断是否全部画完JA GO_ON ;未完,继续POP DSPOP SSPOPFPOP DXPOP CXPOP BXPOP AXENDMDATA SEGMENTWHITE DB 0FFHBLACK DB 0YELLOW DB 88HGRAY DB 8 ;键盘颜色定义STARTX DW 100 ;起始横坐标STARTY DW 300 ;起始纵坐标ENDX DW 130ENDY DW 280LASTX DW ?LASTY DW 200FLAG DB 1RATE DW ? ;播放速度变量INFO1 DB 0DH,0AH,'Welcome to this interface!$' INFO2 DB 0DH,0AH,'Please enter A to start!$'INFO3 DB 0DH,0AH,'OPTIONS:$'INFO4 DB 0DH,0AH,'WRONG ORDER!$'INFO5 DB 0DH,0AH,'INPUT AGAIN!$'INFO6 DB 0DH,0AH,'GO TO NEXT MUSIC!$'MUSLIST DB 0DH,0AH,'A: START'DB 0DH,0AH,'F: NEXT MUSIC'DB 0DH,0AH,'X: ESC'DB 0DH,0AH,'$' ;提示语;音乐一------------------------------------------------------------ MUS_FREG1 DW 330,294,262,294,3 DUP (330)DW 3 DUP (294),330,392,392DW 330,294,262,294,4 DUP (330)DW 294,294,330,294,262,-1MUS_TIME1 DW 6 DUP (25),50DW 2 DUP (25,25,50)DW 12 DUP (25),100;音乐二----------------------------------------------------------- MUS_FREG2 DW 330,392,330,294,330,392,330,294,330DW 330,392,330,294,262,294,330,392,294DW 262,262,220,196,196,220,262,294,332,262,-1MUS_TIME2 DW 3 DUP(50),25,25,50,25,25,100DW 2 DUP(50,50,25,25),100DW 3 DUP(50,25,25),100;音乐三----------------------------------------------------------- MUS_FREG3 DW 262,262,294,262,349DW 330,262,262,294,262DW 392,349,262,262,523DW 440,349,262,262,466DW 466,440,262,392,349,-1MUS_TIME3 DW 50,50,100,100,100DW 100,100,50,50,100,100DW 100,100,100,50,50,100DW 100,100,100,100,100,50DW 50,100,100,100,100,100 ;音乐段DATA ENDSSTACK SEGMENTDB 400 DUP ('STACK')STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: ;主程序MOV AX,DATAMOV DS,AXCALL PIANOCALL MUSIC_PLAY; 音乐播放子程序MUSIC_PLAY PROCSHOW MACRO b ;定义一个宏显示字符串LEA DX,bMOV AH,9INT 21HENDMADDRESS MACRO A,B ;音乐地址宏LEA SI,ALEA BP,DS:BENDMSHOW INFO1SHOW INFO2SHOW INFO3SHOW MUSLIST ;提示语INPUT:MOV AH,01HINT 21HCMP AL,'X'JZ RETU ;按下为‘X’则退出dosCMP AL,'A' ;按下为‘A’则播放音乐JZ A0 ;是则跳到A0SHOW INFO4SHOW INFO5JMP INPUT ;否则提示输入错误,重新开始A0:ADDRESS MUS_FREG1,MUS_TIME1MOV RATE,7500 ;设置正常播放速度CALL MUSICJMP AGAINF0:CMP AL,'F'JNZ EXITNEXT:SHOW INFO6ADD FLAG,1NUM1:CMP FLAG,1JNZ NUM2ADDRESS MUS_FREG1,MUS_TIME1CALL MUSICJMP AGAINNUM2:CMP FLAG,2JNZ NUM3ADDRESS MUS_FREG2,MUS_TIME2CALL MUSICJMP AGAINNUM3:MOV FLAG,0ADDRESS MUS_FREG3,MUS_TIME3CALL MUSICJMP AGAINRETU:MOV AH,4CHINT 21HAGAIN:SHOW INFO5JMP INPUTEXIT:SHOW INFO4 ;按键错误,重新选择 SHOW INFO5JMP INPUTRETMUSIC_PLAY ENDP;发声GENSOUND PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH DIMOV AL,0B6H ;开扬声器OUT 43H,ALMOV DX,12HMOV AX,348CHDIV DIOUT 42H,ALMOV AL,AHOUT 42H,ALIN AL,61HMOV AH,ALOR AL,3OUT 61H,ALWAIT1:MOV CX,RATE ;设置播放速度 CALL WAITFDELAY1:DEC BXJNZ WAIT1MOV AL,AHOUT 61H,ALPOP DIPOP DXPOP CXPOP BXPOP AXRETGENSOUND ENDPWAITF PROC NEARPUSH AXWAITF1:IN AL,61HAND AL,10HCMP AL,AHJE WAITF1MOV AH,ALLOOP WAITF1POP AXRETWAITF ENDPMUSIC PROC NEARPUSH DSSUB AX,AXPUSH AXFREG:MOV DI,[SI] ;获取频率值CMP DI,-1 ;音乐播放结束判断JE END_MUSMOV BX,DS:[BP]CALL GENSOUND ;播放一个频率ADD SI,2ADD BP,2 ;获取下一频率值,及其播放时间MOV AH,0BH ;判断键盘是否有键按下INT 21HCMP AL,0FFHJE INT9 ;有键按下则转去执行该指令JMP FREG ;无键按下则继续读取下一个频率值END_MUS:RETINT9:PUSHFPUSH AXPUSH DSPUSH ESPUSH CSPOP DSPUSH CSPOP ESIN AL,60H ;从键盘获取该键值ASCII码MOV AH,0INT 16H ;读取并保存到AL中CMP AL,'X' ;若为‘X’则退出dos操作界面JZ X0CMP AL,'F' ;若为‘F'则跳到下一首JZ NEXT1INT9_QUIT:POP ESPOP DSPOP AXPOPFJMP FREGX0:POP ESPOP DSPOP AXPOPFJMP RETUNEXT1:POP ESPOP DSPOP AXPOPFJMP NEXTMUSIC ENDP; 键盘绘图PIANO PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXMOV AH,0 ; 设置屏幕显示图形方式:每屏幕字符数80×25, 16色MOV AL,12HINT 10H ; 调用10H的0号功能中断; 键盘绘制主程序MOV CX,12DRAWING:CALL PIANO_DRAWCALL LINE_DRAWLOOP DRAWINGCALL PIANO_DRAWADD STARTX,30PUSH DXMOV DX,STARTXMOV LASTX,DXADD LASTX,80POP DXADD ENDX,30DRAW_PARALLELOGRAMY STARTX,STARTY,LASTX,ENDY,GRAY DRAW_LINEX 100,300,STARTX,GRAYPOP DXPOP CXPOP BXPOP AXRETPIANO ENDPPIANO_DRAW PROCDRAW_REGTANGLE STARTX,STARTY,ENDX,ENDY,WHITEDRAW_LINEX STARTX,ENDY,ENDX,GRAYDRAW_PARALLELOGRAMX STARTX,ENDY,ENDX,LASTY,WHITE RETPIANO_DRAW ENDPLINE_DRAW PROCDRAW_PARALINE1 ENDX,STARTY,ENDY,YELLOWDRAW_PARALINE2 ENDX,ENDY,LASTY,YELLOWADD STARTX,32ADD ENDX,32RETLINE_DRAW ENDPCODE ENDSEND START4程序运行与调试4.1运行程序把编好的源程序命名保存为YINYUE.asm,在MF2KP集成环境中进行调试,首先点运行选项中的调试,如果编译成功,就选择运行选项中的生成exe文件,这样就产生了一个可运行程序,然后点击运行,就会看到与题目要求相符的界面.程序运行截图:开始界面:图4-1:开始界面运行开始后显示钢琴界面,并显示提示语言。
微机原理课程设计报告
微型计算机技术课程设计指导教师:班级:姓名:学号:班内序号:课设日期:_________________________目录一、课程设计题目错误!未定义书签。
二、设计目的错误!未定义书签。
三、设计内容错误!未定义书签。
四、设计所需器材与工具3五、设计思路错误!未定义书签。
六、设计步骤(含流程图和代码)错误!未定义书签。
七、课程设计小结36一、课程设计题目:点阵显示系统电路及程序设计利用"汇编语言与微型计算机技术"课程中所学的可编程接口芯片8253、8255A、8259设计一个基于微机控制的点阵显示系统。
二、设计目的1.通过本设计,使学生综合运用"汇编语言与微型计算机技术"、"数字电子技术"等课程的内容,为今后从事计算机检测与控制工作奠定一定的根底。
2.掌握接口芯片8253、8255A、8259等可编程器件、译码器74LS138、8路同相三态双向总线收发器74LS245、点阵显示器件的使用。
3.学会用汇编语言编写一个较完整的实用程序。
4.掌握微型计算机技术应用开发的全过程,包括需求分析、原理图设计、元器件选用、布线、编程、调试、撰写报告等步骤。
三、设计内容1.点阵显示系统启动后的初始状态在计算机显示器上出现菜单:dot matrix display system1.←left shift display2.↑up shift display3.s stop4.Esc Exit2.点阵显示系统运行状态按计算机光标←键,点阵逐列向左移动并显示:"微型计算机技术课程设计,点阵显示系统,计科11302班,陈嘉敏,彭晓〞。
按计算机光标↑键,点阵逐行向上移动并显示:"微型计算机技术课程设计,点阵显示系统,计科11302班,陈嘉敏,彭晓〞。
按计算机光标s键,点阵停顿移动并显示当前字符。
3.完毕程序运行状态按计算机Esc键,完毕点阵显示系统运行状态并显示"停〞。
微机原理课程设计毕业设计(论文)
一、设计任务1、编写一汇编语言程序,要求从键盘接收一个四位的十六进制数,并在终端上显示与它等值的二进制数和十进制数。
2、掌握接受键盘数据的方法,了解将键盘数据显示时须转换为ASCII码的原理。
二、设计方案(1)实现十六进制数向二进制数的转换第一步:实现十六进制数的输入和对应二进制数的转换。
利用DOS系统功能中的1号输入字符的功能,接收输入的十六进制数,将其转换成对应的二进制数(若是0-9之间的数直接屏蔽高4位,若是A-F之间的数在屏蔽高4位后还要加9)。
BX中存放的是二进制数的结果,利用算数左移指令使BX左移4位,然后与下一次转换后的数相加。
如此循环4次,得到对应的二进制数。
第二步:实现显示转化后的二进制数。
利用ROL和RCL指令,从最高位起循环取出每位二进制数,将其转换成对应的ASSCII码,调用DOS系统功能调用中2号功能显示。
(2)实现十六进制数向十进制数的转换。
第一步:从十六进制向二进制转换,由于十六进制和二进制的特殊关系,它们之间的转换非常简单。
第二步:从二进制转换为十进制,方法是将要转换的二进制预先放到AX寄存器中,判断AX中数的符号,若为负数,则将负号送入输出缓冲区,并求AX的绝对值;若AX中的数为正数,则不做其他处理,此时AX中即为无符号二进制数。
然后将无符号二进制数转换为十进制,可采用将AX除以10,得到第一个商和第一个余数,第一个余数就是所求十进制的个位,将第一个余数除以10,得到第二个商和余数,第二个余数就是十进制的十位数,重复以上过程,一直循环到商为零时,得到的余数就是所求十进制的最高位数,这就是数制转换中常用的“除模留余倒排列”法则。
主程序框图GETNUM子程序框图四、程序运行结果截图通过设计和编写程序代码,运行程序后,其结果先为显示开始界面几位菜单界面,而后随意输入一个小于4位的十六进制数,打完字敲回车,马上出现所对应的十进制数。
当连续输入4位的十六进制数直接输出十进制数,同时,再打回车,可以再输入十六进制数,并且可以循环运行。
武汉科技大学微机原理实验报告
实验一:debug的基本使用一、实验目的:熟练和掌握debug的常用命令,学会用debug来调试程序。
二、实验器材:debug软件三、实验过程:1.debug的几种重要的语言命令:R——显示寄存器内容;T——单步执行命令;2.完成下列的指令序列并用debug验证:(1)传送10H到AL寄存器 MOV AL,10H (2)将(AL)*2 ADD AL,AL(3)传送15H到BL寄存器 MOV BL,15H(4)(AL)*BL MUL BL问最后结果(AX)=?AX=02A0H四、实验结果:图4.1“实验过程2”debug验证结果实验二:熟悉指令集及寻址方式一、实验目的:①熟悉微机的寻址方式及基本指令的功能,进一步理解和巩固课堂学习内容。
②掌握汇编语言程序设计上机过程,掌握汇编语言源程序结构,为后续汇编语言程序设计打好基础。
③熟悉debug调试工具的使用方法。
二、实验器材:DEBUG软件三、实验过程:1.熟悉指令集:1.1 MOV BP,09 正确1.2 MOV [BX],[BP] 错误,两个操作数不能同时为寄存器操作数1.3 ADD AX,[SI+DI] 错误,存储器寻址中有效地址不能由两个变址寄存器组成2.熟悉寻址方式:在DEBUG下汇编下列指令,并查看每条指令执行后的结果: MOV BX,2000hMOV [BX], CS四、实验结果:1.1结果1.2结果1.3结果2结果实验三:顺序程序、分支程序、循环程序的设计一、实验目的:利用Masm for Windows软件对顺序程序、分支程序和循环程序进行设计。
二、实验器材:Masm for Windows 集成实验环境2015软件三、实验过程:3.1`3.2分支程序3.3循环程序四、实验结果4.1顺序程序编程设计代码段4.2分支程序编程设计代码段4.3循环程序编程设计代码段。
微机设计-简单文件管理 - 武科大
二○一二~二○一三学年第二学期电子信息工程系课程设计报告书姓名:*********学号:************班级:**************************课程名称:微机原理及应用课程设计学时学分:1周1学分指导教师:******二○一三年二月题目:简单文件管理A、在微机课程设计中,所使用的基本的知识点描述文件的建立、打开、读出、写入、关闭等文件操作的系统调用如下:在DOS 2.0以上的版本中,为了支持层次结构,引用了树形结构目录,因此相应增加了一个新的存取方式即文件代号存取方式(file handles access)。
这种方式将有关文件的完整的路径名(path name),一旦文件的路径名被送入操作系统,就被赋予一个简单的文件代号(file handle),这个文件代号是一个16位的数。
以后对该文件进行读写时,就用这个文件代号去查找相应的文件。
对于每一个打开的文件,DOS还为其管理一个读写指针(read/write pointer),读写指针总是指向下一个要存取的文件的字节,这个读写指针可以引动到文件的任意位置,从而能满足随机存取的要求。
写磁盘文件:写一个新文件或用同一个文件名重写一个旧文件时,首先要建立文件并赋给它一个属性,如果DOS发现要建立的文件已经存在,那么原来的文件就破坏。
建立文件的功能调用是3CH,调用该功能时,在DX中装入ASCIZ串的地址,在CX中装入文件的属性。
当写入文件操作完成后,必须用DOS功能调用3EH来关闭文件,以确保操作系统将文件记录在磁盘上,这个操作只要求在BX中放入文件代号读磁盘文件:N调用读文件或设备功能(3FH),要求把文件打开取得文件代号,然后按照指定的字节数从磁盘中把文件读出,送入内存中预先定义好的数据缓冲区。
如果读入的字节数大于缓冲区空间,那么,这些多余的数据将送到程序所占空间上的存储器中。
打开文件操作(3DH)要检查文件名是否合法,文件是否有效。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计报告学号:姓名:学院:信息科学与工程学院专业:电子信息工程班级:电信班指导教师:熊庆国用汇编语言实现电话本功能一、目的:运用所学汇编语言知识,编写一个具有电话本功能的程序,达到提高动手能力以及检验对微机原理课程学习和掌握的程度。
二、内容及要求:1)能够储存50个电话号码,其中包括人名(20个字符),电话号码(11个字符)。
2)系统可以随时接收新的人名及电话号码。
3)系统具有随时查询号码的功能,输入人名后,在屏幕上显示其相应的电话号码。
4)运行此系统后,显示菜单选项进行功能选择。
三、数据存储方案:对于电话薄的每一位联系人,姓名占20个字符,加上结束标志$共21字符;电话占11个字符,加上结束标志$共12个字符。
所以每一位联系人共占据33个单元,这样我们可以在存储区开辟33*50=1650字节的地址空间。
四、流程图:(1)程序框图:在主菜单界面下有三大模块,分别是:添加联系人信息,搜索联系人信息,退出系统。
(2)汇编流程图:有错误有错误有错误建立、修改asm 文件 汇编生成obj 文件正确? 链接、生成exe 可执行文件正确? Debug 调试 正确? 结束 开始五、汇编运行效果:(1)在win7命令窗口下使用MASM对源程序进行编译,生成目标文件weiji.obj;(2)对生成的weiji.obj文件使用link命令进行链接生成weiji.exe可执行文件;(3)在win7继续执行debug weiji.exe,会出现如下结果,这是由于版本不兼容造成的。
我之后的实验步骤均是在DOSBox软件下完成的。
(4)打开DOSBox,找到汇编路径。
执行命令debug.exe,然后使用U命令进行反汇编。
(5)继续使用G命令运行程序,得到如下界面菜单显示。
按“1”键后显示添加联系人信息,添加完毕后显示菜单。
(6)按“2”键后显示搜索联系人姓名,回车后显示对应联系人电话号码,同时显示菜单界。
(7)按“3”键后显示程序终止正常,退出系统。
此时进入汇编命令界面,输入-Q(或-q)退出汇编。
六、问题及解决方法:在做这个课程设计过程中,第一个问题便是电话薄中联系人信息的存储地址如何进行比较好的分配,同时尽量兼顾存储空间利用的最大化。
其中还有一些小的细节问题,比如说在姓名和电话号码后分别需要加上结束标志字符“$”, 这样的话每个联系人的存储单元就要在原来的基础上增加2个单元。
其次的问题就是在各个模块子程序的最后结尾处如何正确使用好条件转移指令,如JMP、JE、JL和JNE等,刚开始的时候总是被这些东西搞得很迷糊,后来认真地复习了微机课本中这部分知识的内容,再加上同学的帮助,终于解决了。
除此之外,还有关于9号和10号功能调用的问题。
9号功能调用执行后,显示器将显示待显示的字符串。
执行前要在DS数据段定义一串字符,同时该字符必须以“$”结尾,这也就是上面所说的需要在姓名和电话号码后加上“$”标志的原因;10号功能调用,当需要输入字符串时,应当在DS数据段中事先定义一个变量数据区IBUF,需要注意的是,汇编语言是将Enter键仅定义为回车,即光标移至本行的行首,10号功能调用每次都要从键盘接收1个Enter键,当然就需要执行1个回车操作,将显示器光标移到本行的行首。
七、总结与心得体会:在决定做这个课程设计时,首先的问题是在自己的个人电脑上无法实现程序的运行,在win7系统的cmd.exe命令窗口下不能执行相应的程序,因为64位的win7没有Debug.exe调试程序,于是出现了以上所提及的问题,如果不能执行程序,也就意味着无法验证程序的正确与否,本来准备放弃的,但是后来我在网上搜索相关资料,发现可以通过DOSBox软件实现程序的执行与汇编,于是喜出望外!在程序编写工程中,我又认真学习了关于汇编语言的相关知识;在程序基本编好之后,我还需要重新复习上学期做过的《微机原理应用与汇编》实验,进一步熟悉Debug的各种常用命令和汇编程序编译的步骤,然后在编译过程中不断调试改正程序以达到预期目的。
温故而知新,现在我对这些知识又有了新的更进一步的理解。
通过这一次微机课程设计,我对汇编程序流程图和编程模块化思想有了更深的认识,在程序设计过程中,首先要明白其算法和大致的流程,做到有一个宏观的认识,而流程框图刚好起到了这样的一个作用,让我们对每一步要完成的任务要有一个很清晰的思路。
同时当要写一个功能很复杂的程序时可以分几个小的模块,每个模块实现后再进行整体的设计编写,这样不仅可以使编程变得更简单,而且便于发现和检查错误。
最后,在做课程设计过程中,通过查阅资料我学到了不少的新知识,拓宽了自己的知识面,开阔了视野。
与此同时,我也体会到了和同学探讨的好处,当遇到了看书查资料仍然不能解决的问题时,可以尝试和同学讨论一下,在讨论中可以解决很多问题,而且还能加深自己的印象,从中获益匪浅。
八、附录:程序清单STACK SEGMENT STACK ;堆栈段DW 64 DUP(?)STACK ENDSDATA SEGMENT ;数据段DISP DB '%%%%%%% Menu %%%%%%%%%%',0DH,0AH,'Enter your choice',0DH,0AH,'1.Add contacts information',0DH,0AH,'2.Search contacts',0DH,0AH,'3.Quit!',0DH,0AH,'%%%%%%%%%%%%%%%%',0DH,0AH,24H ERROR DB 'Error! Please input the right choice!$'DISP1 DB 'Input the name:$'DISP2 DB 'Input phone number:$'DISP3 DB 'Input the name you want search:$'DISP4 DB 'NO information exist!$'DISP5 DB 0DH,0AH,'$'DISP6 DB '%%% PhoneBook %%%',0DH,0AH,24HDISP7 DB ' The information is successfully stored!$'DISP8 DB ' %%%% $'CHOICE DB 2,0,2 DUP(0) ;选择功能NAMEBUF DB 21,0,21 DUP(0) ;姓名21单元NUMBERBUF DB 12,0,12 DUP(0) ;电话12单元SERCHNAME DB 21,0,21 DUP(0) ;搜索姓名DB '$'INFO DB 1650 DUP(0)DA TA ENDSCODE SEGMENT ;代码段ASSUME CS:CODE,DS:DA TA,SS:STACKSTART: PUSH DSSUB AX,AX ;AX清零PUSH AX ;压栈MOV BX,OFFSET INFOMOV AX,DATAMOV DS,AXA0: MOV DX,OFFSET DISP ;显示菜单选择界面MOV AH,9INT 21HMOV DX,OFFSET DISP5MOV AH,9INT 21HMOV DX,OFFSET CHOICE ;用户输入选择功能MOV AH,10MOV DX,OFFSET DISP5MOV AH,9INT 21HMOV SI,OFFSET CHOICE ;判断用户输入INC SIINC SIMOV AL,[SI]SUB AL,31HJE A1 ;选择功能1 执行A1MOV AL,[SI]SUB AL,32HJE A2 ;选择功能2 执行A2MOV AL,[SI]SUB AL,33HJE A3 ;选择功能3 执行A3MOV DX,OFFSET ERROR ;选择错误,显示error!MOV AH,9INT 21HMOV DX,OFFSET DISP5MOV AH,9INT 21HMOV DX,OFFSET DISP6MOV AH,9INT 21HJMP A0 ;显示出错后返回主菜单界面A1: CALL ENTERJMP A0 ;返回主菜单界面A2: CALL SERCHJMP A0 ;返回主菜单界面A3: MOV AH,4CHINT 21H ;退出程序ENTER PROC NEAR ;进入添加联系人模块SUB CX,CXMOV DX,OFFSET DISP1 ;界面显示输入联系人姓名MOV AH,9INT 21HMOV DX,OFFSET NAMEBUF ;用户输入联系人姓名MOV AH,10INT 21HMOV SI,DX ;将缓冲区中名字复制到预定义存储区INFO中MOV CL,[SI+1]N: MOV AL,[SI+2]MOV [BX],ALINC SILOOP NMOV BYTE PTR [BX],'$'MOV DX,OFFSET DISP5 ;界面显示输入号码MOV AH,9INT 21HMOV DX,OFFSET DISP2 ;用户输入对应号码MOV AH,9INT 21HMOV DX,OFFSET NUMBERBUFMOV AH,10INT 21HMOV SI,DX ;将缓冲区中号码复制到预定义存储区INFO中MOV CL,[SI+1]INC BXP: MOV AL,[SI+2]MOV [BX],ALINC BXINC SILOOP P ;循环操作MOV BYTE PTR [BX],'$'INC BXMOV DX,OFFSET DISP5MOV AH,9INT 21HMOV DX,OFFSET DISP7 ;界面显示信息存储成功MOV AH,9INT 21HMOV DX,OFFSET DISP5MOV AH,9INT 21HMOV DX,OFFSET DISP6MOV AH,9INT 21HRETENTER ENDPSERCH PROC NEAR ;查询联系人模块MOV DX,OFFSET DISP3 ;界面显示用户输入查询的姓名MOV AH,9INT 21HMOV DX,OFFSET SERCHNAME ;用户输入要查询的名字MOV AH,10INT 21HMOV DX,OFFSET DISP5MOV AH,9INT 21HMOV SI,OFFSET INFO ;执行查询操作DEC SIB00: MOV DX,OFFSET SERCHNAMEMOV DI,DXINC DIB0: INC DIINC SICMP BYTE PTR [SI],'$' ;比较JE B1 ;若SI指向内容为'$',找到信息,跳转到B1输出信息MOV AL,[DI]CMP AL,[SI]JE B0 ;逐个字符比较,相同跳回B0继续比较判断CMP SI,BX ;若不同则与BX(INFO区已存信息末地址)比较JL B2 ;SI小于BX,则跳转至B2JMP B3 ;反之,未查找到,跳转至B3B2: MOV CX,2DEC SIB20: INC SICMP BYTE PTR [SI],'$' ;比较JNE B20LOOP B20JMP B00 ;返回B00继续查找,进行比较判断B1: MOV DX,OFFSET DISP8 ;查找到信息,输出信息MOV AH,9INT 21HMOV DX,SIINC DXMOV AH,9INT 21HMOV DX,OFFSET DISP8MOV AH,9INT 21HMOV DX,OFFSET DISP5MOV AH,9INT 21HMOV DX,OFFSET DISP6MOV AH,9INT 21HJMP EXIT ;信息输出完毕,跳至EXIT结束子程序B3: MOV DX,OFFSET DISP4 ;未找到所需信息,提示输出并结束子程序MOV AH,9INT 21HMOV DX,OFFSET DISP5MOV AH,9INT 21HMOV DX,OFFSET DISP6MOV AH,9INT 21HEXIT: RETSERCH ENDPCODE ENDSEND START ;主程序结束10。