西南交大微机实验代码.docx
- 文档编号:6773523
- 上传时间:2023-01-10
- 格式:DOCX
- 页数:34
- 大小:23.37KB
西南交大微机实验代码.docx
《西南交大微机实验代码.docx》由会员分享,可在线阅读,更多相关《西南交大微机实验代码.docx(34页珍藏版)》请在冰豆网上搜索。
西南交大微机实验代码
;锁存器,I/O输出区的CS273接2A8-2AFH,1Q-8Q接L0-L7
ls273equ2a8h
codesegment
assumecs:
code
start:
movah,2
movdl,0dh
int21h
movah,1
int21h
cmpal,27
jeexit
movdx,ls273
outdx,al
jmpstart
exit:
movah,4ch
int21h
codeends
endstart
;译码器,数字电路区的CLK接2A0-2A7H,CD接2A8-2AFH,SD接+5V,Q端接L7
outport1equ2a0h
outport2equ2a8h
codesegment
assumecs:
code
start:
movdx,outport1
outdx,al
calldelay
movdx,outport2
outdx,al
calldelay
movah,1
int16h
jestart
movah,4ch
int21h
delayprocnear
movbx,200
lll:
movcx,0
ll:
loopll
decbx
jnelll
ret
delayendp
codeends
endstart
;8255开关实验,8255CS接288H,K0-K7接PC0-PC7,L0-L7接PA0-PA7
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
;8255七段数码管静态显示,8255CS接288-28FH,PA0-PA6接数码管的段驱动输入端a-g,位驱动S0接GND
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
outax,al
sss:
movdx,offsetmesg1
movah,09h
int21h
movah,01
int21h
cmpal,'0'
jlexit
cmpal,'0'
jgexit
subal,30h
movbx,offsetled
xlat
movdx,io8255a
outdx,al
jmpsss
exit:
movah,4ch
int21h
codeends
endstart
;8255行扫描键盘接口,8255CS接288H,PC0-PC3接键盘行ROW0-ROW3,PA0-PA5接键盘列SER0-SER5
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;1001000方式0,C输出,A输入
outdx,al
movdi,0;
movsi,0;
lp1:
moval,0
movdx,io8255c;C输出全0行值
outdx,al
movdx,io8255a;A读入列值
inal,dx
andal,00111111b
cmpal,00111111b;是否有键按下
jzlp1;同je,=转移,ZF=1
calldelay
;有键按下,则A0到A3逐位变换仅有一位为0的行值后读取列值,不全为1的确定键值
movah,0feh
movcx,4
BCA:
moval,ah
movdx,io8255c
outdx,al
movdx,io8255a
inal,dx
andal,0fh
cmpal,0fh
jnzrealy;,即有键按下,确定键值
rolah,1;左移,ror右移
loopBCA
jmplp1
;movbl,al
realy:
pushax
movdx,io8255a
inal,dx
nop
nop
nop
andal,0fh
cmpal,0fh
jnzrealy;!
=转移,同jne
popax
;movcx,4;辅助设备输出
;moval,bl
l4:
movcx,6
lp4:
shral,1;右移
jnclp2;前次操作无进位转移,cf=0
incsi;+1
looplp4
lp2:
movcx,4;控制台输入/输出
moval,ah
lp20:
shral,1
jnclp3
incdi
looplp20
lp3:
movbx,di
moval,6
mulbl;无符号数乘法->ax
addax,si
disp:
movbx,offsetkey
xlat
movdh,0
movdl,al
movah,2
int21h
jmplp0
exit:
movah,4ch
int21h
delayprocfare
pushcx
movcx,20h
L1:
loopL1
popcx
ret
delayendp
codeends
endstart
;8255交通灯控制,8255CS接288-28FH,PC0-PC7接L0-L7
datasegment
io8255cequ28Ah
io8255zequ28Bh
dataends
stack1segmentparastack
stack1ends
codesegment
assumecs:
code,ds:
data,ss:
stack1
start:
movax,data
movds,ax
movdx,io8255z
moval,90h
outdx,al
lop:
movdx,io8255c
moval,00100001b;南北绿,东西红
outdx,al
movcx,20000
de1:
movdi,9000
de0:
decdi
jnzde0
loopde1;movcx,2000长延时
movbx,6
e1:
moval,10000001b;。
。
黄,。
。
红
outdx,al
movcx,2000
de3:
movdi,9000
de2:
decdi
jnzde2
loopde3
moval,01h;。
。
灭,。
。
红
outdx,al
movcx,2000
de1:
movdi,9000
de0:
decdi
jnzde0
loopde1
decbx
cmpbx,3
jnze1
moval,01000100b;。
。
红,。
。
绿
outdx,al
movcx,20000
de5:
movdi,9000
de4:
decdi
jnzde4
loopde5
e2:
moval,01000010b;。
。
红,。
。
黄
outdx,al
movcx,2000
de7:
movdi,9000
de6:
decdi
jnzde6
loopde7
moval,01000000b;。
。
红,。
。
灭
outdx,al
movcx,2000
de9:
movdi,9000
de8:
decdi
jnzde8
loopde9
decbx
cmpbx,0
jnze2
jmplop
exit:
movah,4ch
int21h
codeends
endstart
;循环显示00-99,8255CS接288-28FH,PA0-PA6接a-g,PC0-PC1接驱动S0-S1,数码管驱动端dp接GND
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,io8255z
moval,80h
outdx,al
movdi,offsetbuffer1
loop1:
movcx,050h;循环次数
loop2:
movbh,02;显示位数
lll:
movbyteptrbz,bh
pushdi
decdi;-1
adddi,bz
movbl,[di];bl要显示的数
popdi
;;
moval,3;清数码管
movdx,io8255c
outdx,al
;;
movbh,0
movsi,offsetled;
addsi,bx
moval,byteptr[si]
movdx,io8255a
outdx,al
moval,byteptrbz
movdx,io8255c
outdx,al
pushcx
movcx,3000
delay:
loopdelay
popcx
movbh,byteptrbz
shrbh,1;右移
jnzlll
looploop2
movax,wordptr[di]
cmpah,15
jnzset
cmpal,15
jnzset
movax,0000
mov[di],al
mov[di+1],ah
jmploop1
set:
movah,01
int16h
jneexit;有键按下转exit
movax,wordptr[di]
incal
aaa
mov[di],al;个位
mov[di+1],ah;十位
jmploop1
exit:
movdx,io8255c
moval,3
outdx,al
movah,4ch
int21h
codeends
endstart
;;8255综合实验,8255CS接288H,PB0-PB7接a-g,PC0-PC3接键盘行POW0-POW3,PA0-PA3接键盘列SER0-SER3
datasegment
io8255aequ288h
io8255bequ289h
io8255cequ28ah
io8255zequ28bh
leddb3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71h
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;1001000方式0,C输出,A输入
outdx,al
lp1:
movdi,0;用于显示数码管的位置
movsi,0;
;moval,0
;movdx,io8255c;C输出全0行值
;outdx,al
;movdx,io8255a;A读入列值
;inal,dx
;andal,00111111b
;cmpal,00111111b;是否有键按下
;jzlp1;同je,=转移,ZF=1
;calldelay
;有键按下,则A0到A3逐位变换仅有一位为0的行值后读取列值,不全为1的确定键值
movah,0feh
movcx,4
lp2:
moval,ah
movdx,io8255c
outdx,al
movdx,io8255a
inal,dx
andal,0fh;保留低四位有效值
cmpal,0fh
jnzrealy;!
=,即有键按下,确定键值
rolah,1;左移,ror右移
looplp2
jmplp1
realy:
pushax
movdx,io8255a
inal,dx
nop
nop
nop
andal,0fh
cmpal,0fh
jnzrealy;!
=转移,同jne
popax
movcx,6
lp3:
shral,1
jnclp4
incsi
looplp3
lp4:
movcx,4
moval,ah
lp5:
shral,1
jnclp6
incdi
looplp5
lp6:
movbx,di
moval,6
mulbl
addax,si
disp:
movbx,offsetkey
xlat
cmpal,39h
jlll
cmpal,40h
jglll
ll:
subal,30h
movbx,offsetled
xlat
movdx,io8255b
outdx,al
calldelay
jmplp1
lll:
subal,41h
movbx,offset[led+10]
xlat
movdx,io8255b
outdx,al
calldelay
jmplp1
exit:
movah,4ch
int21h
delayprocnear
pushcx
movcx,400h
l2:
loopl2
popcx
ret
delayend_
codeends
endstart
;8253脉冲计数,8253CS接280-287H,CLK0接PULSE1+,GATE0接+5V,OUT0接逻辑笔,8255CS接288-28FH,PC0-PC5接L0-L5
timer_ct1equ283h
timer0equ280h
io8255zequ28bh
io8255cequ28ah
codesegment
assumecs:
code
start:
movdx,io8255z
moval,80h
outdx,al
movdx,timer_ct1
moval,00010000b
outdx,al
movdx,timer0
moval,8
outdx,al
display:
movdx,timer_ct1
moval,00000000b
outdx,al
movdx,timer0
inal,dx
movbl,al
moval,8
subal,bl
movdx,io8255c
outdx,al
movah,06h
movdl,0ffh
int21h
jzdisplay
movah,4ch
int21h
codeends
endstart
;8253可编程时钟发生器,8253CS接280-287H,CLK0接1MHZ,GATE0接+5V,OUT0接CLK1,GATE1接+5V,OUT1接L0
timer_ct1equ283h
timer0equ280h
timer1equ281h
mode03equ36h
mode12equ76h
codesegment
assumecs:
code
start:
movdx,timer_ct1
moval,mode03
outdx,al
movdx,timer0
movax,1000;计数初值
outdx,al
moval,ah
outdx,al
movdx,timer_ct1
moval,mode12
outdx,al
movdx,timer1
movax,200
outdx,al
moval,ah
outdx,al
movah,4ch
int21h
codeends
endstart
;8253继电器,8255CS接288-28FH,PA0接8253的OUT1,,PC0接继电器模块IK,8253CS接280-287H,CLK0接1MH,GATE0接+5V,OUT0接CLK1,GATE1接+5V
timer0equ280h
timer1equ281h
timerct1equ283h
io8255aequ288h
io8255zequ28bh
codesegment
assumecs:
code
start:
movdx,io8255z
moval,90h
outdx,al
ll1:
moval,0;PC0复位,继电器断开
outdx,al
calldelay
moval,1;PC0复位,继电器闭合
outdx,al
calldelay
jmpll1
delayprocnear
pushdx
movdx,timerct1
moval,36h
outdx,al
movdx,timer0
movax,10000
outdx,al
moval,ah
outdx,al
movdx,timerct1
moval,70h
outdx,al
movdx,timer1
movax,300
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
;8253电子琴,8255CS接288-28FH,PA0接逻辑门AND_A,PA1接8253的GATE0,8253CS接280-287H,CLK0接1MHZ,OUT0接逻辑门AND_B,AND_Y接NOT,NOT_Y接音响合成模块的INPUT引脚。
datasegment
io8255aequ288h
io8255zequ28bh
timer0equ280h
timerct1equ283h
tabledw524,588,660,698,784,880,988,1048;高音
;;tabledw262,294,330,347,392,440,494,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,31h
shlal,1;左移
movbl,al
movbh,0
movax,4240h
movdx,0fh
divwordptr[table+bx]
movbx,ax
movdx,timerct1
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,4ch
int21h
delayprocnear
pushcx
pushax
movax,15
x1:
movcx,0ffffh
x2:
deccx
jnzx2
decax
jnzx1
popax
popcx
ret
d
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 西南 交大 微机 实验 代码
![提示](https://static.bdocx.com/images/bang_tan.gif)