返回信息流code segment
assume cs:code
start:
mov dx,0c40bh
mov al,89h
out dx,al ;设置8255各个口的工作方式
l1:
mov dx,0c40ah
in al,dx ;从C口输入数据
mov dx,0c408h
out dx,al ;从A口输出数据
and al,al
jnz l1 ;是否继续输入?是,返回;否,退出
mov ax,4c00h
int 21h
code ends
end start
这是一条镜像帖。来源:北邮人论坛 / scs / #48115同步于 2007/12/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SCS机器人发帖
|*技术贴*|实验方式0
tianxj
2007/12/19镜像同步1 回复
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
方式1:
第一部分
mov dx,21bh
mov al,98h
out dx,al ;设置8255各个口的工作方式
l1:mov dx,218h
in al,dx ;从A口输入数据
mov dx,219h
out dx,al ;从B口输出数据
mov ah,0bh
int 21h
or al,al
jz l1 ;是否继续输入?是,返回;否,退出
int 20h
第二部分
data segment
aport equ 218h
bport equ 219h
cport equ 21ah
ctrol equ 21bh
data ends
stack segment para stack ‘stack’
db 100 dup (‘s’)
stack ends
code segment
assume cs:code,ds:data,ss:stack
main proc far
push ds
xor ax,ax
push ax
mov ax,data
mov ds,ax
mov dx,21bh
mov al,0bch
out dx,al ;设置8255各个口的工作方式
mov al,09h
out dx,al ;允许A口中断
mov al,04h
out dx,al ;禁止B口中断
push ds
mov dx,seg serv
mov ds,dx
mov dx,offset serv
mov al,0dh
mov ah,25h
int 21h ;将中断服务程序地址写入中断向量表
pop ds
mov al,0dfh
out 21h,al ;写8259的控制字OCW1,清除IRQ5中断屏蔽位并屏蔽其它IRQ中断
sti ;开中断
again:mov ah,0bh
int 21h
or al,al
jz again ;等待中断
ret
main endp
serv proc far
push ax
mov dx,218h
in al,dx ;A口输入
mov dx,219h
out dx,al ;B口输出
mov al,20h
out 20h,al ;EOI命令,结束中断
pop ax
sti ;开中断
iret
serv endp
code ends
end main