由於工作需要,上次要寫個程式從讀取lcd的edid rom上相關資訊,用到一些彙編知識,最近有時間將彙編拿出來翻一番,複習一下,記筆記如下
彙編基礎知識學習整理(一)
國內人寫的很不錯的很易入手的一本書
1.基礎知識
1.cpu要想進行資料的讀寫,必須和外部器件進行資訊互動,
a, 儲存單元的位址(位址資訊)
b,器件的選擇,讀或寫的命令(控制資訊)
c,讀或寫的資料(資料資訊)
那麼就有與上面相對應的三種匯流排,位址線,資料線,控制線。
2.乙個cpu有n根位址匯流排,那麼最多可以定址2的n次方個記憶體單元
3.所有的物理儲存器(諸如顯示卡bios rom,網絡卡bios rom等等)被看作乙個由若干儲存單元組成的邏輯儲存器,每個物理儲存器在這個邏輯儲存器中占有乙個位址段,即一段位址空間。cpu在這段位址空間上讀寫資料實際上就是在相對應的物理儲存器中讀寫資料。
4.8086可以一次性處理兩種尺寸的資料,
一是位元組:byte,乙個位元組由8個bit組成,可以放在8位暫存器中。
二是字,word,乙個字由兩個位元組組成,這兩個位元組分別稱為高位位元組和低位位元組
5.16位結構的cpu具有以下結構特徵:
a,運算器一次最多可以處理16位的資料
b,暫存器最大寬度為16位
c,暫存器和運算器之間的通路為16位
6.8086cpu有20位位址匯流排(達到1mb定址能力)和其是16位的結構是乙個矛盾
8086cpu採用用兩個16位位址來合成乙個20位的位址的辦法來解決,乙個成為段位址,乙個稱為偏移位址
實體地址=段位址*16+偏移位址
偏移位址為16位,16位位址的定址能力為64kb,所以乙個段的最大長度為64kb。
兩種說法:
資料存在記憶體2000:1f60單元中
資料在記憶體的2000段中的1f60的單元中
7.斷暫存器
cs為**段暫存器,ip為指令指標暫存器
任意時刻,cpu將cs:ip指向的內容當作指令執行
8.mov指令不能用於設定cs和ip的值,能夠修改其值的指令被統稱為轉移指令,諸如jmp 2ae3:3
若僅僅想修改ip的內容,則只需 jmp 某一合法暫存器,如:jmp ax(類似move ip,ax,但其實沒有這樣的命令)
9.8086cpu的工作過程簡要描述如下:
a,從cs:ip指向的記憶體單元讀取指令,讀取的指令進入指令緩衝器;
b,ip=ip+所讀指令的長度,從而指向下一條指令
c,執行指令,轉到a,重複
10.8086cpu加電或復位後(即cpu剛剛開始工作時)cs和ip被設定成cs:ffffh,ip被設定成0000h,即機器剛啟動時從 ffff0h記憶體單元讀取指令執行第一條
11.8086cpu中有乙個ds暫存器,通常用來存放要訪問的資料的段位址。
mov bx,1000h mov ds,bx mov a1,[0]
8086cpu不支援將資料直接送進段暫存器
12.棧是一種具有特殊訪問方式的儲存空間。他的特殊性在於,最後進入這個空間的資料最先出去。
lifo(last in first out)
兩種基本操作:入棧(push)和出棧(pop)
13.cpu提供的棧機制:push ax表示將暫存器ax中的資料送入棧中,pop bx表示將從棧頂取出資料放到bx,8086cpu的出棧和入棧操作都是以字為單位進行的
push ax的執行:
a,sp=sp-2,ss:sp指向當前棧頂的前面的的單元,以當前棧頂前面的單元為新的棧頂;
b,將ax中的內容送進 ss:sp指向的記憶體單元,ss:sp此時指向新的棧頂
pop ax的執行正好與push相反
a,將ss:sp指向的記憶體單元的資料送入 ax中
b,sp=sp+2,ss:sp指向當前棧頂下面的單元
15,彙編編譯器可用:微軟masm5.0,聯結器用微軟的overlay linker3.60
可參考他推薦了radasm 這個工具
16.微軟自帶的debug工具的使用
彙編(一) 基礎知識
每一種微處理器,由於硬體和內部結構的不同,需要不同的電平脈衝來進行工作。所以每一種微處理器都有自己的機器指令集,即機器語言。機器語言晦澀難懂,於是產生組合語言。程式設計師用組合語言寫程式,轉化為機器語言後給計算機執行。編譯器將組合語言轉化為機器語言。微機儲存器的容量最小單位為 位元組 乙個儲存單元可...
一 彙編基礎知識
80x86處理器 16位 80386 1985年第乙個32位的處理器 80386有三種工作模式 實模式 相當於乙個可以進行32為快速運算的8086 保護模式 主模式,通過對程式使用的儲存區採用分段,分頁的儲存管理機制,達到分級使用,互不干擾的保護目的,能為每個認為提供一台虛擬處理器,使每個任務單獨執...
彙編學習 6 13 基礎知識
1.組合語言的主體是彙編指令。彙編指令和機器指令的差別在於指令的表示方法上。彙編指令是機器指令便於記憶的書寫格式。2.暫存器 cpu裡可以儲存資料的器件,乙個cpu裡多個暫存器。3.編譯器 乙個能夠將彙編指令轉換成機器指令的翻譯程式。程式設計師用組合語言編寫出源程式,再用彙編編譯器將其編譯為機器碼,...