1微机原理实验资料文档格式.docx
《1微机原理实验资料文档格式.docx》由会员分享,可在线阅读,更多相关《1微机原理实验资料文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
ADDAX,[SI+4];
连加加数2
MOV[SI+100H],AX;
存结果低位
存结果高位
JMP$;
结束
CODEENDS
ENDSTART
实验二BCD码转换为二进制码
一、实验目的
1、掌握BCD码到二进制码的转换方法。
2、用于BCD码输入信号处理。
对于内存中给定的几个十进制BCD码数转换为二进制数。
三、实验程序框图
(1)在内存单元4000H~4006H中依次写入四个十进制数(12、34、56、78)的BCD码,即输入01、02、03、04、05、06、07,按MON键,返回P状态。
(2)在PC机和实验系统联机状态下,运行该实验程序,可用鼠标左键单击菜单栏“文件”或工具栏“打开图标”,弹出“打开文件”的对话框,然后打开598K8ASM文件夹,点击S3.ASM文件,单击“确定”即可装入源文件,再单击工具栏中编译装载,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。
(3)复位RST键,查看结果在4100~4107中,其内容应为:
0C,00,22,00,38,00,4E,00。
脱机模式:
⑴在P.态下,按SCAL键,然后在内存单元4000H~4006H中依次写入四个十进制数(12、34、56、78)的BCD码,即输入01、02、03、04、05、06、07,按MON键,返回P状态。
⑵在P.态下,输入2D40,按EXEC键。
⑶复位RST键,查看结果在4100~4107中,其内容应为:
五、实验程序清单
CODESEGMENT;
S3.ASM,BCD码转换为2进制码
ASSUMECS:
CODE
ORG2D40H
MOVCX,0004H;
输入数据长度。
[4000]:
01,02..
MOVDI,4000H;
结果存放在[4100]:
0C,00,..
CON1:
MOVAL,[DI]
ADDAL,AL;
*2
MOVBL,AL
ADDAL,BL;
*10
INCDI
MOVAH,00
ADDAL,[DI];
BCD码个位,十位相加
MOV[DI+0FFH],AX;
存结果
INCDI;
结果地址加1
LOOPCON1;
CX不为零继续
JMP$
实验三内存清零
1、掌握内存读写方法。
2、了解内存的块操作方法。
对指定内存起址和长度的块,要求将其内容清零,设起址为4000H,长度为1000H。
(1)在PC机和实验系统联机状态下,运行该实验程序,可用鼠标左键单击菜单栏“文件”或工具栏“打开图标”,弹出“打开文件”的对话框,然后打开598K8ASM文件夹,点击S5.ASM文件,单击“确定”即可装入源文件,再单击工具栏中编译装载,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。
⑵按复位键RST,查看内存4000H~4FFFH单元内容应为00
1、在P.态下,按SCAL键,输入2DC0,按EXEC键。
2、按复位键RST,查看内存4000H~4FFFH单元内容应为00
CODESEGMENT;
S5.ASM,CLR
ORG2DC0H;
thisisaprogramofclear"
0"
MOVAL,00H;
CLEARRAM:
4000--4FFFH
MOVBX,4000H;
内存首址
MOV[BX],AL;
清零
INCBX;
内存加一
CMPBX,5000H;
比较末址
JNECON1;
不等继续
ENDSTART
-------------硬件实验------------
实验四 8255A并行口实验--模拟交通灯
掌握通过8255A并行口传输数据的方法,以控制发光二极管的亮与灭。
用8255做输出口,控制十二个发光管亮灭,模拟交通灯管理。
三、实验接线图
图6-4
四、编程指南
⑴通过8255A控制发光二极管,PB4-PB7对应黄灯,PC0-PC3对应红灯,PC4-PC7对应绿灯,以模拟交通路灯的管理。
⑵要完成本实验,必须先了解交通路灯的亮灭规律,设有一个十字路口l、3为南北方向,2、4为东西方向,初始状态为四个路口的红灯全亮,之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口方向通车。
延时一段时间后,l、3路口的绿灯熄灭,而l、3路口的黄灯开始闪烁,闪烁若干次以后,l、3路口红灯亮,而同时2、4路口的绿灯亮,2、4路口方向通车,延时一段时间后,2、4路口的绿灯熄灭,而黄灯开始闪烁,闪烁若干次以后,再切换到l、3路口方向,之后,重复上述过程。
⑶程序中设定好8255A的工作模式及三个端口均工作在方式0,并处于输出状态。
⑷各发光二极管共阳极,使其点亮应使8255A相应端口的位清0。
五、实验程序框图
六、实验步骤
⒈ 在系统显示监控提示符“P.”时,按SCAL键。
⒉ 按图6-4连好实验线路
8255A:
PC0->
L3,PC1->
L6,PC2->
L9,PC3->
L12,PC4->
L2,PC5->
L5,PC6->
L8,PC7->
L11;
PB4->
L1,PB5->
L4,PB6->
L7,PB7->
L10
⒊在“P.”态时,输入11E0后,按EXEC键;
系统显示执行符“┌”,同时Ll-Ll5发光二极管模拟交通灯显示。
七、实验程序清单
CODESEGMENT;
H8255-2.ASM
IOCONPTEQU0FF2BH;
8255控制口
IOAPTEQU0FF28H;
PA口
IOBPTEQU0FF29H;
PB口
IOCPTEQU0FF2AH;
PC口
ORG11e0H
MOVAL,82H;
PB输入,PA,PC输出
MOVDX,IOCONPT
OUTDX,AL;
写命令字
MOVDX,IOBPT;
读PB口
INAL,DX
MOVBYTEPTRDS:
[0601H],AL;
保存PB口数据
MOVDX,IOCONPT;
MOVAL,80H
写命令字,PA,PB,PC输出
MOVAL,DS:
[0601H]
ORAL,0F0H
OUTDX,AL
MOVDX,IOCPT
MOVAL,0F0H
四路口红灯全亮
CALLDELAY1;
延时
IOLED0:
MOVAL,10100101B
南北绿灯亮,东西红灯亮
南北绿灯灭
MOVCX,8H
IOLED1:
MOVDX,IOBPT
ANDAL,10101111B
南北黄灯亮
CALLDELAY2;
ORAL,01010000B
南北黄灯灭
LOOPIOLED1;
南北黄灯闪烁8次
MOVAL,0F0H
MOVAL,01011010B
东西绿灯亮
CALLDELAY1
东西绿灯灭
IOLED2:
ANDAL,01011111B
东西黄灯亮
ORAL,10100000B
东西黄灯灭
LOOPIOLED2;
东西黄灯闪烁8次
CALLDELAY2
JMPIOLED0;
循环继续
DELAY1:
PUSHAX
PUSHCX
MOVCX,0030H
DELY2:
CALLDELAY2
LOOPDELY2
POPCX
POPAX
RET
DELAY2:
PUSHCX
MOVCX,8000H
DELA1:
LOOPDELA1
实验五 电子琴实验
一、实验目的
l、进一步掌握定时器编程和应用。
2、了解微机利用定时器产生音乐的基本方法。
利用实验仪键盘,使数字键1、2、3、4、5、6、7作为电子琴键,按下数字键发出相应的音调,PB0作为定时器门控信号,OUT1发出音频信号,驱动喇叭。
图6-11
1、根据音阶频率表,利用定时器可以产生相应频率的脉冲信号,不同频率的脉冲信号经驱动电路放大后,就会发生不同的音调。
2、对于每个按键的音调发音时间由软件延时控制,如键一直按下,就会连续发音各音阶标称频率值:
⑴8253的CLK1接分频输出端T2。
⑵GATE1接PB0。
⑶OUT1接VIN。
⑷8MHZ→T。
⑸VOUT->
SP+、SP-GND。
⑹在P.态,按SCAL键,输入18F0,按EXEC键,显P.,按1、2……7键,依次发出1、2……7音调声。
DZQ.ASM
CODE,ds:
code
CONTROLequ43h
COUNT0equ40h
COUNT1equ41h
COUNT2equ42h
IOCONPTEQU0FF2BH;
扩展8255命令口
IOBPTEQU0FF29H;
扩展8255PB口
IOAPTEQU0FF28H;
扩展8255PA口
PAEQU0FF20H;
字位口
PBEQU0FF21H;
字形口
PCEQU0FF22H;
键入口
ORG18F0H
JMPSTART0
BUFDB?
?
;
显示缓冲区
KZDB?
;
存放键值
ltimedb?
定时单元
lkeydb?
上次键值
ZPDW?
显示指针
data1:
;
字形代码表
db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h
db86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH,0F1H
data3:
dw2273,2024,1805,1704;
音频表
dw1517,1353,1205,1136
START0:
movax,cs;
取代码段
movds,ax;
写数据段
CALLBUF1;
写”P”
MOVAL,88H;
扩展8255命令字
MOVDX,IOCONPT
OUTDX,AL
movdx,IOBPT;
PB口置零
moval,00
outdx,al
movzp,offsetbuf;
设定显示指针初值
redikey:
calldispkey;
调用显示键扫
cmpKZ,09h;
键值和9比较
JNCredikey;
大于9继续读键
cmpkz,01h;
键值和1比较
jcredikey;
小于1继续读键
movbx,zp;
显示指针送BX
moval,kz
mov[bx],al;
键值送显示缓存
cmpbx,offsetbuf+5;
比较指针
jzzp1;
等于5重置初值
incbx;
指针加一
movzp,bx;
存指针
jmpouttone;
转音频处理
zp1:
movzp,offsetbuf
outtone:
movdx,IOBPT;
PB置1(gate置1)
moval,0ffh
moval,kz;
取键值
movah,00h
decax
shlax,1
movbx,offsetdata3;
音频首址
addbx,ax
movax,[bx];
查表得音频数据
callt8253;
调用8253置T1初值
movcx,20h;
延时(调用显示次数)
con1:
pushcx
calldisp;
显示子程序
popcx
loopcon1
关GATE1
jmpredikey;
继续读键
t8253:
pushax;
8253子程序
moval,76h;
计数器1,16位二进制,方式3。
movdx,CONTROL
outdx,al
popax
movdx,COUNT1
moval,ah
ret
;
-------------------------
dispkey:
calldisp;
显示子程序,注释见前
callkey;
键扫子程序,注释见前
movah,al;
newkey
movbl,ltime;
ltime
movbh,lkey;
lkey
moval,01h
movdx,PA;
0ff21h
outdx,al
cmpah,bh
movbh,ah;
bh=newkey
movah,bl;
al=time
jzdisk4
movbl,88h
movah,88h
disk4:
decah
cmpah,82h
jzdisk6
cmpah,0eh
cmpah,00h
jzdisk5
movah,20h
decbl
jmpdisk7
disk5:
movah,0fh
disk6:
movbl,ah
movah,bh
disk7:
movltime,bl
movlkey,bh
movKZ,bh
moval,ah
ret
key:
movdx,PB
movbl,00h
movah,0feh
movcx,08h
key1:
moval,ah
movdx,PA
rolal,01h
movah,al
nop
movdx,PC
inal,dx
notal
andal,0fh
jnzkey2
incbl
loopkey1
jmpnkey
key2:
testal,01h
jekey3
moval,00h
jmpkey6
key3:
testal,02h
jekey4
moval,08h
key4:
testal,04h
jekey5
moval,10h
key5:
testal,08h
jenkey
moval,18h
key6:
addal,bl
cmpal,10h
jncfkey
movbl,al
movbh,0h
movsi,offsetdata2
moval,[bx+si]
nkey:
moval,20h
fkey:
data2:
db07h,04h,08h,05h,09h,06h,0ah,0bh
DB01h,00h,02h,0fh,03h,0eh,0ch,0dh
DISP:
MOVAL,0FFH;
显示子程序,5ms
MOVDX,PA
MOVCL,0DFH;
20H
MOVBX,OFFSETBUF
DIS1:
MOVAL,[BX]
MOVAH,00H
PUSHBX
MOVBX,OFFSETDATA1
ADDBX,AX
MOVAL,[BX]
POPBX
MOVDX,PB
MOVAL,CL
DIS2:
MOVCX,0a0H
LOOP$
CMPCL,0FEH
JZLX1
INCBX
RORCL,1
JMPDIS1
LX1:
MOVAL,0FFH
MOVDX,PB
RET
BUF1:
MOVBUF,11H;
写’P’
MOVBUF+1,10H
MOVBUF+2,10H
MOVBUF+3,10H
MOVBUF+4,10H
MOVBUF+5,10H