计算机综合实践实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
四川大学网络教育学院
实践课程报告
实践课程计算机综合实践
校外学习中心东莞奥鹏
专业电气工程及其自动化
层次专升本
年级二年级
学生姓名李超
学号 201002663252
2011年 7 月 10 日
四川大学网络教育学院
实验报告
实验名称: 调试程序--DEBUG、设计汇编语言程序、可编程定时器/计数器8253实验
学习中心东莞奥鹏姓名李超
学号201002663252
实验内容:用汇编语言编写一个简单的加法运算程序,并调试;字符串统计程序设计,双字乘法程序设计;改变定时器2的计数值来改变声音频率,通过编程来获得声调(频率)和节奏(延时长短),使计算机演奏出乐曲来。
实验一调试程序--DEBUG
实验重点:掌握汇编语言,可以调试简单的程序
实验目的:让学生熟悉程序的输入和调试环境
实验学时:2学时
实验难点:如何进行程序的调试:DEBUG
实验内容:用汇编语言编写一个简单的加法运算程序,并调试
1.进入DEBUG状态,开机进入DOS状态。
C>DEBUG↙
屏幕显示:
-
“-”为已进入DEBUG状态,在该提示符下可键入DEBUG命令。下划线部分为用户键入的字符或命令
2.键入程序并汇编
用DEBUG的A命令送入程序:
-A 100↙
MOV AL,33
MOV DL,35
ADD DL,AL
SUB DL,30
MOV AH,2
INT 21
3。执行程序
-G↙
4.反汇编
可以用反汇编U命令将键入的程序调出,并且可以得到每条汇编指令的机器码。
-u起始地址终止地址
5.退出DEBUG返回DOS状态
-Q
6.显示内存命令D
-D 0100↙
-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_SEG SEGMENT
WORD_ARRAY DW 4,—1,2,3,0;数组
P_COUNTDW 0;正数计数单元
Z_OUNTDW 0;零计数单元
N_OUNTDW 0;负数计数单元
DATA_SEG ENDS
(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数组已存放了学生的名次。数据段可定义如下:
DATAREA SEGMENT
GRADE DW 88,75,95,63
DW 98,78,87,73,90,60
RANK DW 10 DUP (?)
DATAREA ENDS
(3)求字符串长
要求:对STRN地址起的—串字符进行统计,求其串长。串尾以‘*’号结束。
分析:本例为求字符串的长度。因此应查找字符串尾字符‘*’,以确定字符串长。在逐字符查找过程中,就可以统计字符串长。因此这是—个循环次数不定的循环程序。本题也是先判断后处理的循环程序。如果—开始,就遇到—个‘*’字符,则循环程序将—次统计也不进行就退出循环程序。其流程如附图6所示。
部分源程序:
MOV SI,OFFSET STRN
MOVDL,0;字符计数器 LP:MOVAL,[SI]
CMPAL,‘*’;判是‘*’?
JEDONE;是,结束
INCDL
INCSI
JMPLP
DONE:MOV AH,02H;显示字符数
INT21H
END
3、实验步骤
参考流程图完善实验内容源程序,再依照实验二的步骤进行操作