软硬件实验报告微机原理与接口技术上机实验.docx
《软硬件实验报告微机原理与接口技术上机实验.docx》由会员分享,可在线阅读,更多相关《软硬件实验报告微机原理与接口技术上机实验.docx(29页珍藏版)》请在冰豆网上搜索。
![软硬件实验报告微机原理与接口技术上机实验.docx](https://file1.bdocx.com/fileroot1/2023-2/11/fd3813ad-ceca-4ce7-b8c7-8514d6bcaab7/fd3813ad-ceca-4ce7-b8c7-8514d6bcaab71.gif)
软硬件实验报告微机原理与接口技术上机实验
实验一实验环境熟悉与简单程序设计
实验目的
(1)掌握DEBUG调试程序的使用方法。
(2)掌握简单程序的设计方法。
实验容
编程将BH中的数分成高半字节和低半字节两局部,把其中的高半字节放到DH中的低4位〔高4位补零〕,把其中的低半字节放到DL中的低4位〔高4位补零〕。
如:
BH=10110010B
则运行程序后
DH=00001011B
DL=00000010B
实验准备
(1)熟练掌握所学过的指令。
(2)根据实验容,要求预先编好程序。
实验步骤
(1)利用DEBUG程序输入、调试程序。
(2)按下表要求不断地修改BH的容,然后记录下D*的容。
BH
10011101
11011001
00111111
DH
DL
实验报告
(1)给出程序清单。
(2)详细说明程序调试过程。
程序:
CODESEGMENT
START:
MOVBH,00111111B
MOVAL,BH
MOVCL,4
SHRAL,CL
MOVDH,AL
MOVAL,BH
ANDAL,00001111B
MOVDL,AL
MOVCL,0
CODEENDS
ENDSTART
实验二简单程序设计
实验目的
(3)掌握DEBUG调试程序的使用方法。
(4)掌握简单程序的设计方法。
实验容
试编写一个汇编语言程序,要现功能:
在屏幕上显示:
Helloworld
MynameisLiJianguo
参考程序如下:
〔有错〕
datasegment
out1db'Helloworld'
a*db'MynameisLiJianguo'
dataens
codesegment
assumecs:
code;ds:
data
lead*,out1
movah,2
int21h
movdl,0ah
movah,2
int21h
movdl,0dh
mooah,2
int21h
lead*,a*
movah,
int21h
codeends
实验步骤
(3)利用IDE86程序输入、调试程序。
实验报告
(3)给出正确的程序清单。
(4)详细说明程序调试过程。
程序:
DATASSEGMENT
STRING1DB13,10,'HelloWorld!
',13,10,'$';13为回车,10为换行,$为完毕符
STRING2DB13,10,'MynameisLIJianguo',13,10,'$'
DATASENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS
START:
MOVA*,DATAS
MOVDS,A*
LEAD*,STRING1
MOVAH,9
INT21H
LEAD*,STRING2
MOVAH,9
INT21H
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
实验三循环程序设计
实验目的
(1)掌握在PC机上建立、连接、调试和运行8086汇编语言程序的过程。
(2)掌握数据传送和算术运算指令的使用方法。
(3)了解局部DOS系统调用的使用方法。
实验容
将两个5位十进制数相加。
要求被加数和加数均以ASCII码形式各自顺序存放在以DATA1和DATA2为首地址的5个存单元中〔低位在前〕,结果送回DATA1处。
另外,程序利用DOS的9号调用功能完成将被加数、加数和最后的和在显示器上的显示。
参考程序如下:
datasegment
data1db32h,38h,30h,36h,37h,'$'
data2db33h,35h,33h,38h,32h,'$'
dataends
stacsegment
stadb100dup(?
)
stacends
codesegment
assumecs:
code,ds:
data,ss:
stac,es:
data
startprocfar
pushds
*ora*,a*
pusha*
mova*,data
movds,a*
moves,a*
movah,9
movd*,offsetdata1
int21h
movah,2
movdl,'+'
int21h
movah,9
movd*,offsetdata2
int21h
movsi,offsetdata1
movdi,offsetdata2
movb*,5
pushb*
pushsi
conv1:
andbyteptr[si+b*-1],0fh
andbyteptr[di+b*-1],0fh
decb*
jnzconv1
movc*,5
*ora*,a*
add1:
moval,[si+4]
movbl,[di+4]
adcal,bl
aaa
mov[si+4],al
decsi
decdi
loopadd1
popsi
popb*
conv2:
orbyteptr[si+b*-1],30h
decb*
jnzconv2
movah,2
movdl,'='
int21h
movah,9
movd*,si
int21h
ret
startendp
codeends
endstart
实验准备
〔1〕仔细阅读本书第一章,掌握源程序的编辑、汇编、连接和调试方法。
〔2〕阅读教材,熟练掌握数据传送和算术运算指令的使用方法。
〔3〕阅读有关DOS系统调用的参考书,掌握1号调用、2号调用、7号调用、8号调用和9号调调用的使用方法。
(4)仔细阅读参考程序。
实验步骤
(1)首先用IDE86软件输入汇编语言源程序,然后对此源程序进展汇编,再用LINK程序进展连接,最后执行。
如果程序运行结果不正确:
1重复以上过程,并记录下修改经过,直至程序正确运行为止。
2在步骤〔1〕中,如果程序运行结果不正确,可使用DEBUG程序进展动态调试,直到程序正确运行为止。
(2)利用DEBUG程序修改被加数和加数,运行程序,并记录下程序运行结果。
将被加数修改为:
31H,32H,33H,34H,35H
将加数修改为:
35H,34H,33H,38H,39H
程序运行后,请照实写出屏幕显示结果。
(3)修改你编写的或前面给出的参考程序。
利用DOS系统功能完成5位被加数和加数的键盘输入,程序完成加法后,输出相加的和,记录下程序运行过程及结果。
实验四子程序及分支构造程序设计
实验目的
(1)掌握分支程序及子程序设计的方法。
(2)进一步熟悉汇编语言源程序的上机过程。
实验容
设有10个学生的成绩分别为:
76、69、84、90、73、88、99、63、100、80,试编制一个程序统计60到69、70到79、80到89、90到99和100分的人数,分别放到五个存储单元中,然后在屏幕上显示。
统计局部和显示局部要求用子程序实现。
要求用堆栈进展参量传递。
实验准备
(1)认真阅读教材,掌握分支程序的编程方法。
(2)绘制程序流程图,编写程序。
实验步骤
(1)完成汇编语言源程序的编辑和连接过程。
(2)利用DEBUG进展程序调试和运行。
(3)撰写实验报告。
DATASSEGMENT
SCOREdb76,69,84,90,73,88,99,63,100,80
STR1db'THENUMBEROF100IS:
','$'
STR2db'THENUMBEROF90-100IS:
','$'
STR3db'THENUMBEROF80-90IS:
','$'
STR4db'THENUMBEROF70-80IS:
','$'
STR5db'THENUMBEROF60-70IS:
','$'
COUNTEQU10
GRADEAdb?
GRADEBdb?
GRADECdb?
GRADEDdb?
GRADEEdb?
DATASENDS
STACKSSEGMENT
STACKSENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS,SS:
STACKS
START:
MOVA*,DATAS
MOVDS,A*
LEAB*,SCORE
MOVC*,COUNT
A1:
MOVAL,[B*]
CALLPARE
INCB*
LOOPA1
CALLOUTPUT
MOVAH,4CH
INT21H
PAREPROC
PUSHB*
CMPAL,100
JEL1
CMPAL,90
JAEL2
CMPAL,80
JAEL3
CMPAL,70
JAEL4
CMPAL,60
JAEL5
L1:
INCGRADEA
JMPDONE
L2:
INCGRADEB
JMPDONE
L3:
INCGRADEC
JMPDONE
L4:
INCGRADED
JMPDONE
L5:
INCGRADEE
JMPDONE
DONE:
POPB*
RET
PAREENDP
OUTPUTPROC
LEAD*,STR1
MOVAH,9
INT21H
ADDGRADEA,30H
MOVDL,GRADEA
MOVAH,2
INT21H
MOVDL,0AH
MOVAH,2
INT21H
MOVDL,0DH
MOVAH,2
INT21H
LEAD*,STR2
MOVAH,9
INT21H
ADDGRADEB,30H
MOVDL,GRADEB
MOVAH,2
INT21H
MOVDL,0AH
MOVAH,2
INT21H
MOVDL,0DH
MOVAH,2
INT21H
LEAD*,STR3
MOVAH,9
INT21H
ADDGRADEC,30H
MOVDL,GRADEC
MOVAH,2
INT21H
MOVDL,0AH
MOVAH,2
INT21H
MOVDL,0DH
MOVAH,2
INT21H
LEAD*,STR4
MOVAH,9
INT21H
ADDGRADED,30H
MOVAH,2
MOVDL,GRADED
INT21H
MOVDL,0AH
MOVAH,2
INT21H
MOVDL,0DH
MOVAH,2
INT21H
LEAD*,STR5
MOVAH,9
INT21H
ADDGRADEE,30H
MOVDL,GRADEE
MOVAH,2
INT21H
MOVDL,0AH
MOVAH,2
INT21H
RET
OUTPUTENDP
CODESENDS
ENDSTART
实验五简单I/O口扩展实验
一、实验目的
1、利用74LS273,74LS244扩展I/0。
2、掌握用锁存器、三态门扩展简单的并行输入、输出口的方法。
二、实验容
1.熟悉74LS273,74LS244的应用接口方法。
2.掌握用锁存器(74LS273)、三态门扩展简单的并行输入。
3.扩展的方法:
a.逻辑电平开关〔CZ1〕作为74LS244〔U10〕的输入。
b.发光二极管〔CZ2〕作为74LS273的输出,
c.编写程序,使得逻辑电平开关的输入状态从发光二极管上显示出来。
三、实验原理图:
四、实验步骤
1、连线:
a.将74LS244(IC25)的输入SI0~SI7分别与逻辑电平开关电路的K1~K8相连。
b.从I/O地址片选信号CS0\~CS7\中任选一个与74LS244的片选信号相连。
〔例如CS0\〕。
c.将74LS273〔IC24〕的输出S00\~S07分别与发光二极管电路的L1~L8相连。
d.从I/O地址片选信号CS0\~CS7\中任选一个与74LS273的片选信号(CSU8\)相连。
〔如CS1\〕。
2、翻开计算机上已安装的DB86软件,参照.软件的使用
a.编写程序。
b.编译连接。
c.调试程序。
d.单步运行。
e.如果调试通过后,全速运行,观察实验结果。
3、全速运行后拔动开关,其变化反响的到发光二极管上。
当作为信号输入量的开关任意位拔上时,对应的发光二极管点亮、拔下时熄灭。
4.编写实验报告
五、实验说明
用逻辑电平开关〔CZ1〕作为74LS244(IC25)的输入,用发光二极管〔CZ2〕作为74LS273(IC24)的输出。
编写程序,使得逻辑电平开关的输入状态从发光二极管上显示出来。
逻辑电平开关拔上时为5V,拔下时为0V。
发光二极管输入‘1’为亮、‘0’为灭。
从74LS244读入的数据后从输出口输出。
在8086CPU中有四个16位通用数字存放器,其中仅A*(AH,AL)有输入输出功能。
本实验通过输入语句(IN),将开关量输入存到AL中,在通过输出语句(OUT)将AL值输出到发光二极管,从而实现开关控制发光二极管。
当开关量换作其他形式控制输入,发光二极管换作其他形式控制对象,输入数据后对输入量做一定的运算处理再输出时,就实现了计算机控制,同时这些输入输出点均为I/O扩展口,当输入输出点较多时,这种扩展十分必要
六、程序框图
实验六8255并行口实验
一、实验目的
利用8255A实现并行接口实验
二、实验容
1.掌握8255A的编程原理。
2.熟悉计算机并行接口的使用方法
三、实验原理图:
四、实验步骤:
1.连线:
a.8255A(IC37)的PA0—PA7分别与逻辑电平开关电路的K1--K8相连。
b.PB0—PB7分别与发光二极管电路的L1—L8相连。
c.从CS0\—CS7\中任选一个与8255A的片选(CS8255)端相连。
〔如CS0\〕其他线路均已连好。
2.软件:
与实验一一样
3.编写实验程序。
五、实验说明:
逻辑电平开关拨上时5V,拨下时0V;发光二极管输入为1时亮,输入为0时灭。
拨动开关,观察发光二极管〔CZ2〕的变化。
当开关〔CZ1〕*位拨上时,对应的发光二极管点亮,拨下时熄灭。
8255A是并行接口电路中比较常用的一种芯片,8255A有三个8位的输入输出端口,由于部电路原因,通常将A端口〔PA0—PA7〕作输入用,B端口〔PB0—PB7〕作输出用,C端口作辅助控制用,本实验也是如此。
本实验中,输入输出都比较简单,控制相对简单,因此可选择在根本输入输出方式〔方式0,即输入输出设置与上一样〕下工作。
在设计程序时,先设置8255的工作方式〔控制端口地址为04A6H〕,然后循环读PA端口开关状态〔地址为04A0H〕,输出至PB端口发光二极管〔地址为04A2H〕。
A_portEQU04A0H
B_portEQU04A2H
C_portEQU04A4H
ctrc_portEQU04A6H
CODESSEGMENT
ASSUMECS:
CODES
org100h
START:
movd*,ctrc_port
moval,90h
outd*,al
add1:
movd*,04a0h
inal,d*
movd*,B_port
outd*,al
jmpadd1
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
六、程序框图
实验七8253定时器/计数器接口实验
一、实验目的
掌握8253定时器的编程原理,用示波器观察不同模式下的输出波形。
二、实验容
编程将计数器0,1,2设置为模式2〔分频方式〕,并观察其输出波形。
三、实验原理图
四、实验步骤
1、连线:
a.从CS0\~CS7\中任选一个〔如CS0\〕与8253的片选信号〔CS8253〕相连,8253的OUT0与CLK2相连,
b.OUT2与发光二极管L1相连,
c.OUT1接示波器,其他未提信号均已接好或无需连接。
2.软件:
同实验一。
3.编写实验报告。
五、实验说明
8253的时钟端CLK0,CLK1均为1/8M。
CLK2的时钟由OUT0来控制。
8253位8086系统中常用的可编程定时器/计数器,部有三个相互独立的计数器,发别称为计数器0,计数器1、计数器2。
8253有多种工作模式,其中模式2为方波方式。
当给定初值后,自动将所设周期平分为两个局部,前一局部保持为高电平“1〞,后一局部保持为低电平“0〞,输出为一方波。
CLK0、CLK1的频率均为1M/8,设计数器0的初值为0F24H〔十进制为62500〕时,方波周期为0.5s。
在计数器2中设置不同的初值2n时,可的周期n×0.5s的方波,n的最大值为7FFFH〔十进制为32767〕时,周期最长为16383.5s(4小时33分3.5秒),此时的初值为7FFEH。
因此,采用两级计数叠加后,输出周期围可大幅度提高。
如能合理设置初值,这种广域围的周期设定在实际控制中非常有用。
CODESSEGMENT
ASSUMECS:
CODES
ORG100H
START:
MOVAL,00110110B
MOVD*,04A6H
OUTD*,AL
MOVA*,750
MOVD*,04A0H
OUTD*,AL
MOVAL,AH
OUTD*,AL
MOVAL,10110110B
MOVD*,04A6H
OUTD*,AL
MOVA*,1000
MOVD*,04A4H
OUTD*,AL
MOVAL,AH
OUTD*,AL
MOVAL,01110110B
MOVD*,04A6H
OUTD*,AL
MOVA*,750
MOVD*,04A2H
OUTD*,AL
MOVAL,AH
OUTD*,AL
CODESENDS
ENDSTART
六、程序框图
实验八A/D实验
一、实验目的
熟悉A/D转换的根本原理,掌握ADC0809的使用方法。
二、实验容
按查询方式采样三路A/D转换数据,用简单输入口〔U10〕查询EOC信号。
每循环一次0,1,2通道各采样一次。
采样结果是0通道放入C*中,CL有效,1通道放入B*中,BL有效,2通道放入A*中AL有效。
三、实验原理图
三、实验步骤
1、连线:
a.将可变电位器KB1,KB2,KB3分别与ADC0809的IN0、IN1、IN2相连。
b.从CS0\…CS3\中任选一个〔如CS1\〕与ADC0809的片选端相连。
c.将ADC0809的EOC与IC25〔74LS244〕的SI0相连。
d.从CS0\…CS7\中任选一个〔如CS1\〕与U10的片选端相连。
2、软件:
同实验一。
3、编写实验报告。
四、实验说明
1、实验电路中启动信号START与地址锁存信号相连,所以启动A/D转换的方法为:
MOVD*,PADC;PADC是ADC0809的端口地址
OUTAL,D*;发片选及IOW信号,这是0通道
;启动1通道时,D*应加1
程序:
CODESEGMENT
ASSUMECS:
CODE
ORG100H
START:
MOVD*,04A0H
OUTD*,AL
*ORAH,AH
DAC:
MOVD*,04B0H
INAL,D*
TESTAL,01H
JZDAC
MOVD*,04A0H
INAL,D*
MOVCL,AL
JMPDAC
CODEENDS
ENDSTART
五、程序框图
实验九D\A实验
一、实验目的
熟悉数模转换的根本原理,掌握DAC0832的使用方法。
二、实验容
看懂接口电路后连好硬件线路,并编制程序以产生以下两种波形并用示波器。
1、锯齿波形
2、三角波
三、实验原理图
四、实验方法
1、连线:
a.从CS0\…CS7\中任选一个〔如CS0\〕与DAC0832的片选端相连。
b.将示波器接至DAC0832的输出端OUT相连。
2、进展调零〔KB5〕和调满偏〔KB4〕。
3、软件:
同实验一。
4、编写实验报告。
五、实验说明
DAC0832在图所示的接口电路中,KB6调节参考电压VREF,KB5调节DA的零点,KB4调节DA的满偏。
工作在双缓冲接口方式下。
当A1=0时可锁存输入数据,当A1=1时,可起动转换输出。
所以要进展D\A转换,需分二步进展,方法如下:
MOVD*,DACPORT;DAC0832片选信号偶地址
MOVAL,DACPORT
OUTDL,AL;锁存数据
ADDD*,2
OUTD*,AL;启动转换
锯齿波:
CODESSEGMENT
ASSUMECS:
CODES
org100h
START:
*ORA*,A*
Y1:
MOVD*,04A0H
OUTD*,AL
ADDD*,2
OUTD*,AL
INCAL
CMPAL,0FFH
JNZYI
JMPSTART
CODESENDS
ENDSTART
三角波:
CODESSEGMENT
ASSUMECS:
CODES
org100h
START:
*ORA*,A*
*1:
MOVD*,04A0H
OUTD*,AL
ADDD*,2
OUTD*,AL
INCAL
CMPAL,0FFH
JNZ*1
*2:
OUTD*,AL
ADDD*,2
OUTD*,AL
DECAL
CMPAL,0
JNZ*2
JMPSTART
CODESENDS
ENDSTART
六、程序框图
锁存数据A*
启动转换
B*减一
开场
B*清零
B*—?
A*
锁存数据A*
启动转换
B*加一
B*—?
A*
B*=FFH.
B*=0?
N
Y
N
图二产生三角波流程图