西南交大微机接口实验代码全.docx
- 文档编号:30319824
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:44
- 大小:19.74KB
西南交大微机接口实验代码全.docx
《西南交大微机接口实验代码全.docx》由会员分享,可在线阅读,更多相关《西南交大微机接口实验代码全.docx(44页珍藏版)》请在冰豆网上搜索。
西南交大微机接口实验代码全
开关实验:
io8255aequ288h
io8255cequ28ah
io8255zequ28bh
codesegment
assumecs:
code
start:
movdx,io8255z
moval,8bh
outdx,al
inout:
movdx,io8255c
inal,dx
movdx,io8255a
outdx,al
movdl,0ffh
movah,06h
int21h
jzinout
movah,4ch
int21h
codeends
endstart
交通灯控制实验:
datasegment
io8255cequ28Ah
io8255zequ28Bh
portc1db21h
db81h,01h,81h,01h,81h,01h,81h,01h,81h,01h,81h,01h
db44h
db42h,40h,42h,40h,42h,40h,42h,40h,42h,40h,42h,40h
db0ffh
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
movdx,io8255z
moval,90h
outdx,al
movdx,io8255c
re_on:
movbx,0;
on:
moval,portc1[bx]
cmpal,0ffh
jzre_on
outdx,al
incbx
movcx,200
testal,24h
jzde1
movcx,10000
de1:
movdi,9000
de0:
decdi
jnzde0
loopde1
pushdx
movah,06h
movdl,0ffh
int21h
popdx
jzon
exit:
movah,4ch
int21h
codeends
endstart
七段数码管静态显示实验:
io8255aequ288h
io8255zequ28bh
datasegment
leddb3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
mesg1db0dh,0ah,’Inputanum(0-9),otherkeyisexit’,0dh,0ah,’$’
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
movdx,io8255z
movax,80h
outdx,al
sss:
movdx,offsetmesg1
movah,09h
int21h
movah,01
int21h
cmpal,’0’
jlexit
cmpal,’9’
jgexit
subal,30h
movbx,offsetled
xlat
movdx,io8255a
outdx,al
jmpsss
exit:
movah,4ch
int21h
codeends
endstart
数码管循环显示00—99
datasegment
io8255aequ288h
io8255bequ289h
io8255cequ28ah
io8255zequ28bh
leddb3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
buffer1db0,0
bzdw01,00
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
movdx,io8255b;将8255设为A口输出
moval,80h
outdx,al
movdi,offsetbuffer1;设di为显示缓冲区
loop1:
movcx,0300h;循环次数
loop2:
movbh,02
lll:
movbyteptrbz,bh
pushdi
decdi
adddi,bz
movbl,[di];bl为要显示的数
popdi
movbh,0
movsi,offsetled;置led数码管偏移地址为SI
addsi,bx;求出对应的led码
moval,byteptr[si]
movdx,io8255c;自8255A的口输出
outdx,al
moval,byteptrbz;使相应的数码管亮
movdx,io8255c
outdx,al
pushcx
movcx,3000;若显示过快,可更改cx值最大为0ffffh
delay:
loopdelay;延时
popcx
movbh,byteptrbz
shrbh,1
jnzlll
looploop2;循环延时
movax,wordptr[di]
movah,01
int16h
jneexit;有键按下转exit
movax,wordptr[di]
incal
aaa
mov[di],al;al中为十位
mov[di+1],ah;ah中为个位
jmploop1
exit:
movdx,io8255a
moval,0;关掉数码管显示
outdx,al
movah,4ch;返回DOS
int21h
codeends
endstart
键盘接口实验(行扫描法)
datasegment
io8255aequ288h
io8255cequ28ah
io8255zequ28bh
keydb37h,38h,39h,41h,54h,52h
db34h,35h,36h,42h,53h,4dh
db31h,32h,33h,43h,48h,4ch
db30h,46h,45h,44h,58h,4eh
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
lp0:
movdx,io8255z
moval,90h
outdx,al;
movdi,0
movsi,0
lp1:
moval,00h
movdx,io8255c
outdx,al
movdx,io8255a
inal,dx
andal,3fh
cmpal,3fh
jzlp1
callDELAY
movah,0feh
movcx,4
lp2:
moval,ah
movdx,io8255c
outdx,al
movdx,io8255a
inal,dx
andal,3fh
cmpal,3fh
jnzaa;
rolah,1
looplp2
jmplp1
aa:
pushax
movdx,io8255a
inal,dx
nop
nop
nop
nop
nop
andal,3fh
cmpal,3fh
jnzaa
popax
l4:
movcx,6
lp4:
shral,1
jncl3
incsi
looplp4
l3:
movcx,4
moval,ah
lp3:
shral,1
jnclp5
incdi
looplp3
lp5:
movbx,di
moval,6
mulbl
addax,si
disp:
movbx,offsetkey
xlat
movdh,0
movdl,al
movah,2
int21h
jmplp0
exit:
movah,4ch
int21h
DELAYPROCNEAR
PUSHCX
MOVCX,20h
L1:
loopL1
popcx
ret
DELAYENDP
codeends
endstart
BCA:
moval,ah
movdx,io8255c
outdx,al;输出行值
movdx,io8255a
inal,dx;读入列值
andal,00111111b;保留低4位有效值
cmpal,00111111b;判断A0行是否有键按下
movbl,al;有键按下,确定该键的值
rolah;本行无键按下则继续查找下一行,循环左移(使下一行输出0)
loopBCA
jmpABC
realy:
movdx,io8255c
inal,dx
nop
nop
nop
andal,0fh
cmpal,0fh
jnzrealy
movcx,4
moval,bl
lp1:
shral,1
jnclp2
incdi
looplp1
lp2:
movcx,6
moval,ah
lp20:
shral,1
jnclp3
incsi
looplp20
lp3:
movbx,di
moval,6
mulbl
addax,si
disp:
movbx,offsetkey
xlat
movdh,0
movdl,al
movah,2
int21h
jmplp0
exit:
movah,4ch
int21h
delayprocnear
pushcx
movcx,20h
l1:
loopl1
popcx
ret
delayendp
codeends
endstart
datasegment
io8255aequ288h
io8255bequ289h
io8255cequ28ah
io8255zequ28bh
keydb37h,38h,39h,41h,54h,52h
db34h,35h,36h,42h,53h,4dh
db31h,32h,33h,43h,48h,4ch
db30h,46h,45h,44h,58h,4eh
led1db3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
led2db77h,7ch,39h,5eh,79h,71h
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
lp0:
movdx,io8255z
moval,90h
outdx,al;cshuchu,ashuru
lp1:
movdi,0
movsi,0
moval,00h
movdx,io8255c
outdx,al
movdx,io8255a
inal,dx
andal,3fh
cmpal,3fh
jzlp1
callDELAY
movah,0feh
movcx,4
lp2:
moval,ah
movdx,io8255c
outdx,al
movdx,io8255a
inal,dx
andal,3fh
cmpal,3fh
jnzrealy;youjiananxia
rolah,1
looplp2
jmplp1
realy:
pushax
movdx,io8255a
inal,dx
nop
nop
nop
nop
nop
andal,3fh
cmpal,3fh
jnzrealy
popax
l4:
movcx,6
lp4:
shral,1
jncl3
incsi
looplp4
l3:
movcx,4
moval,ah
lp3:
shral,1
jnclp5
incdi
looplp3
lp5:
movbx,di
moval,6
mulbl
addax,si
disp:
movbx,offsetkey
xlat
cmpax,39h
jlll
cmpax,40h
jglll
ll:
subax,30h
movbx,offsetled1
xlat
movdx,io8255b
outdx,ax
jmplp1
lll:
subax,41h
movbx,offsetled2
xlat
movdx,io8255b
outdx,ax
jmplp1
exit:
movah,4ch
int21h
delayprocnear
pushcx
movcx,20h
l1:
loopl1
popcx
ret
delayendp
codeends
endstart
实验三
3.1
timer_ctlequ283h
timer0equ280h
io8255zequ28bh
io8255cequ28ah
codesegment
assumecs:
code
start:
movdx,io8255z
moval,80h
outdx,al
moval,00010000b
movdx,timer_ctl
outdx,al
movdx,timer0
moval,9
outdx,al
display:
moval,00000000b
movdx,timer_ctl
outdx,al
movdx,timer0
inal,dx
movbl,al
moval,9
subal,bl
movdx,io8255c
outdx,al
movah,06h
movdl,0ffh
int21h
jzdisplay
movah,4ch
int21h
codeends
endstart
3.2
timer_ctlequ283h
timer0equ280h
timer1equ281h
mode03equ36h
mode12equ76h
codesegment
assumecs:
code
start:
movdx,timer_ctl
moval,mode03
outdx,al
movdx,timer0
movax,500
outdx,al
moval,ah
outdx,al
movdx,timer_ctl
moval,mode12
outdx,al
movdx,timer1
movax,500
outdx,al
moval,ah
outdx,al
movah,4ch
int21h
codeends
endstart
3.3
timer0equ280h
timer1equ281h
timerctlequ283h
io8255aequ288h
io8255zequ28bh
codesegment
assumecs:
code
start:
movdx,io8255z
moval,90h
outdx,al
ll1:
moval,0
outdx,al
calldelay
moval,1
outdx,al
calldelay
jmpll1
delayprocnear
pushdx
movdx,timerctl
moval,36h
outdx,al
movdx,timer0
movax,1000
outdx,al
moval,ah
outdx,al
movdx,timerctl
moval,70h
outdx,al
movdx,timer1
movax,500
outdx,al
moval,ah
outdx,al
ll2:
movah,06
movdl,0ffh
int21h
jneexit
movdx,io8255a
inal,dx
andal,01
jzll2
popdx
ret
exit:
movah,4ch
int21h
delayendp
codeends
endstart
3.4
datasegment
io8255aequ288h
io8255zequ28bh
timer0equ280h
timerctlequ283h
tabledw524,588,660,784,880,988,1048;高音的
;tabledw262,294,330,347,392,440,524;低音的
msgdb'Press1,2,3,4,5,6,7,8,ESC:
',0dh,0ah,'$'
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
movdx,offsetmsg
movah,9
int21h
sing:
movah,7
int21h
cmpal,1bh
jefinish
cmpal,'1'
jlsing
cmpal,'8'
jgsing
subal,32h
shlal,1
movbl,al
movbh,0
movax,4240H
movdx,0FH
divwordptr[table+bx]
movbx,ax
movdx,timerctl
moval,00110110B
outdx,al
movdx,timer0
movax,bx
outdx,al
moval,ah
outdx,al
movdx,io8255z
moval,10000000B
outdx,al
movdx,io8255a
moval,03h
outdx,al
calldelay
moval,0h
outdx,al
jmpsing
finish:
movax,4c00h
int21h
delayprocnear
pushcx
pushax
movax,15
x1:
movcx,0ffffh
x2:
deccx
jnzx2
decax
jnzx1
popax
popcx
ret
delayendp
codeends
endstart
3.5
datasegment
io8255aequ288h
io8255zequ28bh
timer0equ280h
timerctlequ283h
;tabledw524,588,660,698,784,880,998,1048
tabledw262,294,330,347,392,440,494,524
;music_dataxxxdb1,1,5,5,6,6,5,4,4,3,3,2,2,1,5,5,4,4,3,3,2,5,5,4,4,3,3,2,1,1,5,5,6,6,5,4,4,3,3,,2,2,1
music_datalzlhdb1,2,3,1,1,2,3,1,3,4,5,3,4,5,5,6,5,4,3,1,5,6,5,4,3,1,2,5,1,2,5,1
mus_t1db50,50,50,100,50,50,50,100,50,50,25,50,50,25,15,15,15,15,50,25,15,15,15,15,50,25,50,75,50,50,70,50
;mus_tdb50,50,50,50,50,50,50,100,50,50,50,50,50,50,50,100,50,50,50,50,50,50,50,100,50,50,50,50,50,50,50,100,50,50,50,50,50,50,50,100,50,50,50,50,50,50,50,100
msgdb'xiaoxingxing:
',0dh,0ah,'$'
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
movdx,offsetmsg
movah,9
int21h;tishi
movbx,0
pushbx
sing:
popbx
;movsi,offsetmusic_dataxxx
movsi,offsetmusic_datalzlh
addsi,bx
pushbx
moval,byteptr[si];quepuzhi
;cmpal,'1'
;jlsing
;cmpal,'8'
;jgsing
;subal,31h
shlal,1
movbl,al
movbh,0
movax,4240h
movdx,0fh
divwordptr[table+bx]
movbx,ax
movdx,timerctl
moval,00110110B
outdx,al
movdx,timer0
movax,bx
outdx,al
moval,ah
outdx,al
movdx,io8255z
moval,10000000B
outdx,al
movdx,io8255a
moval,03h
outdx,al
leasi,mus_t1
;leasi,mus_t
movbx,[si]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 西南 交大 微机 接口 实验 代码