好文档 - 专业文书写作范文服务资料分享网站

汇编语言程序设计实验内容(川大微机原理实验资料和内容以及MASM使用方法)

天下 分享 时间: 加入收藏 我要投稿 点赞

文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.

第一部分 汇编语言程序设计

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

一. 上机目的:

1. 了解并逐步熟悉汇编语言的编辑方法及特点.

2. 复习8088汇编语言的段结构、常用的指令与伪指令、存储空间的分配等。 3. 掌握汇编语言的编辑、汇编及连接的过程。

4. 了解并逐步掌握运用DEBUG进行调试汇编语言程序。 二. 实验内容:

1. 运用8086汇编语言,编辑多字节非压缩型BCD数除法的简单程序,文件名取为

*.ASM。

2. 运用MASM﹒EXE文件进行汇编,修改发现的各种语法错误,直至正确,形成*.OBJ

文件。

3. 运用LINK.EXE文件进行连接,形成*.EXE文件。

4. 仔细阅读附录中的DEBUG部分,掌握各种命令的所有方法。

5. 运用DEBUG。EXE文件进行调试,使用单步执行命令—T两次,观察寄存器中内

容的变化,使用察看存储器数据段命令—D,观察存储器数据段内数值。

6. 再使用连续执行命令—G,执行程序,检查结果是否正确,若不正确可使用DEBUG

的设置断点,单步执行等功能发现错误所在并加以改正。 程序清单:

多字节非压缩型BCD数除法 (88754/6=14792) DATA SEGMENT A DB 8,8,7,5,4 B DB 6 C DB 5DUP (0) N EQU 5 DATA ENDS

CODE SEGMENT ASSUME CS:CODE;DS:DATA;ES:DATA, START MOV AX,DATA MOV DS,AX MOV ES,AX CLD LEA SI,A LEB DI,C MOV CX,N MOV AH,0 LP1: LODSB AAD DIV B STOSB LOOP LP1 MOV CX,N LEA DI,C

1文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.

文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.

LP2: MOV DL,[DI] MOV AH,2 开始 INT 21H DEC DI 设置被除数、商的地址指针 LOOP LP2 设置单位除法次数计数器 MOV AH,4CH INT 21H 取被除数一位作十进制调整 CODE: ENDS END START 作字节除法、存商 N 被除数各位已除完? Y 显示运算结果 结束 实验二 设计汇编语言程序

一. 8088提供了一套字符串处理指令,这些指令的特点是:在使用前必须先

在指定的寄存器中存入源字符串和目的字符串的首地址及相关字符数,在处理过程中还可以使用REP重复操作前缀。灵活使用这些特点,将会给编程带来很大的方便。

8088对算术运算只提供了基本指令。实际编程中需要我们加以扩展,这也要求我们很好地掌握。

二. 实验内容 1. 字符串统计。

在数据段中建立一个缓冲区BUFFER,变量VER,编程使得程序具有如下功能:从

键盘输入一个子字符串存入VER,从键盘输入包含一个或几个子字符串的字符串存入BUFFER。统计BUFFER中的字符串含有多少个子字符串以及每个子字符串的位置。

2. 双字乘法程序。

设计一个程序实现32位带符号双精度数乘法运算。由于只有8位和16位的乘法指令。因此32位乘法运算是不能直接用指令实现的。但可以用16位乘法指令,通过 4次想乘然后把部分积想加。对于带符号数,可以先根据绝对值求得积。然后判断积的符号,若积为负数,应将其用补码表示。 三. 实验报告:

1.提供所设计的完整的程序清单。

2.记录调试过程中发现的问题及解决方法。 3.可以考虑如何设计更好功能的程序。

提示:可以参考的程序流程图

被乘数存放:NUM1 乘数存放:NUM2

积数存放: MRLT 乘积符号标志存放:SIGN 变量NUM1,NUM2,MRLT均用DW定义。 子程序入口 AX←NUM1 开始 DX:AX←AX*NUM2 乘积符号标志SIGN=0 MRLT←AX,MRLT+2←DX 被乘数>0 ? Y AX←NUM1+2 2文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.

文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.

N 被乘数取补 DX:AX←AX*NUM2 SIGN标志取反 MRLT+2←AX+MRLT+2,MRLT+4←DX+C 乘数>0 ? Y AX←NUM1 N 乘数取补 DX:AX←AX*NUM2+2 SIGN标志取反 MRLT+2←AX+MRLT+2,MRLT+4←DX+C 调用32位无符号乘法子程序 保存进位 SIGN=0 ? Y AX←NUM1+2 N 乘积取补 DX:AX←AX*NUM2+2 结束 恢复进位 32位带符号数乘法流程图 MRLT+4←AX+MRLT+4,MRLT+6←DX+C RET 32位无符号乘法子程序流程图

实验三 中值滤波与均值滤波

一.在一般工业控制装置中,最常遇到的问题就是干扰。由于有工业干扰信号的存在,使得

从工业现场检测的数据出错,对于不同类型的干扰可以采用不同的办法来排除。其中对于脉冲干扰常采用中值滤波和均值滤波的方法来解决能获得较好的效果。因为脉冲干扰是随机叠加在被检测信号之上的,它们造成的后果是使有用信号的幅度增大或变小。我们在采样程序中加入上述数字滤波程序就可以消除或减少这类干扰的影响。 (1) 中值滤波程序:在一个采样周期中连续进行奇数次采样,依次可得奇数个采样值,

取其中大小为“中值”的 那个采样值作为该采样周期的测量值。

(2) 均值滤波:在一个采样周期中,连续进行偶数次采样,去掉最大和最小的两个采

样值,求出其余采样值的平均值。

二.实验内容

1. 在数据段设变量数组合TADA1和TADA2,并存入假设的两组采样值作为某一

采样周期的奇数个和偶数个采样值。 2. 设计中值滤波程序求出测量值。 3. 设计均值滤波程序求出测量值。 4. 每个程序应能将结果显示在屏幕上。 5. 在计算机上调试程序,并获得正确结果。 四. 实验报告:

1. 分析中值滤波和均值滤波各有什么优缺点。 2. 整理出运行正确的程序清单(加以注释)。并给出程序流程图。 3. 试提出对数字滤波器的改进方法或新的方法。

第二部分 接口程序设计

实验四 8253定时器/计数器接口与数字电子琴

一,原理

PC机的主机箱上装有一只小喇叭,由定时器8253和并行接口芯片8255控制其发音,其电路如下:

8253 DRIVER

3文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.

文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.

1.9318MHZ CLK OUT2 8255 PB0 GATE2 PB1 8253用定时器2来产生896Hz的音频信号使喇叭发声,我们可以改变定时器2的计数值来改变声音频率,通过发声的延时程序来获得时间长短不同的声音,于是就可以通过编程;来获得声调(频率)和节奏(延时长短),使计算机演奏出乐曲来。如果再把音符1,2,3,4, . . . 5,6,7,1,2,3,······与数字键1,2,3,4,5,6,7,8,9,······对应起来,就可以把计算机变成电子琴。 以下给出有关资料: 1.音符 1, 2, 3, 4 , 7, 1, 2, 3, 4, 5, 6, 7, ⅰ ....,5 .,6..频率 131 147 165 175 196 220 247 262 294 330 349 392 440 494 523 2.计数值计算公式

计数值=1.19318MHz(时钟频率)/ 给定频率 =1234DCH / 给定频率

8253道地地定时器通道2的端口地址:42H(存放计数值,先送低位字节,后送高位字

节)

命令寄存器地址:43H 4.编程参考:

1) 计算计数值程序段:

MOV DI, 给定频率 MOV DX, 12H MOV AX, 34DCH DIV DI

AX中即为计数值。

2) 打开扬声器发声,8255PB0,PBI送出高电平:

IN AL 61H OR AL 3 OUT 61H AL 3)关闭扬声器,停止发声:

IN AL 61H OR AL 0FCH OUT 61H AL

二.实验内容:

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

2. 利用DOS的键盘管理功能。将微机变为一个具有简单功能的电子琴(选作)。 三. 实验报告:

1. 总结设计中断服务的要点及程序结构;

2. 整理出运行正确的源程序清单(加以注释)给出详细程序流程图; 3. 有什么新的设想?

提示:可以在数据段定义两个表,一个存放乐曲的音调参数(频率对应的计数值),一个存放乐曲的节奏(延时长短)。然后依次读出,依次发音,直至演奏完整段乐曲。

4文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.

文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.

实验五 实时时钟实验

一. 原理:

PC机中8253定时器0是作为系统时钟的定时中断使用的,它被设置为每秒产生18。2次定时中断。用户可以改写中断向量表,使这个0级中断转入自己的定时服务程序中去,也可以重新初始化该计数器,使之产生用户所需要的定时中断,这样就可以在计算机控制系统中用来定时采样压力,温度等等被控制参数,然后进行开环或闭环控制。

BIOS在初始化8253定时器以后,给用户留下了一个INT 1CH的软件接口,其处理程序只是一条空操作返回指令,用户可以将其入口地址填入中断向量表1CH型中断向量,使得一进入1CH型中断,便立即执行用户自己的程序,执行完又返回中断服务程序继续执行

第二种方式是重新设置定时器0,使其工作在方式3,装入计数值11932,使其每10ms发一次定时中断。由于定时器0的中断类型号是08H,所以应将用户的中断服务程序入口地址填入中断向量表的08H向量中。 二. 实验内容:

1. 用第二种方式重新设置定时器0,使其工作在方式3(控制寄存器地址43H),装

入计数值11932(端口地址40H),使超10ms产生一次中断; 2. 设计一个时钟显示程序,要求利用定时器0的定时中断记录时间,然后以hh:mm:ss

的形式在屏幕上显示出来(hh是小时,mm是分,ss是秒),每秒钟显示一次,而且必须在同一位置显示,才能看见变化数位的数字跳动。

3. 将程序的入口地址写入中断向量08H,注意在写入前,必须设置一个变量将原中

断向量保存起来,以便在程序结束时恢复。

4. 程序中要设计输入正确计时点(当前时间值)的方法。 5. 按ESC键推出,返回DOS。(注意:要恢复原来的中断向量,此功能才能实现)。 6. 程序中允许时钟和键盘中断。 四. 实验报告

1. 总结设计中断服务的要点及程序结构;

2. 整理出运行正确的源程序清单(加以注释)给出程序详细流程图; 3. 有什么新的设想? 提示:

1. 可以在数据段定义一个字符串存放时,分,秒的计数值。

2. 利用PSP(程序段前缀)中的参数区(从82H字节开始)存放命令行参数。命令行

参数可以用来输入正确的时间。输入方式:>命令hh:mm:ss其中命令是你设计的可执行程序的名称,hh:mm:ss表示当前的时:分:秒数值,它们放在命令后面并用空格与命令隔开,称为命令行参数。 3. 可参考以下简略流程图。 开始 利用PSP参数区存放命令行参数 读按键(当前时间与命令行参数相 定时中断子程序入口 等时,按回车,程序向下执行) 保存原08H型中断向量 改变时﹑分﹑秒计数值 写入新的中断向量 并以ASCII码形式形成 显示字符串 初始化8253通道0, 使其工作在 方式3, 每10ms发一次中断 IRET 5文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.

汇编语言程序设计实验内容(川大微机原理实验资料和内容以及MASM使用方法)

文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.第一部分汇编语言程序设计实验一熟悉、使用DEBUG调试工具一.上机目的:1.了解并逐步熟悉汇编语言的编辑方法及特点.2.复习8088汇编语言的段结构、常用的指令与伪指令、存储空间的分配等。3.掌握汇编语言的编辑、汇编及连接的过程
推荐度:
点击下载文档文档为doc格式
2ssdy0daqq0088t3x4ji0cqsi0v0qh00p59
领取福利

微信扫码领取福利

微信扫码分享