四川大学 计算机综合实践报告

四川大学网络教育学院

实践课程报告

实践课程 计算机综合实践报告

校外学习中心

专业 电气工程及其自动化

层 次 专升本

年 级 2010年春

学生名字

学号

2012年5月31号

实验一DEBUG 调试工具熟悉、使用

一、 实验科目:熟悉、使用DEBUG 调试工具

二、 实验日期:2011年4月22日

三、 实验目的

1、

2、 了解并逐步熟习汇编语言的编辑方式及特点 复习8088汇编语言的段结构、常用的指令与伪指令、存储空间的分配等

3、

4、

5、 掌握汇编语言的编辑、汇编及连接过程 了解并逐步掌握运用DEBUG 进行调试汇编语言程序 借助DEBUG 调试工具来发现汇编语言程序的错误所在并加以改正

四、 实验内容

1、 进入DEBUG

方法1:在Windows 开始菜单中单机运行命令,直接在运行对话框中输入“DEBUG ”

方法2:在运行对话框中输出“CMD ”启动DOS 命令窗口后输入“DEBUG ”

方法3:在程序、附件、命令提示符,启动DOS 命令窗口后输入“DEBUG ”

2、 DEBUG 命令格式

DEBUG 的每个命令都是一个字母后跟一个或多个参数,下面对DEBUG 命令作几点说明:

(1) 字母部分大小写

(2) 只使用16进制数,且不能带后缀H

(3) 以空格或逗号作为命令各项之间的分隔符。分隔符只在

两个数值之间是必须的

(4) 可以用Ctrl-C 或Ctrl-Break 终止命令执行

(5) 若输入的命令有语法错误,则提示“Error ”,并用“∧”

指出错误位置

3、 常用的Debug 功能

用Debug 的R 命令查看、改变CPU 寄存器的内容;

用Debug 的D 命令查看内存中的内容

用Debug 的E 命令改写内存中的内容

用Debug 的U 命令将内存中的机器指令翻译成汇编指令

用Debug 的T 命令执行一条机器指令

用Debug 的A 命令以汇编指令的格式在内存中写一条机器指令

4、 用Debug 的R 命令查看、改变CPU 寄存器的内容

R 命令用来显示和修改寄存器的值,包括以下两种格式。

(1) R

显示所有寄存器和8个标志位的值,并反汇编CS :IP

所指的指令

(2) R (寄存器名)

显示指定寄存器的值,并等待用户键入新的值,按回车

键结束R 命令

5、 用Debug 的D 命令查看内存中的内容

D命令可以查看内存中的内容,D 命令的格式较多,只介绍本次实验中用到的格式,8086/8088CPU能够访问1M 内容,D 命令可以显示0000:0000H-FFFF :FFFFH 中的任何一个单元的内存 如果想知道内存100000H 处的内容,可以用“d 段地址:偏移地址”的格式来查看,如输入-d1000:0

使用d1000:9查看1000:9处的内容

使用d1000:0 9查看1000:0—1000:9的内容

一进入Debug ,可直接使用D 命令直接查看,将列出Debug 预设的地址处的内容

6、 用Debug 的E 命令改写内存中的内容

使用“e 起始地址数据数据数据„„”的格式来进行

如讲内存1000:0-1000:9单元中的内容分别改写为0、1、2、3、4、5、6、7、8、9

-e1000:0 0123456789

也可采用提问方式一个一个修改内存中的内容,如输出e1000:0按Enter 健结束操作

输入字符串的格式:如-e1000:101‘a ’2”C++”3”IBM ”将输入1a2c++3IBM到相应单元

向内容中写入机器码, 如b80100(代表mov ax 0001),·b90200 (代表mov cx 002),01c8(代表 add ax cx),那么输入-e1000:0 b8 01 00 b9 02 00 01 c8就将该程序输入内容1000:0处,然后使用u

命令-u 1000:0可以将内存单元中的内容翻译成汇编指令。如果要执行该程序,首先用r 命令,单击执行程序。执行T 命令时,CPU 执行CS :IP 执行的指令并将IP 加1

7、 用Debug 的A 命令以汇编指令的形式在内存中写了机指令示例:用A 命令,输入下列程序并运行

–a 1000:0

mov ax, 1

movbx, 2

mov cx, 3

add ax, bx

add ax, cx

add ax, ax

直接按Enter 健结果输入。用r 命令将cs 修改成1000,ip 修改成0,再执行t 命令,单步执行程序。执行T 命令时,CPU 执行CS :IP 执行的指令并将IP 加1.

实验二设计汇编语言程序

一、 实验目的:设计汇编语言程序

二、 实验日期:2012年5月31日

三、 实验目的

字符串统计程序设计

双字乘法程序设计

四、 实验内容

1、 字符串统计

在数据段总建立一个缓冲区BUFFER ,变量VER ,编程使得

程序具有如下功能:从键盘输入一个子字符串存入VER ,从键盘输入包含一个或几个字符串的字符串存入BUFFER 。统计BUFFER 中的字符串含有多少各子字符串以及每个子字符串的位置

2、 双字乘法程序

设计一个程序实现32位带符号双精度数乘法运算。由于只有8位和16位的乘法指令。因此32位乘法运算是不能直

接用指令实现的。但可以用16位乘法指令,通过4次相乘然后把部分积相加。对于带符号数,可以先根据绝对值求

得积。然后判断积的符号,若积为负数,应将其用补码表

五、 程序设计

1、 字符串统计程序设计

#include

Using namespace std

int main

char a; int b=0,c=0,f=0

cout

a=cin.get()

while(a!=′/n′)

if(a128)

b++

else if (a>=′a ′&&aA&&a

c++

else if(a==′′)

d++

else if(a>=′0′&&a

e++

else if++

a=cin.get()

cout

cout

Cout

Return 0

分别统计出英文字母,空格,数字和其他字符的个数

2、 双字乘法程序设计

Data segment

Xdw 1,2;被乘数

Ydw 3,4;乘数

Zdw 4 dup (?);积

Data ends

Code segment

Assume ds;data,cs:code

Start:

Movax,data

Movds,ax

Mul y

Movz,ax

Mov z+2,dx

Mov ax,x+2

Mul y

Mov z+4,ax

Mov z+6,dx

Movax,x

Mov y+2

Add z+4,ax

Add z+6,ax

Mov ax,x+2

Mul y+2

Adc z+10,dx

Adc z+12,0

Mov ax,4c00h

Int 21h

Code ends

End start

实验三 8253定时器、计算器接口与数字电子琴

一、实验科目:8253定时器、计算器接口与数字电子琴

二、实验日期:2012年5月31日

三、实验目的:

改变定时器2的计数值来改变声音频率,通过编程来获得声调(频率)和节奏(延时长短),使计算机演奏出乐曲来。

四、实验内容

设计程序让微机演奏一段简单乐曲

利用DOS 的键盘管理功能,将微机变为一个具有简单功能的电子琴

六、 程序设计

硬件设计

利用实验板上的8253计数/定时器和8255并行接口,定时器8253利用工作方式3产生一定频率信号,通过可编程的并行外围接口芯片8255控制频率信号的通断。

8255的A 口设计为输出,8255的A 口的低两位用来控制扬声器驱动,当输出端口的PAO 位为“1”或为“0”时,将使控制驱动器的与门电路接通或关闭,使8253所发出的音频信号能到达驱动器或被阻断。这样通过控制PAO 的变化,可使扬声器接通和断开,就能发出不同的音长。8255的PA1位为“1”时,控制8253定时器产生驱动扬声器发出的音频信号,该位为“0”则不发信号,8253有三飞定时器,分别为0号、1号和2号定时器,驱动扬声器的是0号定时器,该定

时器工作方式3,是一个频率发送器,它负责向扬声器发送指定频率的脉冲信号。当8255的PA0和PA1都为1时,8253发出的频率的声音信号前提下,声音信号通过与门到达驱动器驱动扬声器发声。

软件设计

系统要求实现2个功能,电子琴和音乐的功能。两者发声的方法一样,只是一个数据从键盘读取,另一个是已经保存好的数据。首先我们可以用一个程序实现单各音调的产生,对8253输入不同的计数初值生成不同频率的波形,然后延时一段实践。电子琴程序主要是读取键盘按键,根据键值产生不同的音调即可。而乐曲的播放先将乐曲的音符编码表和节拍编码表建立好,然后在播放时读取数据。

1、 单音调子程序SOUND

单音调子程序的调用前需要进行以下几个方面工作:

(1) 确定相应的音调所对应的频率,查表可以得到,再由频率得

到对应的8253计数初值

(2) 确定音长,即一个音符所持续的时间。

在单音调子程序中实现发出一个音符的声音,持续所需的时间,流程如下:

→读取8253计数初值和音长→8253置初值→开启与门和8253GATE →延时→关闭与门和8253GATE →返回

2、 音乐盒程序

音乐盒的乐曲播放程序中需要有两组数据支持:一组是频率

数据,一组是节拍时间数据。音符的频率可以用过简谱从频率表中查得、节拍时间就是音符的持续时间,取决于乐曲的速度和每个音符的节拍数据。如4/4中,每小节包括4拍,全音符持续4拍,二分音符持续2拍,四分音符持续1拍,八分音符持续半拍等。

有了音调与频率和实践的关系后,就可以按照乐曲的曲谱将每个音符的频率和持续的时间定义成两组数据表,然后编程依次取出表中的频率值和节拍值,调用单音调子程序就可依次产生各个音调,播放出乐曲。

在程序中储存几个乐曲数据,根据音乐盒子菜单选择相应的乐曲演奏,读取对应的数据输出。

四川大学网络教育学院

实践课程报告

实践课程 计算机综合实践报告

校外学习中心

专业 电气工程及其自动化

层 次 专升本

年 级 2010年春

学生名字

学号

2012年5月31号

实验一DEBUG 调试工具熟悉、使用

一、 实验科目:熟悉、使用DEBUG 调试工具

二、 实验日期:2011年4月22日

三、 实验目的

1、

2、 了解并逐步熟习汇编语言的编辑方式及特点 复习8088汇编语言的段结构、常用的指令与伪指令、存储空间的分配等

3、

4、

5、 掌握汇编语言的编辑、汇编及连接过程 了解并逐步掌握运用DEBUG 进行调试汇编语言程序 借助DEBUG 调试工具来发现汇编语言程序的错误所在并加以改正

四、 实验内容

1、 进入DEBUG

方法1:在Windows 开始菜单中单机运行命令,直接在运行对话框中输入“DEBUG ”

方法2:在运行对话框中输出“CMD ”启动DOS 命令窗口后输入“DEBUG ”

方法3:在程序、附件、命令提示符,启动DOS 命令窗口后输入“DEBUG ”

2、 DEBUG 命令格式

DEBUG 的每个命令都是一个字母后跟一个或多个参数,下面对DEBUG 命令作几点说明:

(1) 字母部分大小写

(2) 只使用16进制数,且不能带后缀H

(3) 以空格或逗号作为命令各项之间的分隔符。分隔符只在

两个数值之间是必须的

(4) 可以用Ctrl-C 或Ctrl-Break 终止命令执行

(5) 若输入的命令有语法错误,则提示“Error ”,并用“∧”

指出错误位置

3、 常用的Debug 功能

用Debug 的R 命令查看、改变CPU 寄存器的内容;

用Debug 的D 命令查看内存中的内容

用Debug 的E 命令改写内存中的内容

用Debug 的U 命令将内存中的机器指令翻译成汇编指令

用Debug 的T 命令执行一条机器指令

用Debug 的A 命令以汇编指令的格式在内存中写一条机器指令

4、 用Debug 的R 命令查看、改变CPU 寄存器的内容

R 命令用来显示和修改寄存器的值,包括以下两种格式。

(1) R

显示所有寄存器和8个标志位的值,并反汇编CS :IP

所指的指令

(2) R (寄存器名)

显示指定寄存器的值,并等待用户键入新的值,按回车

键结束R 命令

5、 用Debug 的D 命令查看内存中的内容

D命令可以查看内存中的内容,D 命令的格式较多,只介绍本次实验中用到的格式,8086/8088CPU能够访问1M 内容,D 命令可以显示0000:0000H-FFFF :FFFFH 中的任何一个单元的内存 如果想知道内存100000H 处的内容,可以用“d 段地址:偏移地址”的格式来查看,如输入-d1000:0

使用d1000:9查看1000:9处的内容

使用d1000:0 9查看1000:0—1000:9的内容

一进入Debug ,可直接使用D 命令直接查看,将列出Debug 预设的地址处的内容

6、 用Debug 的E 命令改写内存中的内容

使用“e 起始地址数据数据数据„„”的格式来进行

如讲内存1000:0-1000:9单元中的内容分别改写为0、1、2、3、4、5、6、7、8、9

-e1000:0 0123456789

也可采用提问方式一个一个修改内存中的内容,如输出e1000:0按Enter 健结束操作

输入字符串的格式:如-e1000:101‘a ’2”C++”3”IBM ”将输入1a2c++3IBM到相应单元

向内容中写入机器码, 如b80100(代表mov ax 0001),·b90200 (代表mov cx 002),01c8(代表 add ax cx),那么输入-e1000:0 b8 01 00 b9 02 00 01 c8就将该程序输入内容1000:0处,然后使用u

命令-u 1000:0可以将内存单元中的内容翻译成汇编指令。如果要执行该程序,首先用r 命令,单击执行程序。执行T 命令时,CPU 执行CS :IP 执行的指令并将IP 加1

7、 用Debug 的A 命令以汇编指令的形式在内存中写了机指令示例:用A 命令,输入下列程序并运行

–a 1000:0

mov ax, 1

movbx, 2

mov cx, 3

add ax, bx

add ax, cx

add ax, ax

直接按Enter 健结果输入。用r 命令将cs 修改成1000,ip 修改成0,再执行t 命令,单步执行程序。执行T 命令时,CPU 执行CS :IP 执行的指令并将IP 加1.

实验二设计汇编语言程序

一、 实验目的:设计汇编语言程序

二、 实验日期:2012年5月31日

三、 实验目的

字符串统计程序设计

双字乘法程序设计

四、 实验内容

1、 字符串统计

在数据段总建立一个缓冲区BUFFER ,变量VER ,编程使得

程序具有如下功能:从键盘输入一个子字符串存入VER ,从键盘输入包含一个或几个字符串的字符串存入BUFFER 。统计BUFFER 中的字符串含有多少各子字符串以及每个子字符串的位置

2、 双字乘法程序

设计一个程序实现32位带符号双精度数乘法运算。由于只有8位和16位的乘法指令。因此32位乘法运算是不能直

接用指令实现的。但可以用16位乘法指令,通过4次相乘然后把部分积相加。对于带符号数,可以先根据绝对值求

得积。然后判断积的符号,若积为负数,应将其用补码表

五、 程序设计

1、 字符串统计程序设计

#include

Using namespace std

int main

char a; int b=0,c=0,f=0

cout

a=cin.get()

while(a!=′/n′)

if(a128)

b++

else if (a>=′a ′&&aA&&a

c++

else if(a==′′)

d++

else if(a>=′0′&&a

e++

else if++

a=cin.get()

cout

cout

Cout

Return 0

分别统计出英文字母,空格,数字和其他字符的个数

2、 双字乘法程序设计

Data segment

Xdw 1,2;被乘数

Ydw 3,4;乘数

Zdw 4 dup (?);积

Data ends

Code segment

Assume ds;data,cs:code

Start:

Movax,data

Movds,ax

Mul y

Movz,ax

Mov z+2,dx

Mov ax,x+2

Mul y

Mov z+4,ax

Mov z+6,dx

Movax,x

Mov y+2

Add z+4,ax

Add z+6,ax

Mov ax,x+2

Mul y+2

Adc z+10,dx

Adc z+12,0

Mov ax,4c00h

Int 21h

Code ends

End start

实验三 8253定时器、计算器接口与数字电子琴

一、实验科目:8253定时器、计算器接口与数字电子琴

二、实验日期:2012年5月31日

三、实验目的:

改变定时器2的计数值来改变声音频率,通过编程来获得声调(频率)和节奏(延时长短),使计算机演奏出乐曲来。

四、实验内容

设计程序让微机演奏一段简单乐曲

利用DOS 的键盘管理功能,将微机变为一个具有简单功能的电子琴

六、 程序设计

硬件设计

利用实验板上的8253计数/定时器和8255并行接口,定时器8253利用工作方式3产生一定频率信号,通过可编程的并行外围接口芯片8255控制频率信号的通断。

8255的A 口设计为输出,8255的A 口的低两位用来控制扬声器驱动,当输出端口的PAO 位为“1”或为“0”时,将使控制驱动器的与门电路接通或关闭,使8253所发出的音频信号能到达驱动器或被阻断。这样通过控制PAO 的变化,可使扬声器接通和断开,就能发出不同的音长。8255的PA1位为“1”时,控制8253定时器产生驱动扬声器发出的音频信号,该位为“0”则不发信号,8253有三飞定时器,分别为0号、1号和2号定时器,驱动扬声器的是0号定时器,该定

时器工作方式3,是一个频率发送器,它负责向扬声器发送指定频率的脉冲信号。当8255的PA0和PA1都为1时,8253发出的频率的声音信号前提下,声音信号通过与门到达驱动器驱动扬声器发声。

软件设计

系统要求实现2个功能,电子琴和音乐的功能。两者发声的方法一样,只是一个数据从键盘读取,另一个是已经保存好的数据。首先我们可以用一个程序实现单各音调的产生,对8253输入不同的计数初值生成不同频率的波形,然后延时一段实践。电子琴程序主要是读取键盘按键,根据键值产生不同的音调即可。而乐曲的播放先将乐曲的音符编码表和节拍编码表建立好,然后在播放时读取数据。

1、 单音调子程序SOUND

单音调子程序的调用前需要进行以下几个方面工作:

(1) 确定相应的音调所对应的频率,查表可以得到,再由频率得

到对应的8253计数初值

(2) 确定音长,即一个音符所持续的时间。

在单音调子程序中实现发出一个音符的声音,持续所需的时间,流程如下:

→读取8253计数初值和音长→8253置初值→开启与门和8253GATE →延时→关闭与门和8253GATE →返回

2、 音乐盒程序

音乐盒的乐曲播放程序中需要有两组数据支持:一组是频率

数据,一组是节拍时间数据。音符的频率可以用过简谱从频率表中查得、节拍时间就是音符的持续时间,取决于乐曲的速度和每个音符的节拍数据。如4/4中,每小节包括4拍,全音符持续4拍,二分音符持续2拍,四分音符持续1拍,八分音符持续半拍等。

有了音调与频率和实践的关系后,就可以按照乐曲的曲谱将每个音符的频率和持续的时间定义成两组数据表,然后编程依次取出表中的频率值和节拍值,调用单音调子程序就可依次产生各个音调,播放出乐曲。

在程序中储存几个乐曲数据,根据音乐盒子菜单选择相应的乐曲演奏,读取对应的数据输出。


相关文章

  • 大学生计算机基础实验报告
  • < 大学计算机基础>课程 实验报告手册 学院 年级 专业 姓名 学号 任课教师 上机地点 (以上由学生填写) 实验教师(签字) 西南大学计算机与信息科学学院 计算机基础教育系 年 月 日 一. 实验说明 本课程实验分为一般性实验 ...查看


  • 南京审计大学[审计学专业]人才培养方案(2015版)
  • 审计学专业人才培养方案 审计学专业创办于1987年,是南京审计学院最早创办的专业之一, 1993年开始招收审计学专业本科学生, 2012年招收审计专业硕士.审计学专业自创办以来,依托审计行业背景,在国家审计署的指导下,伴随我国审计事业不断发 ...查看


  • 东北大学全日制工程硕士研究生培养方案
  • 全日制工程硕士研究生培养方案 研究生院 二OO 九年七月 前言 为更好地适应国家经济建设和社会发展对高层次应用型人才的迫切需要,积极发展具有中国特色的专业学位教育,教育部自2009年起,扩大招收以应届本科毕业生为主的全日制硕士专业学位范围, ...查看


  • 项目可行性报告范文
  • 项目可行性报告 一.基本情况 1. 项目申请单位基本情况: 单位名称:大连大学 单位地址:大连市经济技术开发区 单位邮编:116622 法人代表姓名:由业诚 学科门类:教育.文.法.史.理.工.医.管理.经济学.哲学等十大学科门类 财务收支 ...查看


  • 计算机综合实践实验报告
  • 四川大学网络教育学院 实践课程报告 实践课程 计算机综合实践 校外学习中心 奥鹏 专 业 电气工程及其自动化 层 次 专升本 年 级 级 学生姓名 学 号 20年 月 日 四川大学网络教育学院 实验报告 实验内容:用汇编语言编写一个简单的加 ...查看


  • 教学研究项目结题报告书
  • 大学生素质拓展模式创新理论与实践结题报告 主要内容包括:项目执行情况:成果特色.推广价值以及尚有那些需要进一步研究的问题. (一) 项目执行情况 本项目自立项以来,通过组织人员赴林业.环保.园林.电子.计算机等行业单位和省内外部分毕业生单位 ...查看


  • 武汉理工大学控制工程专业学位研究生培养方案
  • 控制工程专业学位研究生培养方案 (专业代码:085210) 一.培养目标 控制工程是应用控制理论及技术实现现代工业.农业.国防以及其它社会经济等领域日益增长的自动化.智能化需求的工程领域.培养现代工业.农业.国防自动化设备中控制系统和装置研 ...查看


  • xml教学方案设计说明书
  • <XML基础>教学方案设计说明书 一. 课程培养目标 课时:32学时,理论24学时,实践8学时 学分:2 开课情况:09级计算机科学与技术专业第一次开课,主讲:李兴远,教材选用清华大学孙更新主编的<XML编程与应用教程&g ...查看


  • 工程造价专业毕业综合实践报告
  • 重庆大学城市科技学院综合实习报告 工程造价专业毕业综合实践报告 姓 名: 肖 卓 异 学 号: 20107340 年级班级: 工程造价专科2010级11班 实践单位: 重庆市卫光建筑装饰工程有限公司 实践时间: 2013.03--2013. ...查看


热门内容