📄 8255a.asm
字号:
;-------------------------------------------------------
; 程序说明
;实现功能:通过8255A(方式0)实现开关对发光二极管的控制
;按回车时,程序退回DOS
;
; 测试专用,适用于唐都TD-PIT实验箱 胖大海
;-------------------------------------------------------
CODE SEGMENT
ASSUME CS:CODE
START:
MOV DX,1443H ;定义控制器端口地址
MOV AL,10001001B ;定义方式字。方式0、A口输出(接发光管D0-D7)、
;B口输出(接发光管D8-D15)、C口输入(接某组开关)
OUT DX,AL ;送方式字
LOOP1: MOV DX,1442H ;定义C口地址
IN AL,DX ;读C口数据
MOV DX,1440H ;定义A口地址
OUT DX,AL ;将读到的C口数据送往A口
MOV DX,1441H ;定义B口地址
OUT DX,AL ;将读到的C口数据送往B口
MOV AH,11 ;调用DOS的11号功能,判断是否有按键按下
INT 21H
CMP AL,0 ;如果没按键则功能调用返回值AL=0,所以将AL和0比较一下
JE LOOP1 ;相等则循环,反之退出
MOV AH,4CH ;退回到DOS
INT 21H
CODE ENDS
END START
;------------------------------------------------------------
; 参考接线:
;8255A的D0-D7接ISA仿真借口的XD0-XD7
;8255A的RD、WR、CS分别接ISA仿真借口的XIOR、XIOW、IOY2
;8255A的A0、A1分别接ISA仿真借口的XA0、XA1
;8255A的PA0-PA7接LED显示单元的D0-D7(A口输出)
;8255A的PB0-PB7接LED显示单元的D8-D15(B口输出)
;8255A的PC0-PC7接开关K0-K7(C口输入)
;
;
; 一些说明:
;因为PCI的I/O基地址是系统动态给定的,不同的机型的PCI的I/O基地址各不相同
;而I/O信号线对应的实际地址=基地址+相对偏移。
;IOY2的相对偏移为40-5FH,所以当你选中IOY2时(假设I/O基地址
;为1400),IOY2可使用的I/O地址范围为1440H-145FH
;(即1400H+40H到1400H+5FH)
;
;PCI的I/O基地址可执行D盘根目录下的PCI_BIOS.EXE来查看。
;
;如果线接对了、I/O地址也都对、程序也一样,还是出不来,
;那就是箱子有问题。
;------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -