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