《微机原理与接口技术》
实验报告
安徽工业大学计算机学院
实验一 8255A应用—数码管动态显示
一、实验目的
1、掌握8255A的工作方式、编程原理和微机接口方法。
2、了解LED数码管动态显示的工作原理及编程方法。
二、实验内容
编制程序,使数码管显示“DICE88”字样。
三、实验步骤
联机模式:
(1)在PC机和实验系统联机状态下,运行实验系统dj8086k.exe(双击桌面OTA图标或通过开始-程序-dj8086k-DJ8086k微机原理与接口技术),新建文件并在编辑窗口输入汇编源程序,再单击工具栏中编译装载,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。
(2)数码管显示“DICE88”字样。
脱机模式:
(1)在P.态下,通过单板机小键盘,从2DF0地址开始输入机器码(参见附录三),完成后返回监控,输入起始地址2DF0,再按EX键执行。
(2)数码管显示“DICE88”字样。
四、实验程序清单
CODE SEGMENT ; display "DICE88"
ASSUME CS:CODE
ORG 2DF0H
START: JMP START0
PA EQU 0FF20H ;字位口
PB EQU 0FF21H ;字形口
PC EQU 0FF22H ;键入口
BUF DB ?,?,?,?,?,?
data1: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h
db 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH,0F0H
START0: CALL BUF1
CON1: CALL DISP
JMP CON1
DISP: MOV AL,0FFH ;00H
MOV DX,PA
OUT DX,AL
MOV CL,0DFH ;显示子程序 ,5ms
MOV BX,OFFSET BUF
DIS1: MOV AL,[BX]
MOV AH,00H
PUSH BX
MOV BX,OFFSET DATA1
ADD BX,AX
MOV AL,[BX]
POP BX
MOV DX,PB
OUT DX,AL
MOV AL,CL
MOV DX,PA
OUT DX,AL
PUSH CX
DIS2: MOV CX,00A0H
LOOP $
POP CX
CMP CL,0FEH ;01H
JZ LX1
MOV AL,0FFH ;00H
MOV DX,PA
OUT DX,AL
INC BX
ROR CL,1 ;SHR CL,1
JMP DIS1
LX1: MOV AL,0FFH
MOV DX,PB
OUT DX,AL
RET
BUF1: MOV BUF,0DH ;实验修改 mov buf,0ah
MOV BUF+1,01H
MOV BUF+2,0CH
MOV BUF+3,0EH
MOV BUF+4,08H ;实验修改mov buf+4,00h
MOV BUF+5,08H ;实验修改mov,buf+5,09h
RET
CODE ENDS
END START
实验二 8259单级中断控制器实验
一、实验目的
1.掌握8259中断控制器的接口方法。
2.掌握8259中断控制器的应用编程。
二、实验内容
利用8259实现对外部中断的响应和处理,要求程序对每次中断进行计数,并将计数结果送数码显示。
三、实验接线图
四、实验步骤
1、按图6-2连好实验线路图。
⑴8259的INT连8088的INTR;⑵8259的INTA连8088的INTA;⑶“ ”插孔和8259的3号中断IR3插孔相连,“ ”端初始为低电平;⑷8259的CS端接FF80H孔
2、输入并运行实验程序,系统显示8259-1。
3、按动AN开关按钮, 按满5次显示good。
五、实验程序清单
CODE SEGMENT ;
ASSUME CS: CODE
INTPORT1 EQU 0FF80H
INTPORT2 EQU 0FF81H
INTQ3 EQU INTREEUP3
INTQ7 EQU INTREEUP7
PA EQU 0FF20H ;字位口
PB EQU 0FF21H ;字形口
PC EQU 0FF22H ;键入口
ORG 12D0H
START: JMP START0
BUF DB ?,?,?,?,?,?
intcnt db ?
data1: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h
db 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH
START0: CLD
CALL BUF1
CALL WRINTVER ;WRITE INTRRUPT
MOV AL,13H
MOV DX,INTPORT1
OUT DX,AL
MOV AL,08H
MOV DX,INTPORT2
OUT DX,AL
MOV AL,09H
OUT DX,AL
MOV AL,0F7H
OUT DX,AL
MOV intcnt,01H ;TIME=1
STI
WATING: CALL DISP ;DISP 8259-1
JMP WATING
WRINTVER: MOV AX,0H
MOV ES,AX
MOV DI,002CH
LEA AX,INTQ3
STOSW
MOV AX,0000h
STOSW
MOV DI,003CH
LEA AX,INTQ7
STOSW
MOV AX,0000h
STOSW
RET
INTREEUP3: CLI
push ax
push bx
push cx
push dx
MOV AL,INTCNT
CALL CONVERS
MOV BX,OFFSET BUF ;077BH
MOV AL,10H
MOV CX,05H
INTRE0: MOV [BX],AL
INC BX
LOOP INTRE0
MOV AL,20H
MOV DX,INTPORT1
OUT DX,AL
ADD INTCNT,01H
CMP INTCNT,06H
JNA INTRE2
CALL BUF2 ;DISP:good
INTRE1: CALL DISP
JMP INTRE1
CONVERS: AND AL,0FH
MOV BX,offset buf ;077AH
MOV [BX+5],AL
RET
INTRE2: MOV AL,20H
MOV DX,INTPORT1
OUT DX,AL
pop dx
pop cx
pop bx
pop ax
STI
IRET
INTREEUP7: CLI
MOV AL,20H
MOV DX,INTPORT1
OUT DX,AL
call buf3 ;disp:err
INTRE3: CALL DISP
JMP INTRE3
DISP: MOV AL,0FFH ;00H
MOV DX,PA
OUT DX,AL
MOV CL,0DFH ;20H ;显示子程序 ,5ms
MOV BX,OFFSET BUF
DIS1: MOV AL,[BX]
MOV AH,00H
PUSH BX
MOV BX,OFFSET DATA1
ADD BX,AX
MOV AL,[BX]
POP BX
MOV DX,PB
OUT DX,AL
MOV AL,CL
MOV DX,PA
OUT DX,AL
PUSH CX
DIS2: MOV CX,00A0H
LOOP $
POP CX
CMP CL,0FEH ;01H
JZ LX1
INC BX
ROR CL,1 ;SHR CL,1
JMP DIS1
LX1: MOV AL,0FFH
MOV DX,PB
OUT DX,AL
RET
BUF1: MOV BUF,08H
MOV BUF+1,02H
MOV BUF+2,05H
MOV BUF+3,09H
MOV BUF+4,17H
MOV BUF+5,01H
RET
BUF2: MOV BUF,09H
MOV BUF+1,00H
MOV BUF+2,00H
MOV BUF+3,0dH
MOV BUF+4,10H
MOV BUF+5,10H
RET
BUF3: MOV BUF,0eH
MOV BUF+1,18H
MOV BUF+2,18H
MOV BUF+3,10H
MOV BUF+4,10H
MOV BUF+5,10H
RET
CODE ENDS
END START
实验三 8253、8255、8259综合实验
1.8253计数器实验
要求:计数器1方式0计数,计满3个数产生中断,中断5次后结束。
实验线路见图6-6:
图6-6 8253计数器实验电路图
实验程序:
INTPORT1 EQU 0FF80H
INTPORT2 EQU 0FF81H
INTQ3 EQU INTREEUP3
TCONTR0 EQU 0043H
TCON1 EQU 0041H
PA EQU 0FF20H ;字位口
PB EQU 0FF21H ;字形口
PC EQU 0FF22H ;键入口
code segment
assume cs:code
ORG 12D0H
START: JMP START0
BUF DB ?,?,?,?,?,?
intcnt db ?
data1
db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h db0a1h,86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH
START0: CLD
CALL BUF1
CALL WRINTVER ;WRITE INTRRUPT
MOV AL,13H
MOV DX,INTPORT1
OUT DX,AL
MOV AL,08H
MOV DX,INTPORT2
OUT DX,AL
MOV AL,09H
OUT DX,AL
MOV AL,0F7H
OUT DX,AL
MOV intcnt,01H ;TIME=1
MOV DX,TCONTR0
MOV AL,51H
OUT DX,AL
MOV DX,TCON1
MOV AL,03
OUT DX,AL
MOV DX,0FF23H
MOV AL,80
OUT DX,AL
STI
WATING: CALL DISP ;DISP 825359
JMP WATING
WRINTVER: MOV AX,0H
MOV ES,AX
MOV DI,002CH
LEA AX,INTQ3
STOSW
MOV AX,0000h
STOSW
RET
INTREEUP3: push ax
push bx
push cx
push dx
MOV DX,TCON1
MOV AL,03
OUT DX,AL
MOV AL,INTCNT
CALL CONVERS
MOV BX,OFFSET BUF
MOV AL,10H
MOV CX,05H
INTRE0: MOV [BX],AL
INC BX
LOOP INTRE0
ADD INTCNT,01H
CMP INTCNT,06H
JNA INTRE2
CALL BUF2 ;DISP:good
INTRE1: CALL DISP
JMP INTRE1
CONVERS: AND AL,0FH
MOV BX,offset buf
MOV [BX+5],AL
RET
INTRE2: MOV AL,20H
MOV DX,INTPORT1
OUT DX,AL
pop dx
pop cx
pop bx
pop ax
IRET
DISP: MOV AL,0FFH ;00H
MOV DX,PA
OUT DX,AL
MOV CL,0DFH ;20H
MOV BX,OFFSET BUF
DIS1: MOV DX,PC
OUT DX,AL
MOV AL,[BX]
MOV AH,00H
PUSH BX
MOV BX,OFFSET DATA1
ADD BX,AX
MOV AL,[BX]
POP BX
MOV DX,PB
OUT DX,AL
MOV AL,CL
MOV DX,PA
OUT DX,AL
PUSH CX
DIS2: MOV CX,00A0H
LOOP $
POP CX
CMP CL,0FEH ;01H
JZ LX1
INC BX
ROR CL,1 ;SHR CL,1
JMP DIS1
LX1: MOV AL,0FFH
MOV DX,PB
OUT DX,AL
RET
BUF1: MOV BUF,08H
MOV BUF+1,02H
MOV BUF+2,05H
MOV BUF+3,03H
MOV BUF+4,05H
MOV BUF+5,09H
RET
BUF2: MOV BUF,09H
MOV BUF+1,00H
MOV BUF+2,00H
MOV BUF+3,0dH
MOV BUF+4,10H
MOV BUF+5,10H
RET
CODE ENDS
END START要求做的改变:换成计数器0,计满11次后产生中断
2、8253定时器实验
要求:用8253定时器1通道定时,每隔1秒使PA口的指示灯的状态右移一位。主程序反复游走显示8253-A。 8253定时器实验线路见图6-7:
实验程序:
CODE SEGMENT ;
ASSUME CS:CODE
INTPORT1 EQU 0FF80H
INTPORT2 EQU 0FF81H
INTQ3 EQU INTREEUP3
TCONTR0 EQU 0043H
TCON1 EQU 0041H
IOCONPT EQU 0FF2BH
IOBPT EQU 0FF29H
IOAPT EQU 0FF28H
PA EQU 0FF20H ;字位口
PB EQU 0FF21H ;字形口
PC EQU 0FF22H ;键入口
ORG 12D0H
START: JMP START0
BUF DB ?,?,?,?,?,?
intcnt db ?
WEIKONG DB ?
data1 db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h
db 0a1h,86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH
START0: CLD
CALL BUF1
CALL WRINTVER ;WRITE INTRRUPT
MOV AL,13H
MOV DX,INTPORT1
OUT DX,AL
MOV AL,08H
MOV DX,INTPORT2
OUT DX,AL
MOV AL,09H
OUT DX,AL
MOV AL,0F7H
OUT DX,AL
MOV intcnt,50 ;软件计数50(1秒=20ms*50);实验修改MOV intcnt,100
MOV DX,TCONTR0
MOV AL,74H
OUT DX,AL
MOV DX,TCON1 ;计数器1定时20ms
MOV AX,40000
OUT DX,AL
MOV AL,AH
OUT DX,AL
MOV DX,0FF2BH
MOV AL,82H
OUT DX,AL
MOV WEIKONG, 0FEH ;初始PA0对应位亮
MOV AL, WEIKONG
MOV DX, 0FF29H
OUT DX,AL
STI
WATING: CALL DISP ;DISP 8253-A
JMP WATING
WRINTVER: MOV AX,0H
MOV ES,AX
MOV DI,002CH
LEA AX,INTQ3
STOSW
MOV AX,0000h
STOSW
RET
INTREEUP3: DEC INTCNT
JNZ INTRE2
MOV INTCNT, 50 ;实验修改 MOV INTCNT,100
ROL WEIKONG, 1;实验修改 ROR WEIKONG, 1
MOV DX, IOAPT
MOV AL, WEIKONG
OUT DX,AL
INTRE2: MOV AL,20H
MOV DX,INTPORT1
OUT DX,AL
IRET
DISP: MOV AL,0FFH ;00H
MOV DX,PA
OUT DX,AL
MOV CL,0DFH ;20H
MOV BX,OFFSET BUF
DIS1: MOV DX,PC
OUT DX,AL
MOV AL,[BX]
MOV AH,00H
PUSH BX
MOV BX,OFFSET DATA1
ADD BX,AX
MOV AL,[BX]
POP BX
MOV DX,PB
OUT DX,AL
MOV AL,CL
MOV DX,PA
OUT DX,AL
PUSH CX
DIS2: MOV CX,0000H
LOOP $
POP CX
CMP CL,0FEH ;01H
JZ LX1
INC BX
ROR CL,1
JMP DIS1
LX1: MOV AL,0FFH
MOV DX,PB
OUT DX,AL
RET
BUF1: MOV BUF,08H
MOV BUF+1,02H
MOV BUF+2,05H
MOV BUF+3,03H
MOV BUF+4,17H
MOV BUF+5,0AH
RET
CODE ENDS
END START要求做的改变:改成计数器0,2秒,灯的移动反过来
实验四 8250串口实验
一、实验目的
(1)系统扩展以8250为核心的可编程串行异步通讯接口芯片。
(2)对扩展的串行通讯接口实现自发自收。
二、实验内容
将寄存器AH的内容从10H开始通过8250发送、接收,每次收发后AH的内容自动增1直到FFH为止,同时将每次接收到的数据,依次写到内存4000H~40EFH单元中,实现自发自收。
三、实验接线图
四、实验步骤
用扁平线连JX0(BUS)到JX3(D0~D7),连FF80H孔到CS7,连TXD到RXD(8250实验区)。运行程序8250·ASM或在实验系统处于P态下,按SCAL键,输入29A0,按EXEC即可。当系统显示“8250——good”表示自发自收结束,按RST键,系统返回P态,用内存读写命令检查4000H~40EFH内容是否为10H~FFH,验证其正确性。
五、实验程序清单
CODE SEGMENT ;H8250.ASM
ASSUME CS:CODE ;H8250.ASM
DATA EQU 0ff80H;BTS-LSB 接收发送缓冲器
MSB EQU 0ff81H 中断允许寄存器和分频次数高
LINE EQU 0ff83H 传输线控制寄存器
LSTAT EQU 0ff85H 传输线状态寄存器
PA EQU 0FF20H ;字位口
PB EQU 0FF21H ;字形口
PC EQU 0FF22H ;键入口
ORG 29A0H
START: JMP START0
BUF DB ?,?,?,?,?,?
data1: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0 c6h,0a1h
db 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH
START0: MOV AL,80H ;DLAB=1
MOV DX,LINE
OUT DX,AL
MOV AL,18H ;BTS=4800
MOV DX,DATA ;ff80H
OUT DX,AL
MOV DX,MSB
MOV AL,00
OUT DX,AL
MOV AL,03H ;8- BIT ,1-STOP
MOV DX,LINE
OUT DX,AL
MOV AL,00 ;NO-INT
MOV DX,MSB (中断允许寄存器);8001H
OUT DX,AL
MOV AH,10H ;实验修改MOV AL,40H
MOV BX,4000H ;实验修改MOV BX,7000H
MAIN: CALL TXD
CALL RCV
MOV [BX],AL
INC BX
INC AH
CMP AH,00H
JNZ MAIN
CALL BUF1
MOV CX,00FFH
S3: PUSH CX
CALL DISP
POP CX
LOOP S3
CALL BUF3
S1: CALL DISP
JMP S1
TXD: MOV DX,LSTAT
WAIT1: IN AL,DX
TEST AL,20H
JZ WAIT1
MOV AL,AH
MOV DX,DATA
OUT DX,AL
RET
RCV: MOV DX,LSTAT
WAIT2: IN AL,DX
TEST AL,01H
JZ WAIT2
TEST AL,0EH
JNZ ERR
MOV DX,DATA
IN AL,DX
RET
ERR: CALL BUF2
S2: CALL DISP
JMP S2
DISP: MOV AL,0FFH ;00H
MOV DX,PA
OUT DX,AL
MOV CL,0DFH ;20H ;显示子程序 ,5ms
MOV BX,OFFSET BUF
DIS1: MOV AL,[BX]
MOV AH,00H
PUSH BX
MOV BX,OFFSET DATA1
ADD BX,AX
MOV AL,[BX]
POP BX
MOV DX,PB
OUT DX,AL
MOV AL,CL
MOV DX,PA
OUT DX,AL
PUSH CX
DIS2: MOV CX,00A0H
DELAY: LOOP DELAY
POP CX
CMP CL,0FEH ;01H
JZ LX1
INC BX
ROR CL,1 ;SHR CL,1
JMP DIS1
LX1: MOV AL,0FFH
MOV DX,PB
OUT DX,AL
RET
BUF1: MOV BUF,08H
MOV BUF+1,02H
MOV BUF+2,05H
MOV BUF+3,00H
MOV BUF+4,17H
MOV BUF+5,17H
RET
BUF2: MOV BUF,08H
MOV BUF+1,02H
MOV BUF+2,05H
MOV BUF+3,00H
MOV BUF+4,0EH
MOV BUF+5,18H
RET
BUF3: MOV BUF,09H
MOV BUF+1,00H
MOV BUF+2,00H
MOV BUF+3,0DH
MOV BUF+4,10H
MOV BUF+5,10H
RET
CODE ENDS
END START
实验五 A/D转换实验
一、实验目的
了解模/数转换基本原理,掌握ADC0809的使用方法;
掌握定时数据采集程序的编制方法。
二、实验内容
1、A/D转换实验
利用实验系统上电位器提供的可调电压作为0809模拟信号的输入,编制程序,将模拟量转换为数字量,通过数码管显示出来。
(1) 实验接线图
ADC0809接线见图6-9
图6-9 ADC0809接线图
(2)实验步骤
① 将0809 CS4插孔连到译码输出FF80H插孔。
② 将通道0模拟量输入端IN0连电位器W1的中心插头AOUT1(0-5V)插孔,8MHZ→T。
③ 运行实验程序,系统上显示“0809 XX”。“XX”表示输入模拟量转换后的数字量。
④ 调节电位器Wl, 显示器上会不断显示新的转换结果。
模拟量和数字量对应关系的典型值为:
0V→00H +2.5V→80H +5V→FFH
⑤ 按RST键退出。
(3)实验程序清单
CODE SEGMENT ;
ASSUME CS:CODE
ADPORT EQU 0FF80h
PA EQU 0FF20H ;字位口
PB EQU 0FF21H ;字形口
PC EQU 0FF22H ;键入口
ORG 1000H
START: JMP START0
BUF DB ?,?,?,?,?,?
data1:
db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h
db 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH
START0: CALL BUF1
ADCON: MOV AX,00 ;实验修改MOV AX,01
MOV DX,ADPORT
OUT DX,AL
MOV CX,0500H
;DELAY: LOOP DELAY
MOV DX,ADPORT
IN AL,DX
CALL CONVERS
CALL DISP
JMP ADCON
CONVERS: MOV AH,AL
AND AL,0FH
MOV BX,OFFSET BUF
MOV [BX+5],AL
MOV AL,AH
AND AL,0F0H
MOV CL,04H
SHR AL,CL
MOV [BX+4],AL
RET
DISP: MOV AL,0FFH
MOV DX,PA
OUT DX,AL
MOV CL,0DFH
MOV BX,OFFSET BUF
DIS1: MOV AL,[BX]
MOV AH,00H
PUSH BX
MOV BX,OFFSET DATA1
ADD BX,AX
MOV AL,[BX]
POP BX
MOV DX,PB
OUT DX,AL
MOV AL,CL
MOV DX,PA
OUT DX,AL
PUSH CX
DIS2: MOV CX,00A0H
LOOP $
POP CX
CMP CL,0FEH
JZ LX1
INC BX
ROR CL,1
JMP DIS1
LX1: MOV AL,0FFH
MOV DX,PB
OUT DX,AL
RET
BUF1: MOV BUF,00H
MOV BUF+1,08H
MOV BUF+2,00H
MOV BUF+3,09H
MOV BUF+4,00H
MOV BUF+5,00H
RET
CODE ENDS
END START
2、数据采集实验
要求:用8253定时器1通道定时,每隔半秒使从ADC0809的0通道IN0采集一个数据,若模拟电压在0-2V范围内(0-102),则使LED显示器L7-L4亮;若模拟电压大于2V,小于3V,则使L5-L2亮;若模拟电压大于等于3V,则使LED显示器L3-L0亮。
(主程序重复所采集的数据)
(1)实验接线图
数据采集实验系统接线图见图6-11
图6-11 数据采集系统接线图
(3)实验程序清单
CODE SEGMENT ;
ASSUME CS:CODE
INTPORT1 EQU 0FF80H
INTPORT2 EQU 0FF81H
INTQ3 EQU INTREEUP3
TCONTR0 EQU 0043H
TCON1 EQU 0041H ;实验修改TCON1 EQU 0040H
IOCONPT EQU 0FF2BH
IOBPT EQU 0FF29H
IOAPT EQU 0FF28H
PA EQU 0FF20H ;字位口
PB EQU 0FF21H ;字形口
PC EQU 0FF22H ;键入口
ADPORT EQU 0FE00H
ORG 12D0H
START: JMP START0
BUF DB ?,?,?,?,?,?
intcnt db ?
RES DB ?
data1 db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h
db 0a1h,86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH
START0: CLD
CALL BUF1
CALL WRINTVER
MOV AL,13H
MOV DX,INTPORT1
OUT DX,AL
MOV AL,08H
MOV DX,INTPORT2
OUT DX,AL
MOV AL,09H
OUT DX,AL
MOV AL,0F7H ;实验修改MOV AL,0FEH
OUT DX,AL
MOV intcnt,25
MOV DX,TCONTR0
MOV AL,74H ;实验修改MOV AL,34H
OUT DX,AL
MOV DX,TCON1
MOV AX,40000
OUT DX,AL
MOV AL,AH
OUT DX,AL
MOV DX,0FF2BH
MOV AL,82H
OUT DX,AL
STI
WATING: CALL DISP
JMP WATING
WRINTVER: MOV AX,0H
MOV ES,AX
MOV DI,002CH ;实验修改MOV DI,0020H
LEA AX,INTQ3
STOSW
MOV AX,0000h
STOSW
RET
INTREEUP3: DEC INTCNT (中断服务程序在此开始)
JNZ INTRE2
MOV INTCNT, 25
ADCON: MOV AX,00 ;实验修改MOV AX,01
MOV DX,ADPORT
OUT DX,AL
MOV CX,0500H
DELAY: LOOP DELAY
MOV DX,ADPORT
IN AL,DX
MOV RES,AL
CALL CONVERS
MOV AL,RES
CMP AL, 66H ;实验修改CMP AL,50H
JA NEXT1
MOV AL, 0F0H ;实验修改MOV AL,01FH
MOV DX, IOAPT
OUT DX,AL
JMP INTRE2
NEXT1: CMP AL, 99H ;实验修改CMP AL,63H
JA NEXT2
MOV AL, 0C3H ;实验修改 MOV AL,0C3H
MOV DX, IOAPT
OUT DX,AL
JMP INTRE2
NEXT2: MOV AL, 0FH ;实验修改 MOV AL,0FCH
MOV DX, IOAPT
OUT DX,AL
INTRE2: MOV AL,20H
MOV DX,INTPORT1
OUT DX,AL
IRET (中断服务程序在此结束)
CONVERS: MOV AH, AL
AND AL, 0FH
MOV BX, OFFSET BUF
MOV [BX+5], AL
MOV AL,AH
AND AL, 0F0H
MOV CL, 04H
SHR AL, CL
MOV [BX+4], AL
RET
DISP: MOV AL, 0FFH
MOV DX, PA
OUT DX, AL
MOV CL, 0DFH
MOV BX, OFFSET BUF
DIS1: MOV DX, PC
OUT DX, AL
MOV AL, [BX]
MOV AH, 00H
PUSH BX
MOV BX, OFFSET DATA1
ADD BX, AX
MOV AL, [BX]
POP BX
MOV DX, PB
OUT DX, AL
MOV AL, CL
MOV DX, PA
OUT DX, AL
PUSH CX
DIS2: MOV CX, 00A0H
LOOP $
POP CX
CMP CL,0FEH
JZ LX1
INC BX
ROR CL, 1
JMP DIS1
LX1: MOV AL, 0FFH
MOV DX, PB
OUT DX, AL
RET
BUF1: MOV BUF, 00H
MOV BUF+1, 08H
MOV BUF+2, 00H
MOV BUF+3 ,09H
MOV BUF+4, 00H
MOV BUF+5, 00H
RET
CODE ENDS
END START