各種儲存器都和cpu的位址線、資料線、控制線相連。cpu在操控它們的時候,把它們都當作記憶體來對待,把它們總地看做乙個由若干儲存單元組成的邏輯儲存器,這個邏輯儲存器稱其為記憶體位址空間。
在pc機系統中,和cpu通過匯流排相連的晶元除各種儲存器外,還有以下3種晶元:
各種介面卡(比如,網絡卡、顯示卡)上的介面晶元,它們控制介面卡進行工作;
主機板上的介面晶元,cpu通過它們對部分外設進行訪問;
在這些晶元中,都有一組可以由cpu 讀寫的暫存器。這些暫存器,它們在物理上可能處於不同的晶元中,但是它們在以下兩點上相同:
都和cpu的匯流排相連,當然這種連線是通過它們所在的晶元進行的;
cpu對它們進行讀或寫的時候都通過控制線向它們所在的晶元發出埠讀寫命令。
從cpu的角度,將這些暫存器都當作埠,對它們進行統一編址,從而建立了乙個統一的埠位址空間。每乙個埠在位址空間中都有乙個位址。
cpu可以直接讀寫以下3個地方的資料:
cpu內部的暫存器;
記憶體單元;
埠。在訪問埠的時候,cpu通過埠位址來定位埠。因為埠所在的晶元和cpu通過匯流排相連,所以,埠位址和記憶體位址一樣,通過位址匯流排來傳送。在pc系統中,cpu最多可以定位64kb個不同的埠。則埠位址的範圍為0~65535。
對埠的讀寫不能用mov、push、pop等記憶體讀寫指令。埠的讀寫指令只有兩條:
in和out,分別用於從埠讀取資料和往埠寫入資料。
cpu執行記憶體訪問指令和埠訪問指令時候,匯流排上的資訊:
pc機中,有乙個cmos ram晶元,一般簡稱為cmos。此晶元的特徵如下:
包含乙個實時鐘和乙個有128個儲存單元的ram儲存器(早期的計算機為64個位元組)。
該晶元靠電池供電。所以,關機後其內部的實時鐘仍可正常工作,ram中的資訊不丟失。
128個位元組的ram中,內部實時鐘占用o~odh單元來儲存時間資訊,其餘大部分單元用於儲存系統配置資訊,供系統啟動時bios程式讀取。bios也提供了相關的程式,使我們可以在開機的時候配置cmos ram中的系統資訊。
該晶元內部有兩個埠,埠位址為70h和71h。cpu通過這兩個埠來讀寫cmos ram。
70h為位址埠,存放要訪問的cmos ram 單元的位址; 71h為資料埠,存放從選定的cmos ram單元中讀取的資料,或要寫入到其中的資料。可見,cpu對cmos ram的讀寫分兩步進行,比如,讀cmos ram的2號單元:1. 將2送入埠70h;2. 從埠71h讀出2號單元的內容。
shl和shr是邏輯移位指令。
功能:(1) 將乙個暫存器或記憶體單元中的資料向左移位;
(2) 將最後移出的一位寫入cf中;
(3) 最低位用0補充。
再次執行一條shl al,1
一次左移多位
繼續執行一條shr al,l,則執行後:(al)=00100000b,cf=0
如果移動位數大於1時,必須將移動位數放在cl中
乙個位元組可表示兩個bcd碼。則cmos ram儲存時間資訊的單元中,儲存了用兩個bcd碼表示的兩位十進位制數,高4位的bcd碼表示十位,低4位的bcd碼表示個位。比如,00010100b表示14。
1.從cmos ram的8號單元讀出當前月份的bcd碼。
mov al,8
out 70h,al
然後從資料埠71h中取得指定單元中的資料:
in al,7lh
2.將用bcd碼表示的月份以十進位制的形式顯示到螢幕上。
bcd碼值=十進位制數碼值,則bcd碼值+30h=十進位制數對應的ascii碼。
從cmos ram的8號單元讀出的乙個位元組中,包含了用兩個bcd碼表示的兩位十進位制數,高4位的bcd碼表示十位,低4 位的bcd碼表示個位。比如,00010100b表示14。
(1)將從cmos ram的8號單元中讀出的乙個位元組,分為兩個表示bcd碼值的資料。
mov ah,al ;al中為從cmos ram的8號單元中讀出的資料
mov cl,4
shr ah,cl ;ah中為月份的十位數碼值
and al,00001111b ;al中為月份的個位數碼值
(2)顯示(ah)+30h和(al)+30h對應的ascii碼字元。
assume cs:code
code segment
start: mov al,8
out 70h,al
in al,7lh
mov ah,al
mov cl,4
shr ah,cl
and al, 00001111b
add ah,30h
add al,30h
mov bx ,0b800h
mov es,bx
mov byte ptr es:[160*12+40*2],ah ;顯示月份的十位數碼
mov byte ptr es:[160*12+40*2+2],al ;接著顯示月份的個位數碼
mov ax,4c00h
int 21h
code ends
end start
組合語言筆記14 埠
cpu直接讀寫資料的地方 cpu內部的暫存器 記憶體單元 各種儲存器都和 cpu的位址線 資料線 控制線相連,cpu把它們當做記憶體,看作乙個邏輯儲存器 記憶體位址空間 埠 除了儲存器外,和cpu的匯流排相連的還有下面3中晶元。1 各種介面卡 如網絡卡 顯示卡 上的介面晶元,它們控制介面卡進行工作 ...
組合語言 第14章 埠
14.1 埠的讀寫 注意 在in 和 out 指令中,只能使用ax 或 al 來存放從埠中讀入的資料或要傳送到埠中的資料。訪問8位埠時用al,訪問16位埠時用ax。14.2 cmos ram 晶元 pc機中,有乙個cmos ram 晶元,一般簡稱cmos.晶元特徵如下 1 包含1個實時鐘和1個128...
筆記 組合語言 第14章 埠
14.0 概述 pc機系統中,和cpu通過匯流排相連的晶元除了各種儲存器外,還有以下3種晶元 1 各種介面卡 如網絡卡,顯示卡 上的的介面晶元,它們控制介面卡進行工作 2 主機板上的介面晶元,cpu通過他們對部分外設進行訪問 3 其他晶元,用來儲存相關的系統資訊,或進行相關的輸入輸出處理 在這些晶元...