彙編(8259A的初始化多片)

2022-02-19 02:48:20 字數 2489 閱讀 1259

1、主從式8259a的初始化設定:

初始化設定如下:

(1)中斷觸發方式:邊沿觸發

(2)中斷遮蔽方式:常規遮蔽方式,即使用ocw1向imr寫屏碼

(3)中斷優先順序排隊方式:固定優先順序的完全巢狀方式

(4)中斷結束方式:非自動結束方式的兩種命令格式

即:不指定eoi方式、指定eoi方式

在中斷服務程式完畢時和中斷返回之前,用結束命令**20h或6xh結束中斷。

(5)級聯方式:兩片主/從連線

從片的中斷輸出引腳int連到主片的中斷請求輸入引腳ir2上,兩片級聯處理15級中斷。

(6)15級中斷的中斷號分配:

irq0  08h    irq1  09h

irq2  0ah    irq3  0bh

irq4  0ch    irq5  0dh

irq6  0eh    irq7  0fh

irq8  70h    irq9  71h

irq10  72h    irq11  73h

irq12  74h    irq13  75h

irq14  76h    irq15  77h

2、初始化8259a主片解析:

根據以上硬體連線,系統上電後,對8259a初始化的程式段為:

(1)icw1的功能:

a7、a6、a5:全為0

d4:為1

d3為0:邊沿觸發

d1為0:級聯

d0為1:需要icw4

所以這句話的意思是:邊沿觸發,級聯(多片),需要icw4

(2)icw2的功能:

mov al,8

相當於將d3置高電平,代表中斷號的高五位。

(3)主片的icw3:

mov al,04h

相當於將主片的ir2上接從片。

d4:特殊全巢狀方式

d3、d2:非緩衝方式

d1:非自動結束中斷

d0:處理器選擇

所以這句話的意思是:非緩衝,全巢狀,非自動結束中斷

3、初始化8259a的從片解析:

3、級聯情況下主片初始化與從片初始化的異同:

4、初始化的程式段:

inta00 equ 020h     ;8259a主片埠(a0=0

) inta01 equ 021h ;8259a從片埠(a1=0

)... ...

mov al,11h ;icw1

out inta00,al

jmp short $ +2

mov al,

8;icw2

out inta01,al

jmp short $ +2

mov al,04h ;icw3,主片的 ir2接上從片

out inta01,al

jmp short $ +2

mov al,01h ;icw4

out inta01,al

... ...

intb00 equ 0a0h ; 8259a從片埠(a0=0

)intb01 equ 0a1h ; 8259a從片埠(a0=1

)... ...

mov al,11h

out intb00,al

jmp short $ +2

mov al,70h

out intb01,al

jmp short $ +2

mov al,02h ;從片接主片的 ir2

out intb01,al

jmp short $ +2

mov al,01h

out intb01,al

... ...

初始化 關於tensorflow的初始化

在寫mnist手寫體識別任務 已放github 時遇到的 問題 我們都知道在session run的時候需要初始化。但是初始化在什麼位置是至關重要的。來看下這段 sess tf.session sess.run tf.global variables initializer mnist model ...

從彙編看c 初始化列表初始化成員變數

簡略來說,編譯器會對初始化列表按照成員變數的宣告順序重新一一排序,安插到建構函式中進行初始化操作,而且這些初始化操作在建構函式裡面使用者自己定義的任何 之前。下面是c 原始碼 class x intmain 下面是main函式裡面的彙編碼 13 int main xoreax,eax movesp,...

初始化列表成員變數的初始化

對於以下程式 include using namespace std class base base b 0 a b int get a int get b int main 本想得到的結果是a,b都為90。但是實際結果卻是 4273046 90process returned 0 0x0 exec...