武汉科技大学微机原理课程设计

合集下载

微机原理课程设计

微机原理课程设计
微机原理课程设计
前言
加热器数字控制系统的设计与功能的实现要求学生在学习完微机原理及应用这门课的基础上,在对芯片类知识以及汇编语言有一定基础的前提下进行的一个非常体现学生综合能力的一个设计。要想很好的完成这个题目,必须对芯片的功能有很详细的了解,同时也要求学生的汇编语言基础要扎实。计算机技术的飞速发展,使的计算机知识和应用技能已成为人类知识经济的重要组成部分。《微型计算机原理》正是掌握计算机结构和工作原理的入门课程,它偏重于实际应用的课程,要求学生在学好理论知识的基础上,培养定的实践动手操作能力,学生将所学的理论知识和实践有机结合,初步掌握计算机应用系统设计的步骤和接口设计的方法,提高分析和解决实际问题的能力。微机原理课程设计是对《微型计算机原理》课程理论教学和实验教学的综合和总结。
[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-微机原理与接口技术

微机原理及应用课程设计-武汉科技大学-铁路与公路交叉路口的自动交通管理系统-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是否允许输出。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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。

相关文档
最新文档