2022年微机原理与接口技术实验总结 .pdf
微机原理与接口技术实验总结11107108 徐寒黎一、实验内容以及设计思路1、试编写一程序,比较两个字符串STRING1 、 STRING2 所含字符是否相同,若相同输出“ MATCH”, 若不相同输出“NO MATCH” 。设计思路:定义一个数据段,在数据段中定义两个字符串作为STRING1 、 STRING2以及几个用于输入提示的和输出所需内容的字符串,定义一个堆栈段用于存放,定义代码段。 关键步骤以及少量语句: 第一步将 STRING1 和 STRING2 都实现用键盘输入,方法是MOV DX,OFFSET STRING2 MOV AH,0AH INT 21H 并且显示在显示器上,显示方法将0AH改成 09H ,语句与上面类似。然后进行比较第一个单元,MOV AL,STRING1+1 CMP AL,STRING2+1 JNZ NOMATCH 若字符串长度不等,则直接跳转,输出输出“NO MATCH” ;若长度相等再逐个比较LEA SI,STRING1+2 LEA DI,STRING2+2 MOV CL,STRING1+1 MOV CH,0 CLD REPE CMPSB JCXZ MATCH,意思是全部相同就跳转MATCH,输出“ MATCH” ;不然进入下面的NOMATCH。退出。试编写求级数13+23 +33 . 前几项和刚大于10000的程序。设计思路: 原先编写的程序,设定和为10000,结果是 14。但要求高一点的话,可以自己设置,实现用键盘输入和的值。一个难点是将输入的ASCII 码字符串,转换成与之相同的十进制数的数值。关键的思路部分是: 从 1 开始求级数, 将和的值存在 AX里,要加下一项级数前,比如这时已经加到4,PUSH 一下 AX ,然后将 5 乘三遍,将乘积 MOV 到 BX里,再POP AX ,然后将 BX的值加到 AX里,然后将 AX与 N比较,如果比 N小就继续上述步骤,知道刚比N大就输出数字。试编写一程序,完成字符串中各字符出现频度的统计,统计结果在屏幕上输出。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 3 页 - - - - - - - - - 设计思路:因为这个程序需要统计所有的字符,所以首先要定义一个存储区,用来存放 26 个字符以及每个字符出现的个数。用键盘控制输入字符串以后,将字符串的第一个字符与这二十六个字符逐个比较,若有相同,在存放相应次数的存储单元的值上加1。然后比较第二个字符,依次类推,将字符串里的字符全部比较完。将个数大于1 的字符以及字符的个数都输出到屏幕上。退出语句。缺点和不足:这样需要定义一个非常繁的存储区。可以根据输入的字符,然后进行比较和统计。设计一个动画程序。设计思路: 这个程序参考了网上的资料,没有什么新意,是小鸟的图形,可以用上下左右键进行移动,可以退出。步骤:首先设置堆栈段,数据段,代码段,设置显示方式等一些属性,设置背景色,设置小鸟的初始位置以及写出小鸟图形的像素的点。功能性的语句是, 用键盘接受一个输入,将其与1bh 比较,用 JZ 语句跳转到退出。若不是便与48h 比较,看是否为向上,是则跳转到相应语句,不是则继续与50h 比较; ,看是否向下,是则跳转到关于向下移动的相关语句,否则再与4bh比较,看是否向左,依次类推,根据键盘输入的上下左右跳转到不同的语句。再将小鸟的位置进行与上下左右键的输入相应的移动。最后编写好退出语句。2、硬件接口主要是了解8255 与 8253 的功能,以及控制字。I/O 地址译码只要对硬件概念清晰,很简单的。基本上没有什么创造性。收获:熟悉实验箱结构,了解每部分元件和标注的意义。掌握 I/O 地址译码电路的工作原理。可编程定时器8253 1,对照实验电路图,将计数器0 设置为方式0,即数初值设为N(N0fh) ,用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并用逻辑笔观察OUT0 点平变化。2,将计数器0、计数器 1 分别设置为方式3,计数初值设为1000 用逻辑笔观察out1 输出电平的变化。收获:掌握 8253 的基本工作原理和编程方法并行接口 8255 1,试验电路如图所示,8255C 口接逻辑电平开关K0K7 ,A 口接 LED 显示电路L0L7 。3,数码管静态显示:按下图接好电路,将8255A 口 PA0PA6 分别与七段数码管的段码驱动输入端ag 相连,位码驱动输入端S1接 5V(选中),S0 和 dp 接地(关闭)。编程从键盘输入一位十进制数(0-9) ,在七段数码管上显示。4,数码管动态显示:按下图接好电路,七段数码管的连接不变,位码驱动输入端S1、S0接 8255 C 口的 PC1 和 PC0。编程在两个数码管上显示“56” 。动态显示时,先送“5”的段码送A 口,再送02h 到 C 口为位码;经一定延时后,送“6”的段码送 A 口,再送01h 到 C 口为位码。循环完成,可以显示数码。5,数码管动态显示(选做):同图接好电路,编程在两个数码管上显示循环显示“00-99” 。只要搞清楚各个口的地址,以及选择适当的控制字,其实很简单的。收获:掌握 8255 的基本工作原理和编程方法,对方式0 的认识加深了。二、试验中遇到的问题名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 3 页 - - - - - - - - - 1 在编写程序时,我深深体会到,画程序框图的重要性,每一步跳转的条件一定要搞清楚, Y和 N不能搞反了,否则就错了。2 实验 2,里面涉及的寄存器很多, 很容易就会用乱了, 还是很需要注意的。3 比如那个小鸟动画的题目,当时在控制左右移动的时候, 选择的起始位置的语句没写对位置,每次按一个移位的键以后,都从最初的初始位置向某个方向移动。4 硬件方面的,一开始没搞懂地址什么意思,所以连线时很懵懂,后来清楚了,发现就没什么了。三、心得感受微机原理与接口技术的课程实验历时大半个学期,通过自己编写、 运行程序, 不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。以前对于编程工具的使用还处于一知半解的状态上,但是经过一段上机的实践,对于怎么去排错、查错,怎么去看每一步的运行结果,怎么去了解每个寄存器的内容以确保程序的正确性上都有了很大程度的提高。前四个简单程序设计,加深了我们对初学的汇编语言指令的熟悉和理解,汇编语言直接描述机器指令,比机器指令容易记忆和理解。通过学习和使用汇编语言,向上为理解各种软件系统的原理,打下技术理论基础;向下为掌握硬件系统的原理,打下实践应用基础。不仅巩固了书本所学的知识,还具有一定的灵活性,发挥了我们的创造才能。后面几个实验是并行输入输出接口8255 和计数器8253 的功能的操作, 加深了我们对硬件的熟悉,锻炼了动手能力,发挥创造才能。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的, 难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在自己的思考以及和同学的讨论中,终于迎刃而解。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 3 页 - - - - - - - - -