微机原理及接口技术实验指导书课案.docx

上传人:b****0 文档编号:17007774 上传时间:2023-07-21 格式:DOCX 页数:56 大小:859.82KB
下载 相关 举报
微机原理及接口技术实验指导书课案.docx_第1页
第1页 / 共56页
微机原理及接口技术实验指导书课案.docx_第2页
第2页 / 共56页
微机原理及接口技术实验指导书课案.docx_第3页
第3页 / 共56页
微机原理及接口技术实验指导书课案.docx_第4页
第4页 / 共56页
微机原理及接口技术实验指导书课案.docx_第5页
第5页 / 共56页
微机原理及接口技术实验指导书课案.docx_第6页
第6页 / 共56页
微机原理及接口技术实验指导书课案.docx_第7页
第7页 / 共56页
微机原理及接口技术实验指导书课案.docx_第8页
第8页 / 共56页
微机原理及接口技术实验指导书课案.docx_第9页
第9页 / 共56页
微机原理及接口技术实验指导书课案.docx_第10页
第10页 / 共56页
微机原理及接口技术实验指导书课案.docx_第11页
第11页 / 共56页
微机原理及接口技术实验指导书课案.docx_第12页
第12页 / 共56页
微机原理及接口技术实验指导书课案.docx_第13页
第13页 / 共56页
微机原理及接口技术实验指导书课案.docx_第14页
第14页 / 共56页
微机原理及接口技术实验指导书课案.docx_第15页
第15页 / 共56页
微机原理及接口技术实验指导书课案.docx_第16页
第16页 / 共56页
微机原理及接口技术实验指导书课案.docx_第17页
第17页 / 共56页
微机原理及接口技术实验指导书课案.docx_第18页
第18页 / 共56页
微机原理及接口技术实验指导书课案.docx_第19页
第19页 / 共56页
微机原理及接口技术实验指导书课案.docx_第20页
第20页 / 共56页
亲,该文档总共56页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

微机原理及接口技术实验指导书课案.docx

《微机原理及接口技术实验指导书课案.docx》由会员分享,可在线阅读,更多相关《微机原理及接口技术实验指导书课案.docx(56页珍藏版)》请在冰点文库上搜索。

微机原理及接口技术实验指导书课案.docx

微机原理及接口技术实验指导书课案

实验一系统认知实验

实验目的:

了解汇编语言的设计、编写和调试程序的方法,掌握DEBUG的使用。

实验设备:

装有DOS系统和MASM5.0的微机一台,或TDN86/88微机原理教学实验系统一台。

实验内容:

编程实现在屏幕上显示一个大写字母“A”或字符串“HOWAREYOU?

”,用DEBUG调试程序

实验要求:

1、上机前做好充分准备,包括源程序清单、调试步骤等;

2、用DEBUG来调试程序,熟悉DEBUG的使用。

实验步骤:

1、编写程序并输入,检查无误后,经汇编、连接后运行,用DEBUG装入。

2、用U命令反汇编程序,应用R、G等命令,观看运行情况。

3、用D、E、A等命令查看、修改源数据,用G命令查看运行结果。

4、用Q命令退出DEBUG

上机过程

v1.建立源文件使用EDIT软件,得到扩展名为ASM的汇编语言源程序文件。

(扩展名.asm勿忘加!

v2.汇编源程序使用汇编程序MASM对源程序进行汇编,生成OBJ、LST和CRF文件(后两种一般不需要,可直接回车)。

如程序有错,可以根据提示信息,重新编辑、汇编源程序,直到没有严重错误为止。

v3.连接程序使用连接程序LINK,对汇编程序产生的目标文件进行连接,产生可执行的程序EXE。

v4.调试或运行程序

具体过程如下:

v1.编辑C:

\MASM>EDIT文件名.ASM

v2.汇编C:

\MASM>masm文件名.ASM

v3.连接C:

\MASM>link文件名.obj

v4.调试C:

\MASM>debug文件名.exe

v-U反汇编,记下程序首地址和结束地址

v-D段地址:

偏移地址察看内存单元内容

v-E段地址:

偏移地址修改内存单元内容:

空格修改下一个,回车结束修改

v-G=起始地址结束地址运行程序

参考源程序:

(1)屏幕上显示一个大写字母“A”

STACKSEGMENTSTACK

DW64DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE

START:

MOVAH,02H

MOVDL,‘A’

INT21H

INT20H

CODEENDS

ENDSTART

(2)屏幕上显示字符串“HOWAREYOU?

DATASEGMENT

BUFDB'HOWAREYOU?

$'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETBUF

MOVAH,09H

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

 

实验二分支程序设计实验

一、实验目的

1.掌握分支程序的结构。

2.掌握分支程序的设计、调整方法。

二、实验设备

TDN86/88教学实验系统一台。

三、实验内容及步骤

设计一数据块间的搬移程序

设计思想:

程序要求把内存中一数据区(称为源数据块)传送到另一存储区(成

为目的数据块)。

源数据块和目的数据块在存储中可能有三种情况,如图3-1所示。

图3-1源数据块与目的数据块在存储中的位置情况

对于两个数据块分离的情况,如图3-1(a),数据的传送从数据块的首地址开始,或从数据块的末地址开始均可。

但是对于有重叠的情况,则要加以分析,否则重叠部分会因“搬移”而遭到破坏,可有如下结论:

当源数据块首地址<目的块首地址时,从数据块末地址开始传送数据,如图3-1(b)所示。

当源数据块首地址>目的块首地址时,从数据块首地址开始传送数据,如图3-1(c)所示。

参考流程:

如图3-2所示。

图3-2程序流程图

实验程序

STACKSEGMENTSTACK

DW64DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE

START:

MOVCX,0010H

MOVSI,3100H

MOVDI,3200H

CMPSI,DI

JAA2

ADDSI,CX

ADDDI,CX

DECSI

DECDI

A1:

MOVAL,[SI]

MOV[DI],AL

DECSI

DECDI

DECCX

JNEA1

JMPA3

A2:

MOVAL,[SI]

MOV[DI],AL

INCSI

INCDI

DECCX

JNEA2

A3:

JMPA3

CODEENDS

ENDSTART

实验步骤

(1)输入程序并检查无误,经汇编、连接后装入系统。

(2)用E命令在以SI为起址的单元中填入16个数。

(3)G=↙,运行实验程序。

(4)用D命令查看DI为起址的单元中的数据是否与SI单元中数据相同。

(5)试改变SI、DI的取值,观察在三种不同的数据块情况下程序的运行。

四.思考题

为什么当源数据块首址>目的块首址时,应从数据块首地址开始传送数据。

而当

数据块首址<目的块首址时,应从数据块末地址开始传送数据?

 

实验三循环程序设计

一.实验目的

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

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

3.熟练掌握调试循环程序的方法。

二.实验设备

TDN86/88教学实验系统一台。

三.实验内容及步骤

1.编制程序

计算S=1+2×3+3×4+4×5+…+N(N+1),直到N(N+1)项大于200为止。

编写实验程序,计算上式的结果,参考流程图如图3-3所示。

 

图3-3程序流程图

 

实验程序

STACKSEGMENTSTACK

DW64DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE

START:

MOVDX,0001H

MOVBL,02H

A1:

MOVAL,BL

INCBL

MULBL

ADDDX,AX;结果存于DX中

CMPAX,00C8H;判断N(N+1)与200的大小

JNAA1

A2:

JMPA2

CODEENDS

ENDSTART

实验步骤

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

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

(3)运算结果存储在寄存器DX中,查看结果是否正确;

(4)可以改变N(N+1)的条件来验证程序功能是否正确,但要注意,结果若大于FFFFH将产生数据溢出。

 

2.求某数据区内负数的个数

设数据区的第一单元存放区内单元数据的个数,从第二单元开始存放数据,在区内最后一个单元存放结果。

为统计数据区内负数的个数,需要逐个判断区内的每一个数据,然后将所有数据中凡是符号位为1的数据的个数累加起来,即得到区内所包含负数的个数。

实验程序流程图如图3-4所示。

图3-4程序流程图

 

实验程序

STACKSEGMENTSTACK

DW64DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE

START:

MOVDI,3000H;数据区首地址

MOVCL,[DI];取数据个数

XORCH,CH

MOVBL,CH

INCDI;指向第一个数据

A1:

MOVAL,[DI]

TESTAL,80H;检查数据首位是否为1

JEA2

INCBL;负数个数加1

A2:

INCDI

LOOPA1

MOV[DI],BL;保存结果

A3:

JMPA3

CODEENDS

ENDSTART 

实验步骤

(1)按实验流程编写实验程序;

(2)编译、链接无误后装入系统;

(3)键入E3000,输入数据如下:

3000=06(数据个数)

3001=12

3002=88

3003=82

3004=90

3005=22

3006=33

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

(5)查看3007内存单元或寄存器BL中的内容,结果应为03;

(6)可以进行反复测试来验证程序的正确性。

实验四排序和检索程序设计

一、实验目的

1.进一步掌握多重循环循环程序的结构。

2.进一步掌握多重循环程序的设计、编写及调试方法。

二、实验准备

1.复习教材中有关多重循环程序设计的相关内容。

2.复习排序和检索算法

3.编写程序1:

将内存中的10个无符号数(长度为2字节)由大到小排序。

DATASEGMENT

XDW24H,32H,01H,02H,44H,32H,05H,00H,12H,11H

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVCX,10

DECCX

LOOP1:

MOVDI,CX

MOVBX,0

LOOP2:

MOVAX,X[BX]

CMPAX,X[BX+2]

JGELOOP3

XCHGAX,X[BX+2]

MOVX[BX],AX

LOOP3:

ADDBX,2

LOOPLOOP2

MOVCX,DI

LOOPLOOP1

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

 

4.编写程序2:

在上述已排好序的数据区里查找某一个数。

若找到,显示‘Y’,否则显示‘N’。

DATASEGMENT

XDW44H,32H,32H,24H,12H,11H,05H,02H,01H,00H

STRING1DB'Y',0DH,0AH,'$'

STRING2DB'N',0DH,0AH,'$'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVCX,10

XORAX,AX

MOVAX,00H

MOVBX,0

LOOP1:

CMPAX,X[BX]

JZLOOP2

INCBX

LOOPLOOP1

JMPLOOP3

LOOP2:

MOVDX,OFFSETSTRING1

MOVAH,09H;输出相应的字母

INT21H

JMPEXIT

LOOP3:

MOVDX,OFFSETSTRING2

MOVAH,09H;输出相应的字母

INT21H

EXIT:

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

 

 

三、实验内容

1.将编写好的程序1输入、汇编、连接并通过Debug调试和检查运行结果。

无序数组X:

24H,32H,01H,02H,44H,32H,05H,00H,12H,11H

排序后的数组从DS:

0000-0010从大到小排列:

2.将编写好的程序2输入、汇编、连接并通过Debug调试和检查运行结果。

测试的数据00H保存在AX寄存器中:

四、实验报告要求

1.整理出运行正确的源程序清单(加以注释),并画出程序流程图。

2.如何修改程序1对数据由小到大排序。

只要把程序中JGELOOP3,JGE(>=)条件改成JBS(<=)

3.说明多重循环程序设计中应该注意的问题。

应该注意循环的条件和循环的次数,注意别出现死循环

4.上机调试过程中遇到的问题是如何解决的。

此次实验较为简单,因为排序算法书上有,只出现一个小问题,就是输入的时候,调用OIH中断,只能输入一个字符存在AX中。

而不能把输入的数字存在AX中。

只会存储相应ACLL码

排序程序设计实验

(1)写出汇编、连接、及运行程序查看结果的步骤如下:

1、程序源代码:

datasegment

var1db09h,08h,07h,06h,05h,04h,03h,02h,01h,00h

var2db?

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movcx,000ah;指定数据个数及循环次数

leasi,var2;取数据区VAR2的偏移地址

l1:

deccx

jzaa

pushsi

pushcx

cc:

decsi

moval,[si]

decsi

cmpal,[si];取相邻的两个数进行比较

jabb

xchgal,[si]

mov[si+01],al

bb:

incsi

loopcc

popcx

popsi

jmpl1

aa:

movah,4ch

int21h

codeends

endstart

2、汇编

3、连接

 

4、运行程序

第一次数据区的数值一次为:

09h,08h,07h,06h,05h,04h,03h,02h,01h,00h

运行

结果

第二次数据区的数值一次为:

02h,03h,05h,01h,04h,06h,0Ah,0Bh,09h,08h

运行

结果

(2)本次实验程序的流程图

Y

N

N

Y

N

Y

(3)1、内循环部分:

cc:

decsi

moval,[si]

decsi

cmpal,[si];取相邻的两个数进行比较

jabb

xchgal,[si]

mov[si+01],al

外循环部分:

l1:

deccx

jzaa

pushsi

pushcx

2、程序中对SI,CX压栈及弹栈的意义:

对SI、CX进行保护。

(4)实验小结

通过此次实验使我进一步了解了汇编语言编程过程。

对于汇编的常用指令有更深的理解了。

 

实验五8255并行接口应用实验

一.实验目的

1.掌握8255工作方式的编程设计。

2.8255与外部设备进行连接的应用。

二.实验设备与材料:

TDN86/88教学实验系统一台,扁平插线若干。

三.实验原理:

INTEL8255是一种通用的可编程并行I/O接口芯片,是专为INTEL公司的微处理器设计的,也可用于其它系列的微型机系统中。

利用8086汇编指令系统,编制初始化程序,可以变更8255的工作方式,通用性强,使用灵活。

8255具有3个带锁存或缓冲的数据端口,它的并行数据宽度为8位。

可与外设并行进行数据交换。

A口和B口内具有中断控制逻辑,在外设与CPU之间可用中断方式进行信息交换。

8255能与许多外部设备连接,例如:

键盘、显示器、打印机等。

(a)工作方式控制字(b)C口按位置位/复位控制字

四.实验内容及步骤

1.8255的一般输入输、出方式

本系统中的8255芯片8255的数据线、地址线、读写控制线等分别与系统总线相连,其A、B、C三个端口以排针形式引出,供8255实验使用,其线路如图1所示。

图18255接口实验中端口地址如表1所示

表1

信号线

寄存器

编址

IOY3

A口

60H

B口

61H

C口

62H

控制寄存器

63H

接口实验单元中的开关和发光二极管电路

按图所示实验线路,8255端口A工作在方式0并作为输出口,端口B工作在方式0并作为输入口。

用一组开关信号接入端口B,端口A输出线接至一组发光二极管上,通过对8255编程来实现输入输出功能。

实验步骤

图28255输入输出方式实验接线图

注:

圆圈处是要求接的连线。

(1)按图2接线。

用扁平线(8头)分别插在8255的A口和发光二极管的插针上。

用扁平线分别插在8255的B口和拨动开关的插针上。

(2)输入源程序,汇编、连接后装入系统。

●      参考程序1

STACKSEGMENTSTACK

DW64DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE

START:

MOVAL,82H;设8255方式字10000010A位输出,B口位输入。

OUT63H,AL

A1:

INAL,61H

OUT60H,AL

JMPA1

CODEENDS

ENDSTART

(3)执行程序后,拨动开关组K0-K7,观察发光二极管LED0-LED7变化,它应是与开关组K0-K7的值是一一对应的变化。

2.8255的选通输入、输出方式

按图3所示实验线路,8255端口A工作在方式0并作为输出口,端口B工作在方式1并作为输入口。

从端口C的PC2成为选通信号输入,端STBb,PC0成为中断请求信号输出端INTRb。

当B口数据就绪后,通过发口STBb信号来请求CPU读取端口B数据并送A口输出显示。

实验步骤

图38255选通方式实验接线图

(KK1-初态为“1”)

注:

圆圈处是要求接的连线。

(1)   按图3接线。

用扁平线(8头)分别插在8255的A口和发光二极管的插针上。

用扁平线分别插在8255的B口和拨动开关的插针上。

8255的PC0插针接8259的IRQ7插针上,8255的PC1插针接KK1-插针上。

(2)   输入源程序,汇编、连接后装入系统。

●      参考程序2

STACKSEGMENTSTACK

DW64DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE

START:

CLI

MOVAL,0A6H

OUT63H,AL

MOVAL,05H

OUT63H,AL

PUSHDS

MOVAX,0000H

MOVDS,AX

MOVAX,OFFSETIRQ7

ADDAX,2000H

MOVSI,003CH

MOV[SI],AX

MOVAX,0000H

MOVSI,003EH

MOV[SI],AX

POPDS

INAL,21H;读IMR

ANDAL,7FH;开IRQ7中断

OUT21H,AL

A1:

STI

HLT;等待中断请求信号

JMPA1

IRQ7:

INAL,61H;读开关信息

OUT60H,AL;输出开关信息

MOVAL,20H

OUT20H,AL

IRET

CODEENDS

ENDSTART

(3)   执行程序后,拨动开关组K0-K7(即设定一输入值),按一下拨动开关KK1,观察发光二极管LED0-LED7变化,它应是与开关组K0-K7D的设定值一一对应。

3.运用8255设计的键盘及显示接口

图中用并行接口8255A作为微机与键盘间的接口,采用逐行扫描法识别键。

将键盘中的列与PA0-PA3相连,A口为输出;将行与C口的PC0-PC1相连,C口为输入口;PB0-PB7与七段代码显示器连接B口为输出。

程序执行过程如下:

识别是否有键按下,方法是使PA0-PA3输出全0,读C口(行值)中只要有一位为0,就说明有键按下,在检测到有键按下后,延迟一段时间,根据找到的键号,转去执行显示七段代码显示器的程序,这时七段代码显示器就显示与该键相同的数值。

实验步骤

●      图48255接口的应用键盘及显示接线图

注:

圆圈处是要求接的连线。

(1)按图4接线。

(2)输入源程序,汇编、连接后装入系统。

(3)执行程序后,按一下键盘,7段代码就会显示相应的数字。

●      参考程序3

STACKSEGMENTSTACK

DW64DUP(?

STACKENDS

DATASEGMENT

TABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVSI,3000H

MOVAL,00H

MOV[SI],AL;清空存放数据的缓冲区

MOV[SI+1],AL

MOV[SI+2],AL

MOV[SI+3],AL

MOVDI,3003H

MOVAL,81H;8255方式字定义选择0方式,A口为输出;

;B口为输出;C口为输入

OUT63H,AL

BEGIN:

CALLDIS;显示七段代码管数据的子程序

CALLCLEAR;七段代码管清0子程序

CALLCCSCAN;检测是否有键按下子程序

JNZINK1;

JMPBEGIN

INK1:

CALLDIS

CALLDALLY;子程序为延时,消抖动

CALLDALLY

CALLCLEAR

CALLCCSCAN

JNZINK2

JMPBEGIN

INK2:

MOVCH,0FEH

MOVCL,00H

COLUM:

MOVAL,CH

OUT60H,AL

INAL,62H

TESTAL,01H

JNZLONE

MOVAL,00H

JMPKCODE

LONE:

TESTAL,02H

JNZNEXT

MOVAL,04H

KCODE:

ADDAL,CL

CALLPUTBUF

PUSHAX

KON:

CALLDIS

CALLCLEAR

CALLCCSCAN

JNZKON

POPAX

NEXT:

INCCL

MOVAL,CH

TESTAL,08H

JZKERR

ROLAL,1

MOVCH,AL

JMPCOLUM

KERR:

JMPBEGIN

CCSCAN:

MOVAL,00H

OUT60H,AL

INAL,62H

NOTAL

ANDAL,03H

RET

CLEAR:

MOVAL,00H

OUT61H,AL

RET

DIS:

PUSHAX

MOVSI,3000H

MOVDL,0F7H

MOVAL,DL

AGAIN:

OUT60H,AL

MOVAL,[SI]

MOVBX,OFFSETTABLE;取七段代码首址

ANDAX,00FFH

ADDBX,AX

MOVAL,[BX]

OUT61H,AL

CA

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2