您好,登錄后才能下訂單哦!
1.端口的讀寫
在PC系統(tǒng)中,除和CPU通過總線相連的芯片(內(nèi)存芯片)之外,還有3類芯片:
(1)各接口卡(網(wǎng)卡、顯卡)上的接口芯片,他們控制接口卡進(jìn)行工作
(2)主板上的接口芯片,CPU通過它們對部分外省進(jìn)行訪問
(3)其他芯片,用來存儲相關(guān)的系統(tǒng)信息,或進(jìn)行相關(guān)的輸入、輸出處理
這些芯片都有一組可以由CPU讀寫的寄存器,這些寄存器物理上處于不同芯片中,但是都與CPU總線相連,可以通過CPU總線對他們進(jìn)行控制,從CPU角度,將這些寄存器都稱為端口,對他們進(jìn)行統(tǒng)一編址,從而建立了一個統(tǒng)一的端口地址空間,每一個端口在地址空間中都有一個地址。
總結(jié),CPU可以直接讀寫以下三個地方的數(shù)據(jù):
(1)CPU內(nèi)部寄存器,在CPU內(nèi)部
(2)內(nèi)存單元,直接連在CPU上
(3)端口
端口地址和內(nèi)存地址一樣,都通過地址總線來傳送。在PC系統(tǒng)中,最多可以定位64K個不同端口,他們的端口范圍是:0~65535。
對端口的讀寫不能用mov、push、pop,應(yīng)該用in和out
in al,60h ;從60h端口讀入一個接
執(zhí)行過程:
(1)CPU通過地址總線將信息60h發(fā)出
(2)CPU通過控制總線發(fā)出端口讀命令,選中端口所在芯片,并通知他讀取數(shù)據(jù)
(3)端口所在的芯片將60h端口中的數(shù)據(jù)通過數(shù)據(jù)總線送入CPU
in、out指令,只能用ax和al來讀寫端口,8位用al,16位用ax
0 ~ 255端口讀寫:
in al,20h ;從20h端口讀入一個字節(jié)
out 20h,al ;往20h端口寫入一個字節(jié)
256 ~ 65535端口讀寫:
mov dx,3f8h ;將端口號3f8h送入dx
in al,dx ;從3f8h讀取一個字節(jié)
out dx,al ;向3f8h寫入一個字節(jié)
CMOS RAM芯片:PC機(jī)上有個CMOS RAM芯片,簡稱CMOS,此芯有一個實時時鐘和一個RAM存儲器,此芯片靠電池供電,因此關(guān)機(jī)后數(shù)據(jù)不丟失,CPU用過70h,和71h訪問CMOS的RAM。CMOS RAM中存放著當(dāng)前的時間:年、月、日、時、分、秒。
2.外部中斷
外部中斷源主要有2種,可屏蔽中斷和不可屏蔽中斷。
可屏蔽中斷是CPU可以不響應(yīng)的外中斷,主要看flag寄存器的IF位。處理過程:
(1)取中斷號
(2)flag寄存器入棧,IF=0,TF=0
(3)CS、IP入棧
(4)(IP) = (n4) ,(CS)=(n4 + 2)
設(shè)置IF的指令:sti,設(shè)置IF=1,cli,設(shè)置IF=0
不可屏蔽中斷是CPU必須處理的中斷,中斷號固定為2,執(zhí)行過程
(1)標(biāo)志寄存器入棧,IF=0,TF=0
(2)CS、IP入棧
(3)(IP) = (8) ,(CS)=(0AH)
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。