📄 第三实验.txt
字号:
实验三:利用8255输入8位开关信号,并视其为位16进制数字,在计算机显示屏幕上输出(或在八位发光二级管输出)
pa输入开关信号,pb输出发光二级管
pa8255 equ 300h
pb8255 equ 301h
pc8255 equ 302h
ctr8255 equ 303h
dseg segment
command db 10010000b;特征位1,A组方式0,A口输入,PC4-7暂未用,B组方式0,B口输出,PC0-3暂未用
dseg ends
cseg segment
assume cs:cseg,ds:dseg
start: mov ax,dseg
mov ds,ax
mov dx,ctr8255
mov al,command
out dx,al
ag: mov dx,pa8255
in al,dx
mov dx,pb8255
xor al,0ffh
out dx,al
mov ah,0bh
int 21h
and al,al
jz ag
mov ah,8
int 21h
cmp al,27
jnz ag
mov ax,4c00h
int 21h
cseg ends
end start
pa输入开关信号,屏幕输出
pa8255 equ 300h
pb8255 equ 301h
pc8255 equ 302h
ctr8255 equ 303h
dseg segment
command db 10010000b
dseg ends
cseg segment
assume cs:cseg,ds:dseg
start: mov ax,dseg
mov ds,ax
mov dx,ctr8255
mov al,command
out dx,al
ag: mov dx,pa8255
in al,dx
mov bl,al
mov bh,al
mov cl,4
shr bl,cl
call disp
mov bl,bh
call disp
mov dl,13
mov ah,2
int 21h
mov ah,0bh
int 21h
and al,al
jz ag
mov ah,8
int 21h
cmp al,27;按esc键结束
jnz ag
mov ax,4c00h
int 21h
disp proc near
and bl,0fh
mov dl,bl
or dl,30h
cmp dl,3ah
jc next
add dl,7
next: mov ah,2
int 21h
ret
disp endp
cseg ends
end start
实验四:以中断方式,每隔2秒将计数器加1,将计数值显示在屏幕上
j08253 equ 304h
j18253 equ 305h
j28253 equ 306h
ctr8253 equ 307h
z82590 equ 20h
z82591 equ 21h
c82590 equ 0a0h
c82591 equ 0a1h
dseg segment
command1 db 10010110b;通道2输入低8位初值方式3工作二进制计数
command2 db 01010110b;通道1输入低8位初值方式3工作二进制计数
chuz1 db 0 ;通道2初值为0
chuz2 db 18 ;通道1初值为18
mast1 db 11111011b;主片8259的IRQ2开放
mast2 db 11111011b;从片8259的IRQ2开放
endit db 20h
count db 0
oldseg dw ?
oldoff dw ?
dseg ends
cseg segment
assume cs:cseg,ds:dseg
start: mov ax,dseg
mov ds,ax
mov dx,ctr8253
mov al,command1
out dx,al
mov dx,j28253
mov al,chuz1
out dx,al
mov dx,ctr8253
mov al,command2
out dx,al
mov dx,j18253
mov al,chuz2
out dx,al
mov dx,z82591
in al,dx
and al,mast1
out dx,al
mov dx,c82591
in al,dx
and al,mast2
out dx,al
cli
mov ah,35h
int 21h
mov ax,es
mov oldseg,ax
mov oldoff,bx
push ds
mov dx,seg subp
mov ds,dx
mov dx,offset subp
mov ah,25h
int 21h
pop ds
sti
ag: mov al,count
mov bl,al
mov bh,al
mov cl,4
shr bl,cl
call disp
mov bl,bh
call disp
mov dl,13
mov ah,2
int 21h
mov ah,0bh
int 21h
and al,al
jz ag
mov ah,8
int 21h
cmp al,27
jnz ag
mov dx,z82591
in al,dx
mov bl,mast1
xor bl,0ffh
or al,bl
out dx,al
mov dx,c82591
in al,dx
mov bl,mast2
xor bl,0ffh
or al,bl
out dx,al
mov ax,oldseg
mov dx,oldoff
mov ds,ax
mov ah,25h
int 21h
mov ax,4c00h
int 21h
disp proc
and bl,0fh
mov dl,bl
or dl,30h
cmp dl,3ah
jc next
add dl,7
next: mov ah,2
int 21h
ret
disp endp
subp proc far
inc count
push dx
push ax
mov al,endit
mov dx,c82590
out dx,al
mov dx,z82590
out dx,al
pop ax
pop dx
iret
subp endp
cseg ends
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -