微机原理及接口技术实验报告.docx
《微机原理及接口技术实验报告.docx》由会员分享,可在线阅读,更多相关《微机原理及接口技术实验报告.docx(31页珍藏版)》请在冰豆网上搜索。
微机原理及接口技术实验报告
微机原理及接口技术实验报告
16位微机原理显示程序设计实验报告
一、实验目的
1.掌握PC机上以十六进制形式显示数据的方法。
2.掌握部分DOS功能调用使用方法。
二、实验设备
PC微机一台、TD-PITD试验系统一套。
三、实验内容及说明
一般来说,有许多程序需要显示输出提示运行的状况和结果,有的还需要将数据区的内容显示在屏幕上,并利用DOS功能调用完成一些提示信息的显示。
通过本实验,初步掌握试验系统配套操作软件的使用。
试验中所使用的DOS功能调用(INT21H)说明如下。
(1)显示单个字符输出
入口:
AH=02H
调用参数:
DL=输出字符
(2)显示字符串
入口:
AH=09H
调用参数:
DS:
DX=串地址,’$’为结束字符
(3)键盘输入并回显
入口:
AH=01H
返回参数:
AL=输出字符
(4)返回DOS系统
入口:
AH=4CH
调用参数:
AL=返回码
从存储区域读出的数据位十六进制数据,本程序设计的难点在于将十六进制的数据转变成ASCII码显示。
数值与ASCII的关系:
0-9转换成ASCII码是指直接在数字上加上30H即可,A-F转换成ASCII码时直接在数值上加上37H。
实验程序如下。
实验程序清单(例程序文件名:
A1.ASM)
stack1segmentstack
dw256dup(?
)
stack1ends
datasegment
mesdb'pressanykeytoexit!
',0AH,0DH,0AH,0DH,'$'
mes1db'showaashex:
',0AH,0DH,'$'
sddb'a'
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
movdx,offsetmes
movah,09H
int21H
movdx,offsetmes1
movah,09H
int21H
movSI,offsetsd
moval,ds:
[SI];
andal,0F0H
movcl,4
shral,cl
cmpal,0AH
jbc2
addal,07H
c2:
addal,30H
movdl,al
movah,02H
int21h
moval,ds:
[si]
andal,0FH
cmpal,0AH
jbc3
addal,07H
c3:
addal,30H
movdl,al
movah,02H
int21H
key:
movah,1
int16H
jzkey
movax,4C00H
int21H
codeends
endstart
四、实验步骤
1.使用MASM5.0实现
(1)编辑源代码
源代码的编辑可在.txt文档中直接编写,程序编写完成后将文件名改成a1.asm,并保存在MASM5.0文件夹所在的目录下MYCODE文件夹中,如:
D:
\MASM5.0\MYCODE。
(2)编辑a1.asm文件
在DOS下打开MASM5.0所在的目录。
方法:
开始→运行输入cmd可进入DOS系统,依次输入E:
回车,进入D盘根目录,然后输入D\>cdmasm5.0回车,可打开D:
\MASM5.0目录。
打开文件目录后输入命令:
D:
\MASM5.0\masm.\MYCODE\a1.asm,之后连续三次回车。
程序无错则在D:
\MASM5.0中增加了文件a1.obj如图所示。
(3)链接a1.obj文件
生成的obj文件并不是一个可执行文件,还需要经过link.exe连接后才能生成a1.exe文件。
在界面输入D:
\MASM5.0>linka1.obj之后连续三次回车,可以生成.exe文件如图所示。
之后可在D:
\MASM5.0目录下发现一个a1.exe文件。
此文件是一个可以执行的文件,如图所示。
本实验的结果就是将ASCII码’a’的十六进制数在屏幕上显示出来。
从屏幕上可以显示结果可知试验完成。
下面执行的程序是在键盘上输入并在屏幕上回显本人学号:
3110644913的后两位14H,程序如下:
stack1segmentstack
dw256dup(?
)
stack1ends
datasegment
mesdb'pressanykeytoexit!
',0AH,0DH,0AH,0DH,'$'
mes1db'showaashex:
',0AH,0DH,'$'
sddb13H
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
movdx,offsetmes
movah,09H
int21H
movdx,offsetmes1
movah,09H
int21H
movSI,offsetsd
moval,ds:
[SI];
andal,0F0H
movcl,4
shral,cl
cmpal,0AH
jbc2
addal,07H
c2:
addal,30H
movdl,al
movah,02H
int21h
moval,ds:
[si]
andal,0FH
cmpal,0AH
jbc3
addal,07H
c3:
addal,30H
movdl,al
movah,02H
int21H
key:
movah,1
int16H
jzkey
movax,4C00H
int21H
codeends
endstart
运行结果如下:
实验二数据传送实验
一、实验目的
1.熟悉与试验操作软件的环境和使用方法;
2.掌握与数据有关的不同寻址方式。
二、实验所用设备
1.PC微机一台、TD-PITD试验系统一套。
三、实验内容
将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。
参考实验程序:
DDATASEGMENT;定义源数据段
MSRDB"HELLO,WORLD!
$"
LENEQU$-MSR
DDATAENDS
EXDASEGMENT;定义附加数据段
MSDDBLENDUP(?
)
EXDAENDS
MYSTACKSEGMENTSTACK;定义堆栈段
DW20DUP(?
)
MYSTACKENDS
CODESEGMENT;定义代码段
ASSUMECS:
CODE,DS:
DDATA,ES:
EXDA
START:
MOVAX,DDATA
MOVDS,AX;装载数据段寄存器
MOVAX,EXDA
MOVES,AX;装载附加数据段寄存器
MOVSI,OFFSETMSR;设置SI
MOVDI,OFFSETMSD;设置DI
MOVCX,LEN
NEXT:
MOVAL,[SI];开始传输数据
MOVES:
[DI],AL
INCSI
INCDI
DECCX
JNZNEXT
PUSHES
POPDS;将附加段寄存器的段值赋给数据段寄存器
MOVDX,OFFSETMSD
MOVAH,9
INT21H
MOVAX,4C00H;利用DOS功能调用返回DOS状态
INT21H
CODEENDS
ENDSTART
将程序主体部分的寄存器间接寻址方式改为相对寻址方式,则如下所示:
MOVBX,0
MOVCX,LEN
NEXT:
MOVAL,MSR[BX]
MOVES:
MSD[BX],AL
INCBX
LOOPNEXT
四、实验步骤
(1)编辑源代码
源代码的编辑可在.txt文档中直接编写,程序编写完成后将文件名改成a2.asm,并保存在MASM5.0文件夹所在的目录下MYCODE文件夹中,如:
D:
\MASM5.0\MYCODE。
(2)编辑a2.asm文件
在DOS下打开MASM5.0所在的目录。
方法:
开始→运行输入cmd可进入DOS系统,依次输入E:
回车,进入D盘根目录,然后输入D\>cdmasm5.0回车,可打开D:
\MASM5.0目录。
打开文件目录后输入命令:
D:
\MASM5.0\masm.\MYCODE\a2.asm,之后连续三次回车。
程序无错则在D:
\MASM5.0中增加了文件a2.obj。
(3)链接a2.obj文件
生成的obj文件并不是一个可执行文件,还需要经过link.exe连接后才能生成a2.exe文件。
在界面输入D:
\MASM5.0>linka2.obj之后连续三次回车,可以生成.exe文件如图所示。
之后可在D:
\MASM5.0目录下发现一个a2.exe文件。
此文件是一个可以执行的文件,如图所示。
(4)DEBUG调试
输入D:
\MASM5.0>debuga2.exe回车可进入调试系统,首先对a2.exe进行反汇编,如图所示:
从反汇编的程序上可以看出,原字符串存放的段地址为ox13c6,偏移地址为ox0000,复制字符的目的地址为段地址ox13c5,偏移地址为ox0000,字符串的长度为ox0E,下面通过内存查看命令查看源地址和目的地址的数据情况,如图所示。
由图可直接看出源地址所存放的数据为“"HELLO,WORLD!
",目的地址存放的数据全为0.现将程序运行至13CA:
001B处,程序到此时,可完成一个字节数据的传输,查看目的地址的内存数据,如图,
传输的一个字节后可在目的地址的第一个数据位0x48,其ASCII码为’H’。
同时也可观察AX寄存器的低8位也是0x48。
将程序运行至13CA:
001D处,此时程序已经跳出了数据传送的循环,数据的传输工作已将完成。
查看目的地址的内存数据如图所示:
有图可以直接看出数据传送之后目的地址存放的数据与源地址存放的数据一致,说明数据传送完成,程序正确无误。
实验三分支程序设计实验
一、实验目的
掌握分支程序的设计方法。
实验设备
PC一台TD-PITD实验系统一套。
二、实验内容及说明
程序有顺序、循环、分支和子程序四种结构形式,分支结构的示意图如图1所示。
本实验要求通过求无符号字节序列中的最大值和最小值来反映分支程序的结构形式。
图1分支结构的示意图
实验可以使用BH,BL作为暂存现行的最大值和最小值,且在程序的初始,将BH和BL初始化为首字节的内容,然后进入循环操作。
在循环操作中,依次从字节序列中逐个取出一个字节的内容与BH,BL进行比较,若取出的字节内容比BH的内容大或比BL中的内容小,则修改之。
当循环结束操作时,将BH,BL分别送屏幕显示。
参考实验流程如图2所示。
三、实验步骤
(1)运行Tdpit软件,选择文件菜单编写实验程序;提供8字节的数据:
0D9H,07H,8BH,0C5H,0EBH,04H,9DH,0F9H。
(2)使用编译菜单中的编译和连接对实验程序进行汇编、连接。
(3)使用编译菜单中的运行,运行程序,观察运行结果。
(4)更改数据区中的数据,考察程序的正确性。
图2实验流程图
4、编写程序如下:
STACK1SEGMENTSTACK
DW256DUP(?
)
STACK1ENDS
DDATASEGMENT
MES1DB'Theleastnumberis:
$'
MES2DB0AH,0DH,'Thelargestnumberis:
$'
MSRDB0D9H,007H,08BH,0C5H,0EBH,004H,09DH,0F9H
DDATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DDATA
START:
MOVAX,DDATA
MOVDS,AX
MOVSI,OFFSETMSR
MOVCX,0008H
JCXZA4
MOVBH,[SI]
MOVBL,BH
A1:
LODSB;AL=DS:
[SI],SI=SI+1
CMPAL,BH
JBEA2
MOVBH,AL
JMPA3
A2:
CMPAL,BL
JAEA3
MOVBL,AL
A3:
LOOPA1
A4:
MOVDX,OFFSETMES1;showmes1
MOVAH,09H
INT21H
MOVAL,BL;showtheleastnumber
ANDAL,0F0H;getthehighest4bits
MOVCL,4
SHRAL,CL
CMPAL,0AH
JBC2
ADDAL,07H
C2:
ADDAL,30H
MOVDL,AL;showcharacter
MOVAH,02H
INT21H
MOVAL,BL
ANDAL,0FH;getthelowest4bits
CMPAL,0AH
JBC3
ADDAL,07H
C3:
ADDAL,30H
MOVDL,AL;showcharacter
MOVAH,02H
INT21H
MOVDX,OFFSETMES2;showmes2
MOVAH,09H
INT21H
MOVAL,BH;showthelargestnumber
ANDAL,0F0H;getthehighest4bits
MOVCL,4
SHRAL,CL
CMPAL,0AH
JBC22
ADDAL,07H
C22:
ADDAL,30H
MOVDL,AL;showcharacter
MOVAH,02H
INT21H
MOVAL,BH
ANDAL,0FH;getthelowest4bits
CMPAL,0AH
JBC33
ADDAL,07H
C33:
ADDAL,30H
MOVDL,AL;showcharacter
MOVAH,02H
INT21H
WAIT1:
MOVAH,1;判断是否有按键按下
INT16H
JZWAIT1;无按键则跳回继续等待,有则退出
MOVAX,4C00H;gobacktodos
INT21H
CODEENDS
ENDSTART
5、比较七次,每次的比较后调试程序最终结果如图:
实验四:
8255并行接口应用实验报告
【实验目的:
】1.掌握8255的工作方式和应用编程。
2.掌握8255的典型应用电路接法。
【实验设备及器件:
】PC机一台,TD—PIT实验仪器一套。
【实验内容及步骤:
】
1.基本输入输出实验。
编写程序,使8255的A口为输出,B口为输入,完成拨动开关到数据灯的数据传输。
要求只要开关拨动,数据灯的显示就改变。
2.流水线指示灯的显示实验。
编写程序,使8255的A口和B口均为输出,实现16位数据灯的相对循环显示。
3.键盘及显示实验。
按照实验线路编写实验程序,使按下不同的按键后数码管显示相应的数字。
【实验原理图及程序流程图】
1、基本输入/输出实验:
本实验使8255端口A工作在方式0并作为输入口,端口B工作在方式0并作为输出口。
用一组开关信号接入端口A,端口B输出线接至一组数据灯上,然后通过对8255芯片编程来实现输入/输出功能。
8255基本输入/输出实验参考接线图如图所示。
流程图:
程序代码及注释:
CS0EQU3000H;片选CS0对应的端口始地址
MY8255_AEQUCS0+00H;8255的A口地址
MY8255_BEQUCS0+01H;8255的B口地址
MY8255_CEQUCS0+02H;8255的C口地址
MY8255_MODEEQUCS0+03H;8255的控制寄存器地址
STACK1SEGMENTSTACK
DW256DUP(?
)
STACK1ENDS
CODESEGMENT
ASSUMECS:
CODE
START:
MOVDX,MY8255_MODE;初始化8255工作方式
MOVAL,82H;工作方式0,A口输出,B口输入
OUTDX,AL
LOOP1:
MOVDX,MY8255_B;读B口
INAL,DX
MOVDX,MY8255_A;写A口
OUTDX,AL
MOVAH,1;判断是否有按键按下
INT16H
JZLOOP1;无按键则跳回继续循环,有则退出
QUIT:
MOVAX,4C00H;结束程序退出
INT21H
CODEENDS
ENDSTART
实验步骤
(1).设计实验线路图,将PCI总线扩展卡上总线与仿真ISA总线进行连接。
(2).编写程序。
(3).打开实验箱电源,运行程序,拨动开关组,观察数据灯的显示。
实验现象:
拨动开关,每个开关对应的数据灯随着开关的开与关而亮灭。
2、流水线指示灯显示实验:
首先分别将A口和B口写入7FH和FEH,然后分别将该数右移和左移一位,在送到端口上,这样循环下去,从而实现流水灯的显示。
8255流水灯显示实验参考接线图如图所示。
流程图:
程序代码及注释:
CS0EQU3000H;片选CS0对应的端口始地址
MY8255_AEQUCS0+00H;8255的A口地址
MY8255_BEQUCS0+01H;8255的B口地址
MY8255_CEQUCS0+02H;8255的C口地址
MY8255_MODEEQUCS0+03H;8255的控制寄存器地址
STACK1SEGMENTSTACK
DW256DUP(?
)
STACK1ENDS
DATASEGMENT
LADB?
;定义数据变量
LBDB?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,MY8255_MODE;定义8255工作方式
MOVAL,80H;工作方式0,A口和B口为输出
OUTDX,AL
MOVDX,MY8255_A;写A口发出的起始数据
MOVAL,80H
OUTDX,AL
MOVLA,AL
MOVDX,MY8255_B;写B口发出的起始数据
MOVAL,01H
OUTDX,AL
MOVLB,AL
LOOP1:
CALLDALLY
MOVAL,LA;将A口起始数据右移再写入A口
RORAL,1
MOVLA,AL
MOVDX,MY8255_A
OUTDX,AL
MOVAL,LB;将B口起始数据左移再写入B口
ROLAL,1
MOVLB,AL
MOVDX,MY8255_B
OUTDX,AL
MOVAH,1;判断是否有按键按下
INT16H
JZLOOP1;无按键则跳回继续循环,有则退出
QUIT:
MOVAX,4C00H;结束程序退出
INT21H
DALLYPROCNEAR;软件延时子程序
PUSHCX
PUSHAX
MOVCX,0FFFH
D1:
MOVAX,0FFFFH
D2:
DECAX
JNZD2
LOOPD1
POPAX
POPCX
RET
DALLYENDP
CODEENDS
ENDSTART
实验步骤
(1).设计实验线路图,将PCI总线扩展卡上总线与仿真ISA总线进行连接。
(2).编写程序。
(3).打开实验箱电源,运行程序,观察数据灯的显示。
实验现象:
数据灯从右向左依次亮成流线型,并始终保持在同一时间只有一个灯亮着。
走马灯的设计与实现
一实验目的
通过走马灯的设计与制作,深入了解与掌握利用可编程8255A进行开关量控制的原
理与方法。
二实验要求
1.产生8种彩灯(8位LED)的走马灯花样;
2.键控(或拨码开关控制)发光实验。
键控是在键盘上定义8个数字键(0~7),每按1个数字键,使LED的1位发光,按Q或q键,停止发光。
拨码开关控制,是通过改变各位开关,来进行控制,使LED的1位发光,按Q或q键,停止发光。
三实验内容
1.进行走马灯的系统电路硬件设计,画出电路原理图;
2.安装或焊接元器件;
3.进行走马灯的控制程序设计(采用ASM语言);
4.系统联调,提交一个符合上述3种要求的走马灯的作品。
四实验原理
8255A是一种通过可编程并行I/O接口芯片。
广泛用于几乎所有系列的微机系统中,8255A具有三个带锁存或缓冲的数据端口,可与外设并行进行数据交换,8255A有多种操作方式,通用性较强,可为CPU与外设之间提供输入/输出通道。
8255A和各端口内具有中断控制逻辑,在外设与CPU之间可用中断方式进行信息交换,使用条件传输方式时可用“联络”线进行控制。
在实验中,我们运用8255为CPU与外设之间提供输入输出输出通道来实现对走马灯花样变换的控制。
走马灯驱动模块电路原理如图1所示。
模块包括8个LED彩灯、两个74LS04、和两个个排阻。
用LED可以观测在不同按键输入下,走马灯花样的变化效果。
如图1所示我们利用软件输入信号,通过8255端口扩展芯片和74LS04芯片,调节输出端口的电平变化,来控制共阳极的LED灯的亮与灭,实现走马灯花样变化。
图1走马灯驱动模块电路原理图
五试验设备
1.PC兼容机
2.Windows98以上
3.MFID多功能微机实验平台(含PCI总线驱动板)
4.MFPCI98集成开发环境
5.面包板或外设功能模块板
6.安装或焊接工具
六元器件清单
元器件清单如表1所示。
序号
名称
数量
1
74LS04
2片
2
RESPACK3排阻8×150Ω
2只
3
LED
8只
4
拨码开关
1只
5
面包板
1个
6
T型转接板
1个
7
导线
若干
表1实验元器件清单
七实验步骤
7.1硬件连线
根据图1的实验原电路图,走马灯电路结构电路接线如图2所示。
图2走马灯电路结构电路接线图
接线说明:
8255A共有三个8位端口A口、B口和