当前位置:文档之家› 汇编语言程序设计实验内容(川大微机原理实验资料和内容以及MASM使用方法)

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

第一部分汇编语言程序设计实验一熟悉、使用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)DA TA SEGMENTA DB 8,8,7,5,4B DB 6C DB 5DUP (0)N EQU 5DA TA ENDSCODE SEGMENTASSUME CS:CODE;DS:DATA;ES:DATA,START MOV AX,DA TAMOV DS,AXMOV ES,AXCLDLEA SI,ALEB DI,CMOV CX,NMOV AH,0LP1:LODSBAADDIV BSTOSBLOOP LP1MOV CX,NLEA DI,CLP2:MOV DL,[DI]MOV AH,2INT 21HDEC DILOOP LP2MOV AH,4CHINT 21HCODE: ENDSEND START实验二设计汇编语言程序一.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均用DW32位带符号数乘法流程图32位无符号乘法子程序流程图实验三中值滤波与均值滤波一.在一般工业控制装置中,最常遇到的问题就是干扰。

由于有工业干扰信号的存在,使得从工业现场检测的数据出错,对于不同类型的干扰可以采用不同的办法来排除。

其中对于脉冲干扰常采用中值滤波和均值滤波的方法来解决能获得较好的效果。

因为脉冲干扰是随机叠加在被检测信号之上的,它们造成的后果是使有用信号的幅度增大或变小。

我们在采样程序中加入上述数字滤波程序就可以消除或减少这类干扰的影响。

(1)中值滤波程序:在一个采样周期中连续进行奇数次采样,依次可得奇数个采样值,取其中大小为“中值”的那个采样值作为该采样周期的测量值。

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

二.实验内容1.在数据段设变量数组合TADA1和TADA2,并存入假设的两组采样值作为某一采样周期的奇数个和偶数个采样值。

2.设计中值滤波程序求出测量值。

3.设计均值滤波程序求出测量值。

4.每个程序应能将结果显示在屏幕上。

5.在计算机上调试程序,并获得正确结果。

四.实验报告:1.分析中值滤波和均值滤波各有什么优缺点。

2.整理出运行正确的程序清单(加以注释)。

并给出程序流程图。

3.试提出对数字滤波器的改进方法或新的方法。

第二部分接口程序设计实验四8253定时器/计数器接口与数字电子琴一,原理PC机的主机箱上装有一只小喇叭,由定时器8253和并行接口芯片8255控制其发音,其电路如下:8253 DRIVER1.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 .,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.计数值计算公式计数值=1.19318MHz(时钟频率)/ 给定频率=1234DCH / 给定频率8253道地地定时器通道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二.实验内容:1.设计程序让微机演奏一段简单乐曲2.利用DOS的键盘管理功能。

将微机变为一个具有简单功能的电子琴(选作)。

三.实验报告:1.总结设计中断服务的要点及程序结构;2.整理出运行正确的源程序清单(加以注释)给出详细程序流程图;3.有什么新的设想?提示:可以在数据段定义两个表,一个存放乐曲的音调参数(频率对应的计数值),一个存放乐曲的节奏(延时长短)。

然后依次读出,依次发音,直至演奏完整段乐曲。

实验五实时时钟实验一.原理: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表示当前的时:分:秒数值,它们放在命令后面并用空格与命令隔开,称为命令行参数。

定时中断子程序流程图主程序流程图实验六8255并行接口键盘实验一.原理在PC机中有一片8255作为并行接口,接收从键盘来的扫描码。

其原理图如下其中8255在PC机中的端口地址为:PA口:60HPB 口:61HPC 口:62H控制寄存器:63H键盘扫描码ACK信号键盘中断计算机上电复位后,8255的A组B组均被初始化为方式0,PA口和PC口设定为输入,PB口设定为输出,PB7置为低电平,使PA口外的三态门打开,键盘本身由一片8048单片机控制,当有键按下时,将产生一次中断请求,8048将扫描码通过三态门传送到8255PA口,此中断请求通过8259的IRQ1进入,中断类型码为09H。

通过中断服务程序从8255PA口读取键盘的扫描码,并进行处理,就实现了键盘的输入功能。

二.实验内容:1.利用09H型中断设计一个中断服务程序,实现下述功能:(1)对PA口执行IN指令,输入键的扫描码;(2)通过PB口的PB7发一个正脉冲作为对键盘的回答信号ACK;(3)把输入的扫描码变化成ASKII码;(4)把变换后的ASKII码存入缓冲区,同时显示在屏幕上,当显示完20个字符后,停止进一步输入(可利用关闭键盘中断的方法),返回DOS;(5)在返回DOS前,将这20个字符以颠倒的顺序再显示一次。

2.由于在BIOS中以利用09H型中断安装了键盘中断服务程序,因此在本实验中,程序设计应考虑在退出时不破坏原有的设置,具体办法是,在初始化程序段,将09H 型中断向量原有值读出。

相关主题