8086中斷實驗
一.實驗內(nèi)容 1.實現(xiàn)子程序和中斷服務(wù)子程序的設(shè)計; 2.編寫子程序設(shè)置40H中斷為自定義中斷服務(wù)子程序; 3.編寫中斷服務(wù)子程序?qū)崿F(xiàn)AX=AX+BX; 4.編寫主程序調(diào)用子程序和中斷。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
8086匯編源程序如下:
- LED_IO EQU 8000H ;LED端口地址
- CS8259A EQU 9000H ;8259地址
- CS8259B EQU 9002H
-
- ICW1 EQU 00010011B ;單片8259,上升沿中斷,要寫ICW4
- ICW2 EQU 00100000B ;中斷號為20H
- ICW4 EQU 00000001B ;工作在8086/88方式
- OCW1 EQU 00000000B ;只響應(yīng)IR0中斷
- CODE SEGMENT
- ASSUME CS:CODE,DS:DATA
-
- ORG 00H
- JMP INTSERV
-
- ORG 100H
- START:
- MOV AX,DATA
- MOV DS,AX
-
- CLI ;關(guān)閉CPU可屏蔽中斷
- MOV AX,0
- MOV ES,AX
- MOV BX,20H*4 ;中斷號為20H的中斷向量入口
-
- MOV AX,OFFSET INTSERV ;中斷入口地址偏移地址
- MOV WORD PTR ES:[BX],AX
- MOV AX,SEG INTSERV ;中斷入口地址段地址
- MOV WORD PTR ES:[BX+2],AX
-
- CALL INTSET ;調(diào)用設(shè)置中斷工作方式的子程序
-
- STI ;打開CPU可屏蔽中斷
-
- MOV AL,LED_ON
- MOV DX,LED_IO
- OUT DX,AL
- LP: ;等待中斷,并計數(shù)
- NOP
- JMP LP
- INTSET:
- MOV DX,CS8259A ;寫ICW1
- MOV AL,ICW1
- OUT DX,AL
-
- MOV DX,CS8259B ;寫ICW2
- MOV AL,ICW2
- OUT DX,AL
-
- MOV AL,ICW4 ;寫ICW4
- OUT DX,AL
- MOV AL,OCW1 ;寫OCW1
- OUT DX,AL
- RET
- INTSERV:
- CLI
- MOV AL,LED_ON
- SHL AL,1
- JNZ OK
- MOV AL, 01H
- OK:
- MOV LED_ON,AL
- MOV DX,LED_IO
- OUT DX,AL
-
- MOV DX,CS8259A
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
中斷實驗.rar
(45.73 KB, 下載次數(shù): 123)
2017-12-19 10:49 上傳
點擊文件名下載附件
|