微机原理实验报告Word文档下载推荐.docx

上传人:b****7 文档编号:22649398 上传时间:2023-02-05 格式:DOCX 页数:31 大小:794.66KB
下载 相关 举报
微机原理实验报告Word文档下载推荐.docx_第1页
第1页 / 共31页
微机原理实验报告Word文档下载推荐.docx_第2页
第2页 / 共31页
微机原理实验报告Word文档下载推荐.docx_第3页
第3页 / 共31页
微机原理实验报告Word文档下载推荐.docx_第4页
第4页 / 共31页
微机原理实验报告Word文档下载推荐.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

微机原理实验报告Word文档下载推荐.docx

《微机原理实验报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《微机原理实验报告Word文档下载推荐.docx(31页珍藏版)》请在冰豆网上搜索。

微机原理实验报告Word文档下载推荐.docx

信息界面

5.连接PC与实验系统的通讯电缆,打开实验系统电源。

6.下载程序,查看内存3000H开始的连续16个存储单元中的内容,显示如下:

8.由于该内存段原始数据与实验数据相同,便于区分观察,将该内存段初始化,然后查看:

9.点击运行程序,在此查看该段内存:

10.设置断点,执行程序:

5操作练习

编写程序,将内存3500H单元开始的8个数据复制到3600H单元开始的数据区中。

通过调试验证程序功能,使用E命令修改3500H单元开始的数据,运行程序后使用D命令查看3600H单元开始的数据。

1、编写程序如下:

MOVSI,3500H

MOVDI,3600H

MOVCX,8

MOVAL,[SI]

MOV[DI],AL

INCDI

2、执行过程如上,内存变化如下:

程序执行前

程序执行后

实验二:

数制转换实验

1、实验目的

1.掌握不同进制数及编码相互转换的程序设计方法,加深对数制转换的理解;

2.熟悉程序调试的方法。

2、实验设备

3、实验内容

将ASCII码表示的十进制数转换为二进制数,将十进制数的ASCII码转换为BCD码

4、步骤

第一部分:

将十进制数的ASCII码转换为BCD码

1、画流程图如下:

2、根据流程图写出代码:

DW64DUP(?

ASSUMECS:

CODE

MOVAX,0000H

MOVDS,AX

MOVCX,0005H;

转换位数

MOVDI,3500H;

ASCII码首地址

A1:

MOVBL,0FFH;

将错误标志存入BL

MOVAL,[DI]

CMPAL,3AH

JNBA2;

不低于3AH则转A2

SUBAL,30H

JBA2;

低于30H则转A2

MOVBL,AL

A2:

MOVAL,BL;

结果或错误标志送入AL

MOV[DI+0AH],AL;

结果存入目标地址

INCDI

LOOPA1

A3:

JMPA3

ENDSTART

3、编译链接,下载运行程序:

第二部分:

将十六位二进制数转换为ASCII码表示的十进制数

十六位二进制数的值域为0~65535,最大可转换为五位十进制数。

五位十进制数可表示为:

N=D4⨯104+D3⨯103+D2⨯102+D1⨯10+D0

Di:

表示十进制数0~9

将十六位二进制数转换为五位ASCII码表示的十进制数,就是求D1~D4,并将它们转换为ASCII码。

自行绘制程序流程图,编写程序可参考例程。

例程中源数存放于3500H、3501H中,转换结果存放于3510H~3514H单元中。

实验步骤

(1)编写程序,经编译、链接无误后,装入系统;

CODESEGMENT

MOVSI,3500H;

源数据地址

MOVDX,[SI]

MOVSI,3515H;

目标数据地址

DECSI

MOVAX,DX

MOVDX,0000H

MOVCX,000AH;

除数10

DIVCX;

得商送AX,得余数送DX

XCHGAX,DX

ADDAL,30H;

得Di的ASCII码

MOV[SI],AL;

存入目标地址

CMPDX,0000H

JNEA1;

判断转换结束否,未结束则转A1

CMPSI,3510H;

与目标地址得首地址比较

JZA3;

等于首地址则转A3,否则将剩余地址中填30H

DECSI

MOVAL,30H

MOV[SI],AL

JMPA2

JMPA3

CODEENDS

(2)在3500H、3501H中存入0C00

(3)运行程序,然后停止运行;

(4)检查运行结果,键入D3510,结果应为:

3030303132;

(5)可反复测试几组数据,验证程序的正确性。

例如;

将3500h,3501H中存入0102,j结果如下:

第三部分:

十六进制数转换为ASCII码

由表1-2-1中十六进制数与ASCII码的对应关系可知:

将十六进制数0H~09H加上30H后得到相应的ASCII码,AH~FH加上37H可得到相应的ASCII码。

将四位十六进制数存放于起始地址为3500H的内存单元中,把它们转换为ASCII码后存入起始地址为350AH的内存单元中。

自行绘制流程图。

(1)编写程序,经编译、链接无误后装入系统;

SSTACKENDS

MOVCX,0004H

MOVDI,3500H;

十六进制数源地址

MOVDX,[DI]

MOVAX,DX

ANDAX,000FH;

取低4位

CMPAL,0AH

小于0AH则转A2

ADDAL,07H;

在A~FH之间,需多加上7H

ADDAL,30H;

转换为相应ASCII码

MOV[DI+0DH],AL;

DECDI

PUSHCX

MOVCL,04H

SHRDX,CL;

将十六进制数右移4位

POPCX

(2)在3500H、3501H中存入四位十六进制数203B,即键入E3500,然后输入3B20;

(3)先运行程序,然后再停止运行;

(4)键入D350A,显示结果为:

0000:

350A32303342CC…;

(5)反复输入几组数据,验证程序功能。

例如键入E3500,然后输入2D,46,显示结果如下:

实验三:

循环程序设计实验

1.加深对循环结构的理解;

2.掌握循环结构程序设计的方法以及调试方法。

计算S=1+2×

3+3×

4+4×

5+…+N(N+1),直到N(N+1)项大于200为止,求某数据区内负数的个数。

计算S=1+2×

5+…+N(N+1),直到N(N+1)项大于200为止

1、构思程序,画流程图:

2、写出程序:

SSTACKSEGMENTSTACK

MOVDX,0001H

MOVBL,02H

MOVAL,BL

INCBL

MULBL

ADDDX,AX;

结果存于DX中

CMPAX,00C8H;

判断N(N+1)与200的大小

JNAA1

JMPA2

3、编译连接,下载程序,运行:

4.修改数据后验证如下,其中将00C8H改为00D8:

第二部分:

求某数据区内负数的个数

1、构思程序结构,画出流程图:

MOVDI,3000H;

数据区首地址

MOVCL,[DI];

取数据个数

XORCH,CH

MOVBL,CH

INCDI;

指向第一个数据

MOVAL,[DI]

TESTAL,80H;

检查数据首位是否为1

JEA2

INCBL;

负数个数加1

MOV[DI],BL;

保存结果

3、编译、链接无误后装入系统,键入E3000,输入数据如下:

3000=06,3001=12,3002=88,3003=82,3004=90,3005=22,3006=33

4、查看内存检验结果如下:

5.修改数据,编译、链接无误后装入系统,键入E3000,输入数据如下:

3000=06,3001=82,3002=86,3003=88,3004=90,3005=11,3006=22

6.修改后检验的结果如下:

实验四:

8259中断控制实验

1.掌握8259中断控制器的工作原理;

2.学习8259的应用编程方法;

3.掌握8259级联方式的使用方法。

3、实验内容及步骤

1.中断控制器8259简介

在Intel386EX芯片中集成有中断控制单元(ICU),该单元包含有两个级联中断控制器,一个为主控制器,一个为从控制器。

该中断控制单元就功能而言与工业上标准的82C59A是一致的,操作方法也相同。

从片的INT连接到主片的IR2信号上构成两片8259的级联。

在TD-PITE实验系统中,将主控制器的IR6、IR7以及从控制器的IR1开放出来供实验使用,主片8259的IR4供系统串口使用。

2、按下图链接好实验电路:

3、写出实验程序如下:

DW32DUP(?

MOVAX,0000H

MOVDS,AX

MOVAX,OFFSETMIR7;

取中断入口地址

MOVSI,003CH;

中断矢量地址

MOV[SI],AX;

填IRQ7的偏移矢量

MOVAX,CS;

段地址

MOVSI,003EH

填IRQ7的段地址矢量

CLI

POPDS

;

初始化主片8259

MOVAL,11H

OUT20H,AL;

ICW1

MOVAL,08H

OUT21H,AL;

ICW2

MOVAL,04H

ICW3

MOVAL,01H

ICW4

MOVAL,6FH;

OCW1

OUT21H,AL

STI

NOP

JMPAA1

MIR7:

STI

CALLDELAY

MOVAX,0137H

INT10H;

显示字符7

MOVAX,0120H

INT10H

MOVAL,20H

中断结束命令

IRET

DELAY:

PUSHCX

MOVCX,0F00H

AA0:

PUSHAX

POPAX

LOOPAA0

RET

4、编译链接,下载程序运行:

实验五:

8255并行接口实验

1实验目的

1.学习并掌握8255的工作方式及其应用;

2.掌握8255典型应用电路的接法。

2实验设备

3实验内容

1.基本输入输出实验。

编写程序,使8255的A口为输入,B口为输出,完成拨动开关到数据灯的数据传输。

要求只要开关拨动,数据灯的显示就发生相应改变。

2.流水灯显示实验。

编写程序,使8255的A口和B口均为输出,数据灯D7~D0由左向右,每次仅亮一个灯,循环显示,D15~D8与D7~D0正相反,由右向左,每次仅点亮一个灯,循环显示。

4实验原理

并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。

CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位或32位等。

8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:

方式0--基本输入/输出方式、方式1--选通输入/输出方式、方式2--双向选通工作方式。

8255的内部结构及引脚如图2-6-1所示,8255工作方式控制字和C口按位置位/复位控制字格式如图

5实验步骤

本实验使8255端口A工作在方式0并作为输入口,端口B工作在方式0并作为输出口。

用一组开关信号接入端口A,端口B输出线接至一组数据灯上,然后通过对8255芯片编程来实现输入输出功能。

具体实验步骤如下述:

1、按下图按图电路

2、编写程序:

MOVDX,0646H

MOVAL,90H

OUTDX,AL

MOVDX,0640H

INAL,DX

MOVDX,0642H

LOOPAA2

3、运行程序,改变拨动开关,同时观察LED显示,验证程序功能。

4.结果:

拨动K0...K7,以及D0...D7开关时,数据灯的显示就会对应的发光。

流水灯显示实验

使8255的A口和B口均为输出,数据灯D7~D0由左向右,每次仅亮一个灯,循环显示,D15~D8与D7~D0正相反,由右向左,每次仅点亮一个灯,循环显示。

实验接线图如图2-6-5所示。

实验步骤如下所述:

1、按下图链接电路图:

2、编写实验程序,经编译、链接无误后装入系统

MOVAL,80H

MOVBX,8001H

MOVAL,BH

RORBH,1

MOVAL,BL

ROLBL,1

MOVCX,0F000H

3、运行程序,观察LED灯的显示,验证程序功能

4、结果:

数据灯D7~D0由左向右,每次仅亮一个灯,循环显示,D15~D8与D7~D0正相反,由右向左,每次仅点亮一个灯,循环显示

5、4、改变循环寻址顺序,重新导入程序,编译连接,运行程序发现流水灯流向改变。

例如:

将程序中的RORBH1以及ROLBL1改成RORBH2以及ROLBL2.

6、结果:

数据灯D7~D0由左向右,每次仅亮一个灯且中间间隔一个灯不亮,循环显示,D15~D8与D7~D0正相反,由右向左,每次仅点亮一个灯且中间间隔一个灯不亮,循环显示

实验六:

电子发声设计实验

学习用8254定时/计数器使蜂鸣器发声的编程方法。

PC微机一台、TD-PITE实验箱一台。

根据实验提供的音乐频率表和时间表,编写程序控制8254,使其输出连接到扬声器上能发出相应的乐曲。

4实验说明及步骤

一个音符对应一个频率,将对应一个音符频率的方波通到扬声器上,就可以发出这个音符的声音。

将一段乐曲的音符对应频率的方波依次送到扬声器,就可以演奏出这段乐曲。

利用8254的方式3——“方波发生器”,将相应一种频率的计数初值写入计数器,就可产生对应频率的方波。

计数初值的计算如下:

计数初值=输入时钟÷

输出频率

例如输入时钟采用1MHz,要得到800Hz的频率,计数初值即为1000000÷

800。

音符与频率对照关系如表2-11-1所示。

对于每一个音符的演奏时间,可以通过软件延时来处理。

首先确定单位延时时间程序(根据CPU的频率不同而有所变化)。

然后确定每个音符演奏需要几个单位时间,将这个值送入DL中,调用DALLY子程序即可。

1、链接下图链接电路

2、编写程序如下:

IOY0EQU06C0H

MY8254_COUNT0EQUIOY0+00H;

8254计数器0端口地址

MY8254_COUNT1EQUIOY0+02H;

8254计数器1端口地址

MY8254_COUNT2EQUIOY0+04H;

8254计数器2端口地址

MY8254_MODEEQUIOY0+06H;

8254控制寄存器端口地址

STACK1SEGMENTSTACK

DW256DUP(?

STACK1ENDS

DATASEGMENT

FREQ_LISTDW371,495,495,495,624,556,495,556,624;

频率表

DW495,495,624,742,833,833,833,742,624

DW624,495,556,495,556,624,495,416,416,371

DW495,833,742,624,624,495,556,495,556,833

DW742,624,624,742,833,990,742,624,624,495

DW556,495,556,624,495,416,416,371,495,0

TIME_LISTDB4,6,2,4,4,6,2,4,4;

时间表

DB6,2,4,4,12,1,3,6,2

DB4,4,6,2,4,4,6,2,4,4

DB12,4,6,2,4,4,6,2,4,4

DB6,2,4,4,12,4,6,2,4,4

DB6,2,4,4,6,2,4,4,12

DATAENDS

CODE,DS:

DATA

MOVAX,DATA

MOVDX,MY8254_MODE;

初始化8254工作方式

MOVAL,36H;

定时器0、方式3

BEGIN:

MOVSI,OFFSETFREQ_LIST;

装入频率表起始地址

MOVDI,OFFSETTIME_LIST;

装入时间表起始地址

PLAY:

MOVDX,0FH;

输入时钟为1MHz,1M=0F4240H

MOVAX,4240H

DIVWORDPTR[SI];

取出频率值计算计数初值,0F4240H/输出频率

MOVDX,MY8254_COUNT0

OUTDX,AL;

装入计数初值

MOVAL,AH

OUTDX,AL

MOVDL,[DI];

取出演奏相对时间,调用延时子程序

CALLDALLY

ADDSI,2

CMPWORDPTR[SI],0;

判断是否到曲末?

JEBEGIN

JMPPLAY

DALLYPROC;

延时子程序

D0:

MOVCX,0010H

D1:

MOVAX,0F00H

D2:

DECAX

JNZD2

LOOPD1

DECDL

JNZD0

DALLYENDP

CMPBL,00H

JNEAA4

CALLDELAYL

JMPAA0

MOVCX,0100H

DLAY1:

LOOPDLAY1

DELAYL:

MOVCX,0010H

DL1:

CALLDELAY

LOOPDL1

3、下载程序,编译连接执行程序,可以听到《友谊地久天长》的音乐.感觉很好听。

实验总结:

通过这次实验我们小组对汇编语言程序的运行,数组转换,中断的原理,定时器8254,并行接口8255的认识更加深刻,理解的也更透彻了。

对我们学习微机原理与接口技术这门课程有很大的帮助,不仅让我们从理论上学习到知识,而且还使我们在这次实践中收获到了很多。

深刻的体会到理论是离不开实践的。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1