端口---汇编学习笔记
端口
在PC機系統中,和CPU通過總線相連的芯片除各種存儲器外,還有以下3種芯片。
在這些芯片中,都有一組可以由CPU讀寫的寄存器。這些寄存器,它們在物理上可能處于不同的芯片中,但是它們在以下兩點上相同。
CPU可以直接讀寫以下3個地方的數據
14.1 端口的讀寫
在訪問端口的時候,CPU通過端口地址來定位端口。因為端口所在的芯片和CPU通過總線相連,所以,端口地址和內存地址一樣,通過地址總線來傳送。在PC系統中,CPU最多可以定位64KB個不同端口。則端口地址的范圍為0~65535。
對端口的讀寫不能用mov、push、pop等內存讀寫指令。端口的讀寫指令只有兩條: in和out ,分別用于端口讀取數據和往端口寫入數據。
訪問端口:in al,60h ;從60h號端口讀入一個字節
對0~255以內的端口進行讀寫時:
in al,20h ;從20h端口讀入一個字節 out 20h,al ;往20h端口寫入一個字節對256~65535的端口進行讀寫時,端口號放在dx中:
mov dx,3f8h ;將端口號3f8h送入dx in al,dx ;從3f8h端口讀入一個字節 out dx,al ;向3f8h端口寫入一個字節14.2 CMOS RAM芯片
CMOS芯片特征如下:
檢測點 14.1
(1)編程,讀取CMOS RAM的2號單元的內容。
答:2號單元的內容為0。
(2)編程,向CMOS RAM的2號單元寫入0。
答:1.mov al,0,2.out 2,al
14.3 shl和shr指令
shl和shr是邏輯移位指令。
shil是邏輯左移指令,它的功能為:
shr是邏輯右移位指令,功能剛剛相反
以上兩點都太簡單,不做闡述
檢測點 14.2
編程,用加法和移位指令計算(ax)=(ax)?10(ax)=(ax)?10。(提示,(ax)?10=(ax)?2+(ax)?8(ax)?10=(ax)?2+(ax)?8)
步驟如下(左移位一個bit是乘2):
14.4 CMOS RAM中存儲的時間信息
在CMOS RAM中,存放著當前的時間:年、月、日、時、分、秒。這6個信息的長度都為1個字節,存放單元為:秒:0、分:2、時:4、日:7、月:8、年:9
這些數據以BCD碼的方式存放。
| 0 | 0000 |
| 1 | 0001 |
| … | … |
| 9 | 1001 |
這里有一個例子,自己閱讀,略過咯。
實驗14 訪問CMOS RAM
編程,以“年/月/日 時:分:秒”的格式,顯示當前的日期、時間。
寫的很粗糙,可以復用性的。將987420放入data段中,s子程序是將字符串處理后的結果放入data段中,lo是將字符串顯示出來,改進版本可以用0作為結束。
實驗結果:
總結
以上是生活随笔為你收集整理的端口---汇编学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 面向人工智能“新基建”的知识图谱行业白皮
- 下一篇: 面试题,如何让你从0-1的做一款产品出来