微机原理及接口技术实验指导书.docx
- 文档编号:11356392
- 上传时间:2023-02-28
- 格式:DOCX
- 页数:57
- 大小:833.66KB
微机原理及接口技术实验指导书.docx
《微机原理及接口技术实验指导书.docx》由会员分享,可在线阅读,更多相关《微机原理及接口技术实验指导书.docx(57页珍藏版)》请在冰豆网上搜索。
微机原理及接口技术实验指导书
实验一系统认知实验
实验目的:
了解汇编语言的设计、编写和调试程序的方法,掌握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,41H
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 接口 技术 实验 指导书