組合語言 學習筆記 updating

2021-06-27 04:52:23 字數 1755 閱讀 9750

《組合語言》王爽 《ibm-pc組合語言程式設計》學習筆記

為什麼會有組合語言?因為機器碼難記,難改錯,所以出現了組合語言,即用更自然的語言表示機器碼。 由組合語言到機器語言需要編譯器的參與,我們在寫組合語言的時候不僅寫彙編的指令,還寫一些偽指令,這些偽指令是計算機不會執行的,其他的一些運算符號也是由編譯器識別,而沒有對應的機器碼。

儲存器是資料和指令儲存的地方,就像人類的記憶系統。名字不一樣,但對計算機而言,指令和資料是沒有差別的,它們都是以二進位制的方式儲存。(那麼cpu如何知道它是程式還是指令呢?)cpu可以直接使用的資訊就存放在儲存器中。

好,接下來,cpu要開始對資料進行讀寫了。它怎麼知道資料在**呢?所以需要儲存位址;是要進行讀操作還是寫操作呢?所以需要控制指令,資料又如何進行傳輸呢?這三種資訊都有匯流排進行傳輸。邏輯上分為三種匯流排,是三種,不是三根。

位址匯流排,每根線有兩種穩態,高和低,即1和0;n根線能夠表示2的n次方個位址資料

資料匯流排傳送大小同理。

記憶體位址空間,cpu通過匯流排與外圍儲存器(ram,rom)相連線,在cpu看來,不同的裝置都是一樣的儲存器,都當它們是記憶體。即形成了乙個邏輯上的儲存器。當然,它是假想的。

cpu工作原理這句話是什麼意思?由暫存器實現cpu的功能嗎?改變暫存器實現對cpu的控制,什麼意思?改變cpu中暫存器中的值,也就是控制本身了嗎?

實體地址的獲得,因為20與16的矛盾,使用所以需要兩16來拼為20,即乙個16左移一位,與另乙個16相加。實體地址=基礎位址(

段位址*16)+偏移位址。

and or 指令

大小寫轉化 無法用現在已經學過的知識解決,就重新觀察,尋找規律。

[bx+idata] 陣列結構 高階語言提供便利

idata[si/di]

2[si] 3[si] 從不同的地方開始,但每次偏移數相同 

不同定址方式的靈活運用

從更加結構化的角度來看待所要處理的資料

一般來說,在需要暫存資料的時候,我們都應該使用棧。

資料:資料在**?有多大?

--------

疑問:

我們給儲存單元編號,而現實中不是沒有真的編號嗎?計算機是如何識別不同位置的呢?位址資訊,由位址匯流排傳輸。

規定固定的機器碼對應固定的操作,指令。

晶元是什麼?外圍晶元組是什麼?

為什麼8086cpu有20位的位址匯流排,卻只有16位的cpu結構?這不是很矛盾嗎?

所以有實模式定址方式。

8086cpu為什麼不支援將資料直接送入段暫存器呢?這屬於硬體設計問題。(==) ?

word ptr指定型別

如何判斷乙個指令的長度?

—————————————————

巨集彙編就像模組化的函式,直接進行呼叫,實現一定的功能。

-------------

lable:

buffer1 lable word

buffer2 db 20 dup(?)

同一資料定義了兩種型別,使得資料匹配。

this:

buffer1 equ this word

buffer2 db 20 dup(0)

mov ax,buffer1相對於 mov ax,word ptr buffer2

例題:

組合語言學習筆記

學習參考資料 大灰狼 講彙編 資料匯流排,位址匯流排,控制匯流排。位址匯流排有多少條就決定了cpu最大的記憶體使用量。80386有32位位址匯流排,所以它的定址能力就是4g.暫存器 通用暫存器,段暫存器,ax暫存器 通用暫存器,存放資料。高位位元組ah,低位位元組al。實體地址表示方法 位址加法器,...

組合語言學習筆記

cs ip是指向程式執行的位置 code segment ds 儲存記憶體中取資料的位址,data segment ss sp是指向堆疊的位置 stack segment cx 裡儲存的是loop執行的標誌 loop執行時,cx cx 1,若此時cx裡值為0,則跳出loop,否則繼續loop 初始 ...

組合語言學習筆記

編譯下面的程式,生成列表檔案,觀察標號在機器碼中變成了什麼?小組中的同學都說一說,說出你看到了什麼,說出你的疑問,讓小夥伴們一起解決。下面是程式 這個程式的功能沒有意義,只用於觀察程式中的標號 assume cs codesg,ds datasg datasg segment a db 1,2,3,...