微機原理第二篇

8259中斷程序控制實驗
【實驗目的】

1.掌握8259中斷控制的器的工作原理

2.學習8259的應(yīng)用編程方法

3.掌握8258的級聯(lián)的使用方法

【實驗原理】

1.中斷控制器8259A,在此次實驗中把主控制器的IR6,IR7以及從控制器的IR1開放出來供實驗使用,從片的int接到主片的IR2上構(gòu)成級聯(lián)

2.初始化命令字的生成規(guī)則,這個和書上的是一致的,比如ICW1中控制邊沿觸發(fā)還是電平觸發(fā),在這個實驗里,用的是邊沿觸發(fā),因此置為0;ICW2前五位代表中斷向量地址;ICW3是關(guān)于從主片的選擇的;ICW4是嵌套模式和是否禁止自動中斷。

初始化命令字ICW1~ICW4來對8359進行初始化

操作命令字OCW1~OCW3用來定義8259的控制方式



【實驗內(nèi)容】

實驗一:單中斷實驗,把單次脈沖輸出和主片的IR7相連,那么每按動一次,都作為一次外部中斷事件處理,在顯示屏上輸出一個字符‘7’。

設(shè)置中斷代碼部分:

CODE SEGMENT

ASSUME CS:CODE

START:

MOV AX,0000H

MOV ES,AX

MOV DI,3CH?????????????????????????????????????????????????? ;中斷矢量地址,目的地址偏移量即0F*4

MOV AX,OFFSET IR7???????????? ;取中斷入口地址

CLD

STOSW

MOV AX,CS?????????????????? ;段地址

STOSW

CLI

MOV AL,11H??????????? ?????????????;ICW1

OUT 20H,AL

MOV AL,08H????????????????????????? ;ICW2

OUT 21H,AL

MOV AL,04H????????????????????????? ;ICW3

OUT 21H,AL

MOV AL,01H????????????????????????? ;ICW4

OUT 21H,AL

MOV AL,6FH???????????????????????? ;0CW1

OUT 21H,AL

STI

A1:NOP

JMP A1?????????????????? ;注意這里是一個死循環(huán),是為了體現(xiàn)下面設(shè)置的IR7中斷

IR7:STI

PUSH AX

PUSH BX

PUSH CX

PUSH DX???????????????????????????????????????????????????? ;入棧保護

MOV DL,37H???????????????? ;ascll碼中7是37H

MOV AH,02H

INT 21H

MOV AL,20H?????????????????? ;OCW2

OUT 20H,AL

POP DX

POP CX

POP BX

POP AX????????????????????????????????????????????????????????

IRET


MOV AH,4CH

INT 21H

CODE ENDS

END START

這個代碼是按照書上來寫的,然后參考了一下教程里面內(nèi)容。一開始不清楚那個死循環(huán)的功能,后來才明白,入過沒有這個循環(huán),那么就順序執(zhí)行到下面的IR7了,體現(xiàn)不出這是一個“中斷”

入棧保護的那一段,保險起見,就把四個寄存器全保護起來了。

實驗截圖:


實驗結(jié)果

實驗二:雙中斷優(yōu)先級實驗,KK1和KK2分別連接到主片的8259A的IR7和IR6上,按一次KK1時,顯示屏出現(xiàn)顯示7,按一次KK2時,顯示字符6。由于體現(xiàn)的是中斷優(yōu)先級,所以把實驗連線改為IR7,IR6都接KK1,這樣按動KK1的時候,只要能夠先后的顯示出響應(yīng)結(jié)果,就算是實驗成功了。

中斷代碼:

?? CODE SEGMENT

ASSUME CS:CODE

START:

MOV AX,0000H

MOV ES,AX

MOV DI,3CH

MOV AX,OFFSET IR7

CLD

STOSW

MOV AX,CS

STOSW

MOV DI,38H??????????? ;中斷IR6,0E*4,中斷矢量口

MOV AX,OFFSET IR6

CLD

STOSW

MOV AX,CS

STOSW

CLI

MOV AL,11H?????????????? ????;ICW1

OUT 20H,AL

MOV AL,08H????????????? ?????;ICW2

OUT 21H,AL

MOV AL,04H??????????????????? ;ICW3

OUT 21H,AL

MOV AL,01H??????????????????? ;ICW4

OUT 21H,AL

MOV AL,2FH??????????????????? ;0CW1

OUT 21H,AL

STI

A1:NOP?????????;這里依舊有一個循環(huán)

JMP A1

IR7:STI??????????? ;中斷IR7

PUSH AX

PUSH BX

PUSH CX

PUSH DX

MOV DL,37H

MOV AH,02H

INT 21H

MOV AL,20H??????????????????? ;OCW2

OUT 20H,AL

POP DX

POP CX

POP BX

POP AX????????????????? ;保護以及恢復

IRET


IR6:????????????????????? ;中斷IR6

STI

PUSH AX

PUSH BX

PUSH CX

PUSH DX

MOV DL,36H????????????? ;ASCLL碼6的表示

MOV AH,02H

INT 21H

MOV AL,20H??????????????? ;OCw2

OUT 20H,AL???????????????

POP DX

POP CX

POP BX

POP AX???????????????????????? ;保護以恢復現(xiàn)場

IRET


MOV AH,4CH

INT 21H

CODE ENDS

END START


實驗結(jié)果:


實驗結(jié)果

由實驗結(jié)果可得,IR6的優(yōu)先級是比IR7的高的,這段代碼就是比上一個多了IR6的中斷服務(wù)程序。


實驗三:實現(xiàn)KK1,KK2的加減功能,摁下KK1,實現(xiàn)加一;摁下KK2實現(xiàn)減一。

與實驗二的不同點就是:1.中斷操作不同,可以先給寄存器賦一個初始值,然后中斷中一個進行加一操作INC,一個進行減一操作DEC。2.連線不同,KK1連IR7,KK2連IR6,由于摁下并不同步,所以這里不再有優(yōu)先級的考量了。

CODE SEGMENT

ASSUME CS:CODE

START:

MOV AX,0000H

MOV ES,AX

MOV DI,3CH

MOV AX,OFFSET IR7

CLD

STOSW

MOV AX,CS

STOSW

MOV DI,38H

MOV AX,OFFSET IR6

CLD

STOSW

MOV AX,CS

STOSW

CLI

MOV AL,11H;ICW1

OUT 20H,AL

MOV AL,08H;ICW2

OUT 21H,AL

MOV AL,04H;ICW3

OUT 21H,AL

MOV AL,01H;ICW4

OUT 21H,AL

MOV AL,2FH;0CW1

OUT 21H,AL

MOV DL,37H

STI

A1:NOP

JMP A1



IR7:STI

PUSH AX

PUSH BX

PUSH CX

INC DL


MOV AH,02H

INT 21H

MOV AL,20H;OCW2

OUT 20H,AL


POP CX

POP BX

POP AX

IRET


IR6:

STI

PUSH AX

PUSH BX

PUSH CX


DEC DL

MOV AH,02H

INT 21H

MOV AL,20H

OUT 20H,AL


POP CX

POP BX

POP AX

IRET


MOV AH,4CH

INT 21H

CODE ENDS

END START


實驗結(jié)果:


實驗結(jié)果

【小結(jié)或討論】

這次實驗還是有難度的,周四進行的實驗,周三在課堂上寫的一個題目練習還是大有幫助的,把中斷這一章的知識點都概括一番了。這次試驗主要難點就是mov指令的書寫,課件里面的和書本有些出入,倒不如按著書本來寫,感覺可以利用這次的實驗,當作兩道例題,再加上課堂上的一道題目,好好消化一番,中斷問題應(yīng)該就差不多了。

?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • # 常見匯編代碼 # 1. 編寫程序:比較AX,BX,CX中帶符號數(shù)的大小,將最大的數(shù)放在AX中 code...
    喝豆腐腦加糖閱讀 2,851評論 0 0
  • 王爽匯編全書知識點大綱 第一章 基礎(chǔ)知識 機器語言 匯編語言的產(chǎn)生 匯編語言的組成 存儲器 cpu對存儲器的讀寫 ...
    2c3ba901516f閱讀 2,683評論 0 1
  • 一、基礎(chǔ)知識 mov ax,bx把BX內(nèi)容送到AX中。匯編語言有3類指令,匯編指令、偽指令,其他符號。CPU通過地...
    赤果_b4a7閱讀 2,080評論 0 1
  • 編程語言的發(fā)展 機器語言由0和1組成 匯編語言(Assembly Language)用符號代替了0和1,比機器語言...
    阿凡提說AI閱讀 4,567評論 0 15
  • 傲慢讓別人無法來愛我,偏見讓我無法去愛別人。 ——題記 《傲慢與偏見》這本書講述的是出...
    茹兮yoyi閱讀 589評論 0 0

友情鏈接更多精彩內(nèi)容