⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 第三实验.txt

📁 微机原理与接口。。华中科技大学。。版本。。PPT
💻 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 + -