版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上 四川大学网络教育学院 实践课程报告实践课程 计算机综合实践 校外学习中心 专 业 电气工程及其自动化 层 次 专升本 年 级 10秋 学生姓名 学 号 2013年 9 月 18 日实验一 熟悉、使用DEBUG调试工具一 实验目的:1 了解并逐步熟悉汇编语言的编辑方法及特点.2 复习8088汇编语言的段结构、常用的指令与伪指令、存储空间的分配等。3 掌握汇编语言的编辑、汇编及连接的过程。4 了解并逐步掌握运用DEBUG进行调试汇编语言程序。二 实验内容:1 运用8086汇编语言,编辑多字节非压缩型BCD数除法的简单程序,文件名取为*.ASM。2 运用MASMEXE文件
2、进行汇编,修改发现的各种语法错误,直至正确,形成*.OBJ文件。3 运用文件进行连接,形成*.EXE文件。4 仔细阅读附录中的DEBUG部分,掌握各种命令的所有方法。5 运用DEBUG。EXE文件进行调试,使用单步执行命令T两次,观察寄存器中内容的变化,使用察看存储器数据段命令D,观察存储器数据段内数值。6 再使用连续执行命令G,执行程序,检查结果是否正确,若不正确可使用DEBUG的设置断点,单步执行等功能发现错误所在并加以改正。程序清单:多字节非压缩型BCD数除法 (88754/6=14792)DATASEGMENTADB8,8,7,5,4BDB6CDB 5DUP (0)NEQU5DATAE
3、NDSCODESEGMENTASSUMECS:CODE;DS:DATA;ES:DATA,STARTMOVAX,DATAMOVDS,AXMOVES,AXCLDLEASI,ALEBDI,CMOVCX,NMOVAH,0LP1:LODSBAADDIVBSTOSBLOOPLP1MOVCX,NLEADI,CLP2:MOVDL,DI MOVAH,2 开始INT21HDECDI 设置被除数、商的地址指针LOOPLP2 设置单位除法次数计数器MOVAH,4CHINT21H 取被除数一位作十进制调整CODE:ENDSENDSTART 作字节除法、存商 N 被除数各位已除完 Y显示运算结果 结束 三、实验体会 通过
4、本次实验,我了解了汇编语言的编辑方法及特点,掌握汇编语言的编辑、汇编及连接的过程,并逐步掌握运用DEBUG进行调试汇编语言程序。但对其的熟悉程度和应用还远远不够,因此需要经过加强练习,提高水平。实验二 设计汇编语言程序一 实验内容1、字符串统计程序设计 2、双字乘法程序设计二 实验内容1 字符串统计。 在数据段中建立一个缓冲区BUFFER,变量VER,编程使得程序具有如下功能:从键盘输入一个子字符串存入VER,从键盘输入包含一个或几个子字符串的字符串存入BUFFER。统计BUFFER中的字符串含有多少个子字符串以及每个子字符串的位置。2 双字乘法程序。设计一个程序实现32位带符号双精度数乘法运
5、算。由于只有8位和16位的乘法指令。因此32位乘法运算是不能直接用指令实现的。但可以用16位乘法指令,通过 4次想乘然后把部分积想加。对于带符号数,可以先根据绝对值求得积。然后判断积的符号,若积为负数,应将其用补码表示。三 实验流程与程序: 子程序入口 AXNUM1 开始 DX:AXAX*NUM2 乘积符号标志SIGN=0 MRLTAX,MRLT+2DX 被乘数>0 Y AXNUM1+2 N 被乘数取补 DX:AXAX*NUM2 SIGN标志取反 MRLT+2AX+MRLT+2,MRLT+4DX+C 乘数>0 Y AXNUM1 N 乘数取补 DX:AXAX*NUM2+2 SIGN标
6、志取反 MRLT+2AX+MRLT+2,MRLT+4DX+C调用32位无符号乘法子程序 保存进位 SIGN=0 Y AXNUM1+2 N 乘积取补 DX:AXAX*NUM2+2 结束 恢复进位 32位带符号数乘法流程图 MRLT+4AX+MRLT+4,MRLT+6DX+C RET 32位无符号乘法子程序流程图data segmentioportequ 0d400h-0280hio8253aequ ioport+280hio8253bequ ioport+283hio8255aequ ioport+288hio8255bequ ioport+28bhio0832aequ ioport+290hd
7、ata1 db 80h,96h,0aeh,0c5h,0d8h,0e9h,0f5h,0fdh db 0ffh,0fdh,0f5h,0e9h,0d8h,0c5h,0aeh,96h db 80h,66h,4eh,38h,25h,15h,09h,04h db 00h,04h,09h,15h,25h,38h,4eh,66h;正弦波数据time db 120,106,94,89,79,70,63,59;发不同音时8253的计数器初值msg db 'Press 1,2,3,4,5,6,7,8,ESC:',0dh,0ah,'$'num db ;num为8253计数器初值的序号d
8、ata endscode segment assume cs:code,ds:datastart:mov ax,datamov ds,axmov dx,offset msgmov ah,9int 21h ;显示提示信息sss:mov ah,7int 21h ;从键盘接收字符,不回显cmp al,1bhje exit ;若为ESC键,则转EXITcmp al,31hjl ssscmp al,38hjg sss ;若不在'1'-'8'之间转ssssub al,31hmov num,al ;求出相应的时间常数的序号mov cx,60 ;取60次32个正弦波数据ddd:
9、mov si,0lll:mov al,data1si ;取正弦波数据mov dx,io0832aout dx,al ;放音call delay ;调延时子程序inc sicmp si,32 ;是否取完32个数据jl lll ;若没有,则继续loop ddd ;总循环次数60是否完,没有,则继续jmp sssexit:mov ah,4chint 21hdelay proc near ;延时子程序ccc:mov bx,offset timemov dx,io8253b ;置8253通道0为方式0工作mov al,10hout dx,almov dx,io8255b ;设8255A口输入mov al
10、,9bhout dx,almov al,num ;取相应的时间常数xlatmov dx,io8253aout dx,al ;向8253通道0输出kkk:mov dx,io8255ain al,dx ;从8255A口读一字节test al,01 ;判PA0口是否为1jz kkk ;若不为1,则转KKKret ;子程序返回delay endpcode endsend start四、实验体会 编辑程序有很多种,但按功能划分,主要有两大类。一类是行编辑程序,如EDIT编辑程序;另一类是全屏幕编辑程序如Quick Edit(QE)。行编辑程序功能较弱,不如全屏幕编辑程序方便、灵活。 实验三 8253定时
11、器/计数器接口与数字电子琴一、实验目的 改变定时器2的计数值来改变声音频率,通过编程来获得声调(频率)和节奏(延时长短),使计算机演奏出乐曲来。二、实验原理 PC机的主机箱上装有一只小喇叭,由定时器8253和并行接口芯片8255控制其发音,其电路如下: 8253 DRIVER 19318MHZ CLK OUT2 8255 PB0 GATE2 PB1 8253用定时器2来产生896Hz的音频信号使喇叭发声,我们可以改变定时器2的计数值来改变声音频率,通过发声的延时程序来获得时间长短不同的声音,于是就可以通过编程;来获得声调(频率)和节奏(延时长短),使计算机演奏出乐曲来。如果再把音符1,2,3,
12、4, . . .5,6,7,1,2,3,······与数字键1,2,3,4,5,6,7,8,9,······对应起来,就可以把计算机变成电子琴。以下给出有关资料: 1音符 1, 2, 3, 4 ,5 ,6, 7, 1, 2, 3, 4, 5, 6, 7, 频率 131 147 165 175 196 220 247 262 294 330 349 392 440 494 5232计数值计算公式 计数值=(时钟频率)/ 给定频率 =1234DCH / 给定频率 8253道地地定
13、时器通道2的端口地址:42H(存放计数值,先送低位字节,后送高位字节) 命令寄存器地址:43H4实验程序:1) 计算计数值程序段:MOV DI, 给定频率 MOV DX, 12HMOV AX, 34DCHDIV DIAX中即为计数值。2) 打开扬声器发声,8255PB0,PBI送出高电平:IN AL 61HOR AL 3OUT 61H AL3)关闭扬声器,停止发声:IN AL 61HOR AL 0FCHOUT 61H AL三 实验体会 实验刚开始有点不知如何下手,经过请教别人和网上查找资料,慢慢有了思路。通过学习和研究利用8253定时器/计数器的特点和功能,应用编程知识慢慢调试,最终编出音乐来
14、。获得实验成功的时候,觉得知识在生活中的应用真是太美妙了!以后将学着去编出其他曲目的程序来。 实验四 实时时钟实验一、实验目的 设计一个时钟显示程序,要求利用定时器0的定时中断记录时间。二、 实验原理PC机中8253定时器0是作为系统时钟的定时中断使用的,它被设置为每秒产生18。2次定时中断。用户可以改写中断向量表,使这个0级中断转入自己的定时服务程序中去,也可以重新初始化该计数器,使之产生用户所需要的定时中断,这样就可以在计算机控制系统中用来定时采样压力,温度等等被控制参数,然后进行开环或闭环控制。BIOS在初始化8253定时器以后,给用户留下了一个INT 1CH的软件接口,其处理程序只是一
15、条空操作返回指令,用户可以将其入口地址填入中断向量表1CH型中断向量,使得一进入1CH型中断,便立即执行用户自己的程序,执行完又返回中断服务程序继续执行第二种方式是重新设置定时器0,使其工作在方式3,装入计数值11932,使其每10ms发一次定时中断。由于定时器0的中断类型号是08H,所以应将用户的中断服务程序入口地址填入中断向量表的08H向量中。三、 实验内容:1 用第二种方式重新设置定时器0,使其工作在方式3(控制寄存器地址43H),装入计数值11932(端口地址40H),使超10ms产生一次中断;2 设计一个时钟显示程序,要求利用定时器0的定时中断记录时间,然后以hh:mm:ss的形式在
16、屏幕上显示出来(hh是小时,mm是分,ss是秒),每秒钟显示一次,而且必须在同一位置显示,才能看见变化数位的数字跳动。3 将程序的入口地址写入中断向量08H,注意在写入前,必须设置一个变量将原中断向量保存起来,以便在程序结束时恢复。4 程序中要设计输入正确计时点(当前时间值)的方法。5 按ESC键推出,返回DOS。(注意:要恢复原来的中断向量,此功能才能实现)。6 程序中允许时钟和键盘中断。四、简略流程图。开始利用PSP参数区存放命令行参数读按键(当前时间与命令行参数相 定时中断子程序入口等时,按回车,程序向下执行) 保存原08H型中断向量 改变时分秒计数值 写入新的中断向量 并以ASCII码
17、形式形成 显示字符串 初始化8253通道0, 使其工作在 方式3, 每10ms发一次中断 IRET 检查秒计数值改变否,若改变在 同一位置显示时间,否则不显示 定时中断子程序流程图 有键按下否 N Y 恢复原中断向量 返回DOS 主程序流程图五、实验程序 1、利用RTC的增量功能进行1s的定时,当定时时间到,取反LED控制#include ""#define LED1CON 0x /*口为LED1控制器*/*定义Fpclk值,用于设置串口波特率*/#define FPCLK L2、初始化实时时钟void RTCIni(void) PREINT=FPCLK/32768-1;
18、L5/6/71F3F3F8255A8255A工作方式选择字8255工作方式选择字共8位,存放在8255控制寄存器中。最高位D7为标志位,D7=1表示控制寄存器中存放的是工作方式选择字,D7=0表示控制寄存器中存放的是C口置位/复位控制字。3 、C口置/复位控制字8255的C口可进行位操作,即:可对8255C口的每一位进行置位或清零操作,该操作是通过设置C口置/复位字实现的(图8-10)。C口置/复位字共8位,各位含义如下:4、 命令字与初始化编程8255有两个命令字,即方式选择控制字和C口置0/置1控制字,初始化编程的步骤是: 向8255控制寄存器写入“方式选择控制字”,从而预置端口的工作方式
19、。 当端口预置为方式1或方式2时,再向控制寄存器写入“C口置0/置1控制字”。这一操作的主要目的是使相应端口的中断允许触发器置0,从而禁止中断,或者使相应端口的中断允许触发器置1,从而允许端口提出中断请求。 注意:“C口置0/置1控制字”虽然是对C口进行操作,但是该控制字是命令字,所以要写入控制寄存器,而不是写入C口控制寄存器。 向8255数据寄存器写入“数据”或从8255数据寄存器读出“数据”。三、实验操作过程键盘驱动的主要作用就是实时监测外部按键中断,一旦发现外部有键按下就向内核发送键盘消息实现键盘输入功能。键盘驱动创建了中断服务线程和4个键盘中断事件,每行按键对应一个键盘中断事件。有键被
20、按下时,中断服务例程得到对应的中断标识符并报告给系统任务调度进程,同时产生键盘中断事件,键盘中断服务线程响应键盘中断事件,开始扫描矩阵键盘。根据产生的中断事件类型不同,可以首先确定被按下键的行位置。由于键盘被按下后,该键对应的行和列被连通,因此根据判断各列对应的I/O口的电平,可以得到被按下键的列位置;得到按键的准确位置后,通过向操作系统发送键盘消息KEYBD_EVENT,实现一次键盘输入。循环扫描键盘,直到按键被弹起则发送KEYEVENTF_KEYUP事件。响应键盘中断输入的整个流程如图。1、 在OAL层加入中断源矩阵键盘采用4路I/O口中断,每路中断对应1个中断源。矩阵键盘驱动首先要在OA
21、L层加入这些中断源。以其中一路中断为例:#define SYSINTR_KEYONE(SYSINTR_FIRMWARE+0)2 、中断服务例程(ISR)设计本键盘驱动将GPIO_6、GPIO_7、GPIO_16、GPIO_17四个I/O口作为中断I/O口。有键被按下时将产生一个I/O中断,内核首先进入异常中断处理程序,由它屏蔽所有中断,再调用中断服务例程ISR得到该中断的逻辑中断标识。鉴于ISR的任务比较单一,ISR通常都要求越短、越快越好。矩阵键盘驱动的ISR设计如下:if(v_pGPIORegGEDR_x & GPIO_6) /中断触发 v_pGPIORegGEDR_x = GPI
22、O_6;/清除中断 return SYSINTR_KEYONE;/返回中断标识其他三路中断的ISR设计与此类似。3、中断服务线程(IST)设计中断服务例程以键盘中断的逻辑中断标识符形式返回给系统任务调度进程,中断服务线程则在矩阵键盘驱动中负责具体中断处理。因为中断服务例程较小,并且只做很少的处理工作,中断服务线程就必须完成大多数中断处理工作,功能主要包括响应中断、扫描按键位置、发送键盘消息等。矩阵键盘驱动的IST设计如下:矩阵键盘驱动设计了4个中断事件HANDLE hKEYEvents,分别对应矩阵键盘4行产生的中断。在矩阵键盘驱动的IST中,调用CreateEvent函数创建4个事件对象,接着调用系统函数InterruptInitialize完成中断和事件的关联并使能中断。完成这些初始化工作后,就可以调用WaitForMultipleObjects (hKEYEvents)函数进入键盘事件的等待
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030智慧法庭智能证据管理行业市场需求分析技术现状竞争格局创新模式投资规划分析报告
- 2025-2030智慧楼宇建设项目验收标准完善研讨文章
- 吉安市中医院先天性心脏病超声考核
- 泉州市人民医院儿童腰椎穿刺技能考核
- 南平市人民医院技术规范制定考核
- 龙岩市中医院角膜塑形镜验配技术准入考核
- 上饶市人民医院系统性红斑狼疮疾病活动度评估考核
- 2025年生物质能生物质炭在生物质能源化利用中的环保效益报告
- 2025合同代销授权书范文
- 运动疗法家庭化研究-洞察与解读
- 锂电池pack基础知识培训课件
- 2025及未来5年中国超市周转筐市场调查、数据监测研究报告
- 数学活动自然数被3整除的规律
- 2069-3-3101-002WKB产品判定准则-外发
- GB/T 20882.2-2021淀粉糖质量要求第2部分:葡萄糖浆(粉)
- 总账会计绩效考核表
- 《光的直线传播》教学设计 省赛一等奖
- 树立反对拜金主义人生观教育模板课件
- 电烙铁使用详解课件
- 学术论文的撰写方法与规范课件
- (新)中考英语书面表达指导教学公开课课件
评论
0/150
提交评论