1、微机原理课程设计 1 目目 录录 一、设计目的2 二、设计要求2 三、设计思路2 四、程序框图3 五、程序清单4 六、调试结果8 七、心得体会10 微机原理课程设计 2 一、一、 设计设计目的目的 1、 运用所学汇编语言知识,编写一个具有电话本功能的程序; 2、 进一步熟悉 DEBUG 调试软件的基本命令; 3、 掌握分支、循环、子程序调用等基本程序结构,熟悉各种循环、跳 转命令。学会各种功能调用的使用方法; 4、 学会综合程序的设计、编制及调试; 5、 通过完成课程设计,达到提高动手能力以及检验对微机原理课程学 习和掌握程度的目的。 二、二、 设计要求设计要求 1、 能够储存 50 个电话号
2、码,其中包括人名(20 个字符)以及电话号码 (8 个字符) ; 2、 系统可以随时接受新的人名和电话号码; 3、 系统具有随时查询号码的功能,输入人名后,在屏幕上显示其相应 的电话号码; 4、 运行此系统后,显示菜单选项进行功能选择。 三、三、 设计思路设计思路 该电话本能够存储 50 个人的信息,每个人由姓名和电话号码组成。 姓名占 20 个字节,电话号码占 8 个字节,姓名后面有一个$字符,电话号 码后面也有一个$字符,所以每个人的信息总共占 30 个字节。50 个人则 需要1500个字节空间。 可以在数据段中开辟一片连续的存储区, 包含1500 个字节,如下图所示: 微机原理课程设计
3、3 在数据段中定义存储单元如下所示: hu db 1500 dup(0) 运行程序之后, 显示主菜单, 可以先在数据段中定义需要显示的内容, 然后用 9 号功能调用进行显示。添加新的人名和电话号码时,需要用 10 号功能调用输入字符串,由于 10 号功能调用时,数据区的第一个单元规 定了数据区的大小,第二个单元是预留给 10 号功能调用装载实际输入字 符数的,还有一个数据单元需要放回车命令的 ASCII 码 0DH,因此输入姓 名时需要定义 23 个数据单元,输入电话号码时需要定义 11 个数据单元。 应在 DS 数据段中事先定义一个变量数据区,如下所示: hu1 db 23,0,23 dup
4、(0) hu2 db 11,0,11 dup(0) 由于数据区 hu1 和 hu2 需要多次使用,为了避免输入内容不能完全 覆盖上次的数据, 因此在输入完成之后, 需要把回车及其以后的内容置零。 然后把 hu1 和 hu2 中的内容从第三个字节单元开始逐字节的复制到 hu 中 去,在第 21 个和第 30 个存储单元中添加一个$字符,完成添加功能。 在进行查询功能时,先用 10 号功能调用将需要查询的姓名输入 hu1 中,把 hu1 中的字符从第 3 个开始,与 hu 中的每个人的 30 个存储单元 的前 20 个字符逐个比较,如果完全相同,则将该人的姓名和电话号码输 出,如果找到不相同的字符
5、,则与下一个人名继续比较。直到把 50 个人 的信息全部比较完, 如果还没有相同的字符串, 则电话本中不存在这个人。 四、程序框图四、程序框图 程序设计框图如下所示: 微机原理课程设计 4 五、程序清单五、程序清单 stack segment db 32 dup(0) stack ends data segment ;定义数据段,为 9 号功能调用和 10 号功能调用做准备 chen1 db welcome to use the phone book!,0DH,0AH,$ chen2 db 0DH,0AH,please choose the below function!,0DH,0AH,$
6、chen3 db 1 for adding new name!,0DH,0AH,$ chen4 db 2 for searching a name!,0DH,0AH,$ chen5 db 0DH,0AH,please adding the new name(within 20 words)!,0DH,0AH,$ chen6 db 0DH,0AH,please input the new phone number(within 8 numbers)!,0DH,0AH,$ chen7 db 0DH,0AH,Are you going to adding the new name?(Y or N),0DH,0AH,$ chen8 db 0DH,0AH,Are you sure t