|
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.gif (73.28 KB, 下載次數: 66)
下載附件
2022-4-30 16:16 上傳
83bfb0d8c83391e0f198a35972b9912b.png (74.68 KB, 下載次數: 81)
下載附件
2022-4-30 11:34 上傳
實驗內容
1.實現子程序和中斷服務子程序的設計;
2.編寫子程序設置40H中斷為自定義中斷服務子程序;
3.編寫中斷服務子程序實現AX=AX+BX;
4.編寫主程序調用子程序和中斷。
二.程序流程
51hei.png (18.28 KB, 下載次數: 80)
下載附件
2022-4-30 16:17 上傳
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 ;只響應IR0中斷
- CODE SEGMENT
- ASSUME CS:CODE,DS:DATA
-
- ORG 00H
- JMP INTSERV
-
- ORG 100H
- START:
- MOV AX,DATA
- MOV DS,AX
-
- CLI ;關閉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 ;調用設置中斷工作方式的子程序
-
- STI ;打開CPU可屏蔽中斷
-
- MOV AL,LED_ON
- MOV DX,LED_IO
- OUT DX,AL
- LP: ;等待中斷,并計數
- 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
- MOV AL,20H ;中斷服務程序結束指令
- OUT DX,AL
- STI
- IRET
- CODE ENDS
- DATA SEGMENT
- LED_ON DB 01H ;初始LED1亮
- DATA ENDS
- END START
復制代碼
代碼與Proteus仿真下載:
8086中斷.7z
(64.52 KB, 下載次數: 12)
2022-4-30 16:18 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
-
-
八路搶答器.zip
2022-4-30 11:31 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
39.31 KB, 下載次數: 4, 下載積分: 黑幣 -5
評分
-
查看全部評分
|