📄 微机原理实验内容.htm
字号:
di<BR> mov
es:[di],ah<BR> add
di,2<BR> loop
rdisp1<BR> dec
di<BR> mov
es:[di],al<BR> ret<BR><BR>disply:call
black<BR> mov
ax,90h<BR> mov
dx,con8279<BR> out
dx,ax<BR> mov
dx,dat8279<BR> mov
cx,8<BR> mov di,offset
disbuf<BR>dlo: mov
al,es:[di]<BR> mov
ah,0<BR> out
dx,ax<BR> inc
di<BR> loop
dlo<BR> ret<BR><BR>black: mov
dx,con8279<BR> mov
ax,0d1h<BR> out
dx,ax<BR> mov cx,80h<BR>clsb:
nop<BR>
nop<BR> loop
clsb<BR> ret<BR><BR>code
ends<BR> end start</P>
<P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"
align=left> <A
name=2></A>
<A
href="http://home.jznu.net/lbnet/sy/synr.htm#top">返回目录</A><BR>--------------------------------------------------------------<BR>
实验五 8253定时器控制模拟交通灯实验<BR> 硬件连接:
8253OUT0接74LS244的SI<SUB>0</SUB>,地址译码输出CS0与8253的片选CS相连;<BR>
8个发光二极管与74LS273的SO相连,地址译码输出CS1与74LS273的片选CS相连</P>
<P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"
align=left>
地址译码输出CS2与74LS244的片选CS相连<BR> 实验效果:
类似路口交通灯依一定时间亮灭<BR>--------------------------------------------------------------<BR>汇编程序:<BR>;=====================================================================<BR>;<BR>;
This program use 8253 timer for LED transfer<BR>;<BR>; LED : green/red to
yellow/red to red/green to red/yellow to again<BR>;
00100001(21H)--00001001(09H)--00010010(12H)--000000110(06H)<BR>;=====================================================================<BR>
assume cs:code<BR>code segment
public<BR> org 100h<BR>start: mov
dx,04a6h ; 8253
控制寄存器地址,因8253的片选cs连接到地址译码的cs0<BR> mov
al,36h ; ctc0
设置为模式3:16位循环方波输出<BR> out
dx,al<BR> mov dx,04a0h ;
8253 ctc0 计数值寄存器地址<BR> mov
al,24h<BR> out
dx,al<BR> mov
al,0f4h<BR> out
dx,al ;
设置16位计数值<BR>;---------------------------------cycle 1<BR>next0: mov
dx,04b0h ; LED 口地址<BR> mov
al,21h<BR> out
dx,al ;
输出状态1:一个路口绿灯、另一个红灯<BR> mov
cl,40 ;
计数值的外循环次数<BR> mov
dx,04c0h<BR>in11: in
al,dx ;
检测8253的ctc0输出<BR> test
al,1<BR> jz in11<BR>in12: in
al,dx<BR> test
al,1<BR> jnz
in12<BR> dec
cl<BR> jnz
in11 ;
5秒定时到<BR>;---------------------------------cycle
2<BR> mov
bl,5<BR> mov dx,04b0h<BR>flash1:mov
al,01 ; 显示状态2:黄灯闪5下</P>
<P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"
align=left> out
dx,al<BR> mov
cx,8fffh<BR>wait11:nop<BR> loop
wait11<BR> mov
al,21h<BR> out
dx,al<BR> mov
cx,0ffffh<BR>wait12:nop<BR> loop
wait12<BR> dec
bl<BR> jnz
flash1 ;
flash<BR> mov
al,09h<BR> out dx,al ; show
state2<BR> mov
cl,10<BR> mov dx,04c0h<BR>in21: in
al,dx<BR> test
al,1<BR> jz in21<BR>in22: in
al,dx<BR> test
al,1<BR> jnz
in22<BR> dec
cl<BR> jnz in21 ; timer 1
seconds<BR>;---------------------------------cycle
3<BR> mov
dx,04b0h<BR> mov
al,12h<BR> out dx,al ; show
state3<BR> mov
cl,30<BR> mov dx,04c0h<BR>in31: in
al,dx<BR> test
al,1<BR> jz in31<BR>in32: in
al,dx<BR> test
al,1<BR> jnz
in32<BR> dec
cl<BR> jnz in31 ; timer 4
seconds<BR>;---------------------------------cycle
4<BR> mov
bl,5<BR> mov dx,04b0h<BR>flash2:mov al,2 ;
flash 5 times<BR> out
dx,al<BR> mov
cx,8fffh<BR>wait21:nop<BR> loop
wait21<BR> mov
al,12h<BR> out
dx,al<BR> mov
cx,0ffffh<BR>wait22:nop<BR> loop
wait22<BR> dec
bl<BR> jnz flash2 ;
flash<BR> mov
al,06h<BR> out
dx,al<BR> mov
cl,10<BR> mov dx,04c0h<BR>in41: in
al,dx<BR> test
al,1<BR> jz in41<BR>in42: in
al,dx<BR> test
al,1<BR> jnz
in42<BR> dec
cl<BR> jnz in41 ; times 1
seconds<BR>;--------------------------------- end 1
cycle<BR> jmp next0 ; again to
state1<BR>code ends<BR> end
start</P>
<P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"
align=left> <A
name=5></A>
<A
href="http://home.jznu.net/lbnet/sy/synr.htm#top">返回目录</A><BR>----------------------------------------------------------------<BR>
实验六 LED显示实验<BR> 硬件连线: 无<BR> 实验效果:
LED显示特定的数字<BR>----------------------------------------------------------------<BR>汇编程序:<BR>;===================================================================<BR>;<BR>;
This program show "F86430" in LED digital
display<BR>;<BR>;===================================================================<BR>con8279
equ 0492h ;<A
href="http://home.jznu.net/lbnet/8279.ppt" target=_blank>Intel 8279
Description</A><BR>dat8279 equ 0490h<BR>
assume cs:code<BR>code segment
public<BR> org 100h<BR>start: jmp
start1<BR>disbuf db 6 dup(0)<BR>start1:mov di,offset
disbuf<BR> mov byte ptr cs:[di],71h
;f<BR> inc
di<BR> mov byte ptr cs:[di],7fh
;8<BR> inc
di<BR> mov byte ptr cs:[di],7dh
;6<BR> inc
di<BR> mov byte ptr cs:[di],66h
;4<BR> inc
di<BR> mov byte ptr cs:[di],4fh
;3<BR> inc
di<BR> mov byte ptr cs:[di],3fh
;0<BR>kplay2:call disply<BR> ;call
rdisp<BR> call
dislay<BR> jmp kplay2<BR><BR>dislay:mov
bx,2eeeh<BR>disla2:dec bx<BR> jnz
disla2<BR> mov
ax,0c2h<BR> mov
dx,con8279<BR> out
dx,ax<BR> ret<BR><BR>disply:call
black<BR> mov
ax,90h<BR> mov
dx,con8279<BR> out
dx,ax<BR> mov
dx,dat8279<BR> mov
cx,8<BR> mov di,offset
disbuf<BR>dlo: mov
al,es:[di]<BR> mov
ah,0<BR> out
dx,ax<BR> inc
di<BR> loop
dlo<BR> ret<BR><BR>black: mov
dx,con8279<BR> mov
ax,0d1h<BR> out
dx,ax<BR> mov cx,80h<BR>clsb:
nop<BR>
nop<BR> loop
clsb<BR> ret<BR><BR>code
ends<BR> end start</P>
<P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"
align=left>!设计实验:用3个开关输入作为编码0-7,根据输入LED显示相应的0-7。<BR>
<A
name=6></A>
<A
href="http://home.jznu.net/lbnet/sy/synr.htm#top">返回目录</A><BR>----------------------------------------------------------------<BR>
实验七 定时器计时显示实验<BR> 硬件连线: 8253OUT0接74LS244的SI<SUB>0</SUB>,</P>
<P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"
align=left>
地址译码输出CS<SUB>0</SUB>与8253的片选CS相连;<BR>
地址译码输出CS<SUB>2</SUB>与74LS244的片选CS相连</P>
<P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px" align=left> 实验效果:
LED显示定时器的计时数。<BR>----------------------------------------------------------------<BR>汇编程序:</P>
<P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"
align=left>;=========================================================================<BR>;<BR>;
This program use 8253 and LED show time in mm-ss-nn,n:1/100
second<BR>;<BR>;=========================================================================<BR>con8279
equ 0492h ; LED CONTROL PORT<BR>dat8279 equ 0490h ; LED DATA
PORT<BR> assume cs:code<BR>code
segment public<BR> org 100h<BR>start: jmp
start1<BR>table1 db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh<BR>disbuf db 6
dup(0)<BR>;------------------------------------start initial<BR>start1:mov
di,offset disbuf<BR> mov cx,6<BR>ini0:
mov byte ptr es:[di],3fh<BR> inc
di<BR> loop
ini0 ; show 00:00:00
first<BR>;-------------------------------------------<BR>
mov dx,04a6h ; initial
ctc8253<BR> mov
al,36h ; ctc0 16bits mode3
cycle<BR> out
dx,al<BR> mov
dx,04a0h<BR> mov
al,24h<BR> out
dx,al<BR> mov
al,0fh<BR> out
dx,al ; SET CTC0 16 bits
DATA<BR>;------------------------------------------<BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -