计算机综合实践_第1页
计算机综合实践_第2页
计算机综合实践_第3页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、四川大学网络教育学院计算机综合实践校外学习中心: 苏州研究院学 生 姓 名: 徐磊专 业: 电气工程及其自动化层次: 专升本年级: 2014 级(秋季)学号: DH1142R6009实 践 时 间: 2016 年 7 月 10 日实验一 DEBUG 调试工具熟悉、使用一、实验题目 : 熟悉、使用 DEBUG调试工具二、实验日期: 2016/08/5三、实验目的1, 了解并逐步熟悉汇编语言的编辑方法及特点 .2. 复习 8088汇编语言的段结构、常用的指令与伪指令、存储空间的分配等。3. 掌握汇编语言的编辑、汇编及连接的过程。4. 了解并逐步掌握运用 DEBUG进行调试汇编语言程序。5 借助 D

2、EBUG调试工具来发现汇编语言程序的错误所在并加以改正。四、实验内容 :1 进入 DEBUG方法方法 1:在 Windows开始菜单中单击运行命令 , 直接在运行对话框中输入 "DEBUG"方法方法 2:在运行对话框中输入 "CMD"启动 DOS命令窗口后输入 "DEBUG"方法 3:在程序、附件、命令提示符 , 启动 DOS命令窗口后输入 "DEBUG" 2,DEBUG命令格式 DEBUG的每个命令都是一个字母 , 后跟一个或多个参数。下面 对 DEBUG命令作几点说明。字母不分大小写。·只使用 16

3、进制数,且不能带后缀 H。 ·以空格或逗号作为命令各项之间的分隔符。 分隔符只在两个数值之间是必须的。 ·可以用 Ctrl-C 或 Ctrl-Break 终止命令的执行。·若输入的命令有语法错误 , 则提示“ Err or”,并用“”指出错误位置。 3,常用的 Debug功能用 Debug的 R 命令查看、改变 CPU寄存器的内容, 用 Debug的 D 命令查看内存中的内容, 用 Debug的 E 命令改写内存中的内容,用 Debug的 U 命令将内存中的机器指令翻译成汇编指令。用 Debug的 T 命令执行一条机器指令用 Debug的 A 命令以汇编指令的格式

4、在内存中写了一条机器指令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 中的任何一个单元的内存如果

5、想知道内存 10000H 处的内容 , 可以用"d 段地址,偏移地址 "的格式来查看 , 如输入 -d 1000:0 使用 d 1000:9 查看 1000:9 处的内容。使用 d 1000: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-e 1000:0 0

6、1 2 3 4 5 6 7 8 9也可以采用提问方式一个一个修改内存中的内容 , 如输入 e 1000:0, 按Enter 键输入修改的数据 , 再按空格键输入下一个要修改的数 据,最 Enter 键结束操作。输入字符串的格式 ,如-e 1000:10 1 'a' 2 "c+" 3 "IBM"将输入 1 a 2 c+ 3 IBM 到相应单元向内容中写入机器码 , 如 b80100 ( 代表 mov ax, 0001), b90200( 代表 mov cx, 002), 01c8( 代表 add ax, cx), 那么输入 -e 1000:

7、0 b8 01 00 b9 02 00 01 c8 就将该程序输入内容 1000:0 处, 然后使用 u 命令 -u 1000:0 可以将内存单元中的 内容翻译成汇编指令。如果要执行该程序 , 首先用 r 命令将 cs 修改成 1000ip 修 改成 0, 再执行 t 命令, 单步执行程序。执行 T命令时,CPU执行 CS:IP 执行的指令 并将 IP 加 1.7、用 Debug的 A命令以汇编指令的形式在内存中写了机器指令示例 , 用 A命令, 输入下列程序并运行-a 1000:0mov ax, 1mov bx, 2mov cx, 3add ax, bxadd ax, cxadd ax, a

8、x直接按 Enter 键结果输入。 用 r 命令将 cs 修改成 1000,ip 修改成 0,再执行 t 命 令,单步执行程序。执行 T命令时,CPU执行 CS:IP 执行的指令并将 IP 加 1.实验二 设计汇编语言程序一, 实验题目 设计汇编语言程序二, 验日期: 2016/08/6三, 实验目的 字符串统计程序设计 双字乘法程序设计四, 实验内容1,字符串统计。在数据段中建立一个缓冲区 BUFFE,R 变量 VER,编程使得程序具有如下功能, 从键盘输入一个子字符串存入 VER,从键盘输入包含一个或几个子字符串的字符 串存入 BUFFE。R 统计 BUFFER中的字符串含有多少个子字符串

9、以及每个子字符串 的位置。2,双字乘法程序。设计一个程序实现 32 位带符号双精度数乘法运算。 由于只有 8 位和 16位的乘法 指令。因此 32 位乘法运算是不能直接用指令实现的。但可以用 16位乘法指令, 通过 4次想乘然后把部分积想加。 对于带符号数, 可以先根据绝对值求得积。 然 后判断积的符号,若积为负数,应将其用补码表示。五,程序设计1 、字符串统计程序设计 #include<iostream> using namespace std;int main()char a;int b=0,c=0,d=0,e=0,f=0; cout<<" 请输入一行任意

10、字符 :" a=cin.get();while(a!='n') if(a<0|a>=128) b+;else if(a>='a'&&a<='z'|a>='A'&&a<='Z')c+; else if(a=' ') d+;else if(a>='0'&&a<='9')else f+; a=cin.get();cout<<" 总共有 "

11、<<b/2+c+d+e+f<<" 个字符 :"<<endl;cout<<" 中文 "<<"t"<<" 英文 "<<"t"<<" 空格 "<<"t"<<" 数字 "<<"t"<<" 其他 "<<endl;cout<<b/2<&l

12、t;"t"<<c<<"t"<<d<<"t"<<e<<"t"<<f<<endl;return 0; 分别统计出英文字母,空格,数字和其他字符的个数。2、双字乘法程序设计 data segmentx dw 1,2; 被乘数 y dw 3,4; 乘数 z dw 4 dup (?); 积 data ends code segment assume ds:data,cs:code start: mov ax,data mov ds

13、,ax mov ax,x mul y mov z,ax mov z+2,dx mov ax,x+2 mul ymov z+4,ax mov z+6,dx mov ax,x mul y+2 add z+4,ax adc z+6,dx mov ax,x+2 mul y+2 adc z+8,ax adc z+10,dx adc z+12,0 mov ax,4c00h nt 21h code ends end start验三 8253 定时器/ 计数器接口与数字电子琴一、实验题目 8253定时器/ 计数器接口与数字电子琴二、实验日期: 2016/08/07三、实验目的:改变定时器 2 的计数值来改变声

14、音频率, 通过编程来获得声调 (频 率)和节奏 ( 延时长短)使计算机演奏出乐曲来。四、实验内容 : 设计程序让微机演奏一段简单乐曲利用 DOS的键盘管理功能。将微机变为一个具有简单功能的电子琴 ( 选作) 。五、程序设计硬件设计利用实验板上的 8253计数/ 定时器和 8255并行接口,定时器 8253利用工作方 式 3 产生一定频率信号,通过可编程的并行外围接口芯片8255 控制频率信号的通断。 8255的 A口设置为输出, 8255的 A口的低两位用来控制扬声器驱动,当 输出端口的 PA0位为“1”或为“0”时。将使控制驱动器的与门电路接通或关闭, 使 8253 所发出的音频信号能到达驱

15、动器或被阻断。这样通过控制PA0 的变化,可使扬声器接通和断开, 控制扬声器是否能发出声音。 此外, 通过控制 PA0的通 断时间,就能发出不同的音长。 8255的 PA1位为“ 1”时,控制 8253 定时器产 生驱动扬声器发声的音频信号,该位为“ 0”则不发信号。 8253 有三个定时器。 分为 0 号、1号和 2号定时器,驱动扬声器的是 0号定时器,该定时器工作方式 3,是一个频率发生器,它负责向扬声器发送指定频率的脉冲信号。当8255 的PA0和 PA1都为 1时,8253 发出指定频率的声音信号的前提下, 声音信号通过与 门到达驱动器驱动扬声器发声。软件设计系统要求实现 2 个功能

16、, 电子琴和音乐盒的功能。两者发声的方法一样 , 只是一 个数据是从键盘读取的 , 另一个是已经保存好的数据。首先我们可以用一个子程 序实现单个音调的产生 , 对 8253输入不同的计数初值生成不同频率的波形 , 然后 延时一段时间。电子琴程序主要是读取键盘按键 , 根据键值产生不同的音调即可。 而乐曲的播放先将乐曲的音符编码表和节拍编码表建立好的 , 然后在播放时读取 数据。1. 单音调子程序 SOUND单 音调子程序的调用前需要进行以下几个方面工 作,1)确定相应的音调所对应的频率 ,查表可以得到 , 再由频率得到对应的 8253计数 初值。2)确定音长 , 即一个音符所持续的时间。在单音

17、调子程序中实现发出一个音符的 声音, 持续所需的时间 ,流程图如图 3 所示:2, 音乐盒程序 音乐盒的乐曲播放程序中需要有两组数据支持 , 一组是频率数据 , 一组是节拍时 间数据。音符的频率可以通过简谱从频率表中查得。 节拍时间就是音符的持续时 间,取决于乐曲的速度和每个音符的节拍数据。如 4/4, 四四拍, 中, 每小节包括 4 拍,全音符持续 4 拍,二分音符持续 2 拍, 四分音符持续一拍 , 八分音符持续半拍 等。有了音调与频率和时间的关系后 , 就可以按照乐曲的曲谱将每个音符的频率 和持续的时间定义成两组数据表 , 然后编程依次取出表中的频率值和节拍值 , 调 用单音调子程序就可

18、依次产生各个音调 , 播放出乐曲。 在程序中存储几个乐曲数据 , 根据音乐盒子菜单选择相应的乐曲演奏 ,读取对应 的数据输出。乐曲两只老虎的简谱如下 :对应的频率数据表 Freq、节拍数据表 Time 如下:TWOTIGERS_FRE DW 2 DUP(524,588,660,524,0)乐曲的频率表 DWDWDW TWOTIGERS_TIME 乐曲的时间表 DW2 DUP(660,698,784,0)2 DUP(784,880,784,698,660,524,0)2 DUP(588,392,524,0),1DW 10 DUP(100),200,100,100,2002 DUP(50,50,5

19、0,50,100,100)DW 2 DUP(100,100,200)outb_p(0x34,0x43);utb_p(LATCH&0xff,0x40);outb_p(LATCH>>8,0x40); outb(inb_p (0x21) & 0x01, 0x21); / 允许接收定时器中断void do_timer(void)这是定时器主程序 , 用于每隔一段时间后进行某些操作8253.asm:/以下是 nasm格式的汇编代码 , 这个中断处理函数必须用汇编 timer_interrupt:push gspush fspush espush dspush ebppush edipush esipush edxpush ecxpush ebxpush eax如果你不在操作系统下使用 ,以下三行必须删除 , 否则必须把 0x10 更改为内核段 选择符 mov eax,0x10 mov ds,ax mov es,axmov al,0x20out 0xa0,al ; 发送 EOIout 0x20,alcall do_timerpop ebxpop ecxpop edxpop esipop edipop ebppop ds pop es pop fs pop gs xor eax,eax iretd 践体会次微机实验课程设计 , 使我对微机软硬件结合有

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论