汇编语言笔记14-端口
?CPU直接讀寫數(shù)據(jù)的地方
各種存儲(chǔ)器都和CPU的地址線、數(shù)據(jù)線、控制線相連,CPU把它們當(dāng)做內(nèi)存,看作一個(gè)邏輯存儲(chǔ)器(內(nèi)存地址空間)。
除了存儲(chǔ)器外,和CPU的總線相連的還有下面3中芯片。
(1). 各種接口卡(如網(wǎng)卡、顯卡)上的接口芯片,它們控制接口卡進(jìn)行工作;
(2). 主板上的接口芯片,CPU通過它們對(duì)部分外設(shè)進(jìn)行訪問;
(3). 其他芯片,用來存儲(chǔ)相關(guān)的系統(tǒng)信息,或者進(jìn)行相關(guān)的輸入輸出處理。
這些芯片中,都有一組可以由CPU讀寫的寄存器,物理上處于不同的芯片中;但是從CPU的角度看,CPU對(duì)它們進(jìn)行讀寫操作都是通過控制線向它們所在的芯片發(fā)出端口讀寫命令[CPU將這些寄存器當(dāng)做端口,對(duì)它們進(jìn)行統(tǒng)一編址,從而建立了一個(gè)統(tǒng)一的端口地址空間,每個(gè)端口在地址空間中都有一個(gè)地址]。
? ?
PS:寄存器的功能十分重要,CPU對(duì)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行處理時(shí),往往先把數(shù)據(jù)取到內(nèi)部寄存器中,而后再作處理。外部寄存器是計(jì)算機(jī)中其它一些部件上用于暫存數(shù)據(jù)的寄存器,它與CPU之間通過"端口"交換數(shù)據(jù),外部寄存器具有寄存器和內(nèi)存儲(chǔ)器雙重特點(diǎn)。有些時(shí)候我們常把外部寄存器就稱為"端口",這種說法不太嚴(yán)格,但經(jīng)常這樣說。
??
?端口的讀寫
(1). in和out指令中,只能使用ax或者al來存放從端口中讀入的數(shù)據(jù)或者要發(fā)送給端口中的數(shù)據(jù);
(2). 對(duì)于256~65536的端口號(hào)需要放在dx中。
| 端口號(hào) | 讀 | 寫 |
| 0~255 | in al, 20h ; 從20h端口讀入一個(gè)字節(jié) | out 20h, al ; 往20h端口寫入一個(gè)字節(jié) |
| 256~65536 | mov dx, 3f8h in al, dx ; 從3f8h端口讀入一個(gè)字節(jié) | mov dx, 3f8h |
??
?shl和shr指令
| 指令 | 實(shí)現(xiàn)功能 | 示例1(移動(dòng)1位) | 示例2(移動(dòng)n位) |
| 邏輯左移: shl | (1). 將一個(gè)寄存器或者內(nèi)存單元中的數(shù)據(jù)向左移位; (2). 將最后移出的一位寫入CF中; (3). 最低位用0補(bǔ)充. | mov al, 01001000b shl al, 1 | mov al, 01001000b mov cl, 3 shl al, cl ;(必須放在cl中) |
| 邏輯右移: shr | (1). 將一個(gè)寄存器或者內(nèi)存單元中的數(shù)據(jù)向右移位; (2). 將最后移出的一位寫入CF中; (3). 最高位用0補(bǔ)充. | mov al, 01001001b shr al, 1 | mov al, 01001000b mov cl, 3 shr al, cl ;(必須放在cl中) |
??
?CMOS RAM芯片的操作
PC機(jī)上,微機(jī)主板上有一塊可讀寫的RAM芯片,來保存當(dāng)前系統(tǒng)的硬件配置和用戶對(duì)某些參數(shù)的設(shè)定。該芯片靠電池供電,關(guān)機(jī)后內(nèi)部的實(shí)時(shí)鐘仍可以正常工作。
現(xiàn)在的廠商把BIOS程序做到了CMOS芯片中,當(dāng)開機(jī)時(shí)就可按特定鍵進(jìn)入CMOS設(shè)置程序?qū)ο到y(tǒng)進(jìn)行設(shè)置。所以又被人們叫做BIOS設(shè)置。
CMOS RAM芯片上還包含一個(gè)實(shí)時(shí)鐘,該芯片內(nèi)部有兩個(gè)端口,端口地址為70h和71h。CPU通過這兩個(gè)端口讀
總結(jié)
以上是生活随笔為你收集整理的汇编语言笔记14-端口的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 汇编语言笔记17-使用BIOS进行键盘输
- 下一篇: 硬盘和显卡的访问与控制(一)——《x86