计算机综合实践实验报告.docx
《计算机综合实践实验报告.docx》由会员分享,可在线阅读,更多相关《计算机综合实践实验报告.docx(9页珍藏版)》请在冰豆网上搜索。
计算机综合实践实验报告
四川大学网络教育学院
实践课程报告
实践课程计算机综合实践
校外学习中心东莞奥鹏
专业电气工程及其自动化
层次专升本
年级二年级
学生姓名李超
学号201002663252
2011年7月10日
四川大学网络教育学院
实验报告
实验名称:
调试程序--DEBUG、设计汇编语言程序、可编程定时器/计数器8253实验
学习中心东莞奥鹏姓名李超
学号201002663252
实验内容:
用汇编语言编写一个简单的加法运算程序,并调试;字符串统计程序设计,双字乘法程序设计;改变定时器2的计数值来改变声音频率,通过编程来获得声调(频率)和节奏(延时长短),使计算机演奏出乐曲来。
实验一调试程序--DEBUG
实验重点:
掌握汇编语言,可以调试简单的程序
实验目的:
让学生熟悉程序的输入和调试环境
实验学时:
2学时
实验难点:
如何进行程序的调试:
DEBUG
实验内容:
用汇编语言编写一个简单的加法运算程序,并调试
1.进入DEBUG状态,开机进入DOS状态。
C>DEBUG↙
屏幕显示:
-
“-”为已进入DEBUG状态,在该提示符下可键入DEBUG命令。
下划线部分为用户键入的字符或命令
2.键入程序并汇编
用DEBUG的A命令送入程序:
-A100↙
MOVAL,33
MOVDL,35
ADDDL,AL
SUBDL,30
MOVAH,2
INT21
3。
执行程序
-G↙
4.反汇编
可以用反汇编U命令将键入的程序调出,并且可以得到每条汇编指令的机器码。
-u起始地址终止地址
5.退出DEBUG返回DOS状态
-Q
6.显示内存命令D
-D0100↙
-D起始地址终止地址↙
7.修改存储单元命令E
-E地址↙
8.检查和修改寄存器内容命令R
格式:
a.R
c.R[寄存器名]
功能:
a.显示CPU内部所有寄存器的内容和全部标志位的状态。
b.显示和修改一个指定寄存器的内容和标志位的状态。
9.追踪和显示命令T
格式:
a.T[=地址]或T[地址]
b.T=[地址][条数]
10.命名命令N
格式:
N文件名
11.读盘命令L
12.写盘命令W
写出实验结论(写出上机结果及现象)
实验二设计汇编语言程序
1、实验目的
掌握循环指令的使用方法;掌握实现单重、多重循环程序设计、编写、调试和运行的方法。
2、实验内容
1、内存地址WORD_ARRAY处存放着—个有符号字数组,其中第—个字为数组的长度,从第二个字开始顺序存放着数组元素。
编写程序求数组中正数、零和负数的个数。
流程图如图4所示。
附图4
数据段可定义如下:
DATA_SEGSEGMENT
WORD_ARRAYDW4,—1,2,3,0;数组
P_COUNTDW0;正数计数单元
Z_OUNTDW0;零计数单元
N_OUNTDW0;负数计数单元
DATA_SEGENDS
(2)建立学生名次表
要求:
以GRADE为首地址的10个字的数组中保存了学生的成绩,其中GRADE+i保存学号为I+1的学生的成绩。
要求建立—个10个字的RANK数组,并根据GRADE中的学生成绩将学生名次填人RANK数组中,其中RANK+I的内容是学号为I+1学生的名次(提示:
—个学生的名次等于成绩高于该学生的人数加1)。
分析:
本题可以用双重循环结构来实现。
内层对应于每个学生的名次计算,外层则解决所有学生的名次计算。
由于数组的长度是确定的,因此内、外层均可用计数值来控制循环的结束。
在设计多重循环结构时,必须注意内层循环结束后的重新初始化问题。
由于本题所用寄存器较多,现将寄存器的分配情况说明如下:
AX存放当前被测学生的成绩;
BX存放当前被测学生的相对地址指针;
CX内循环计数值;
DX当前被测学生的名次计数值;
SI内循环测试时的地址指针;
DI外循环计数值。
根据以上考虑,画出程序流程图如附图5所示。
这里必须使用DEBUG来查看程序的运行结果,可以看出程序的结束时,RANK数组已存放了学生的名次。
数据段可定义如下:
DATAREASEGMENT
GRADEDW88,75,95,63
DW98,78,87,73,90,60
RANKDW10DUP(?
)
DATAREAENDS
(3)求字符串长
要求:
对STRN地址起的—串字符进行统计,求其串长。
串尾以‘*’号结束。
分析:
本例为求字符串的长度。
因此应查找字符串尾字符‘*’,以确定字符串长。
在逐字符查找过程中,就可以统计字符串长。
因此这是—个循环次数不定的循环程序。
本题也是先判断后处理的循环程序。
如果—开始,就遇到—个‘*’字符,则循环程序将—次统计也不进行就退出循环程序。
其流程如附图6所示。
部分源程序:
MOVSI,OFFSETSTRN
MOVDL,0;字符计数器LP:
MOVAL,[SI]
CMPAL,‘*’;判是‘*’?
JEDONE;是,结束
INCDL
INCSI
JMPLP
DONE:
MOVAH,02H;显示字符数
INT21H
END
3、实验步骤
参考流程图完善实验内容源程序,再依照实验二的步骤进行操作
4、实验思考题
结合实验内容2思考多重循环在每次通过外层循环再次进入内层循环时初始条件如何设置?
实验三可编程定时器/计数器8253实验
一.实验要求
编程将8253定时器0设定为方式3,定时器1设定在方式2,定时器2设定在方式2,定时器0输出作为定时器1的输入,定时器1的输出作为定时器2的输入,定时器2的输出接在一个LED上,运行后可观察到该LED在不停闪烁。
二.实验目的
了解8253定时器的硬件连接方法及时序关系。
掌握8253的各种模式编程及原理。
三.实验电路及连线
GATE0~GATE2连至电源+5V,将
模块中的频率插孔(153.6KHZ)用线连至CLK0,OUT0用线连至CLK1,OUT1用线连至CLK2,OUT2用线连至一个发光管(L1),CS8253片选孔用线连至译码处228H孔。
四.实验说明
8253的工作频率为0~2MHZ,所以输入的CLK频率必须在2MHZ以下。
实验板上从
模块的频率插孔(153.6KHZ)引至定时器0输入。
五.实验程序框图