彙編學習 一

2021-09-14 04:32:57 字數 1648 閱讀 7339

看的是王爽老師的《組合語言》第三版
基礎知識

一.組合語言的誕生

上古時期在組合語言還未出現的時候,那時的程式設計師還只能用二進位制也就是所謂的機器語言寫**,將0和1編成的程式**打在紙帶或卡片上,再將紙帶卡片輸入計算機,進行運算;**相當抽象,查錯就更難了;難以辨別和記憶成為了機器語言的瓶頸;

但是怎麼可能會有問題能難住程式設計師呢,於是組合語言誕生了!

二.組合語言vs機器語言

組合語言的主體是彙編指令,它相比機器指令更容易書寫和記憶;
例如

彙編指令

機器指令

操作mov ax,bx

1000100111011000

暫存器bx的內容送到ax

先不用關心這指令,一眼就看出如果寫**只能從組合語言和機器語言選乙個的話我肯定選彙編;

當然組合語言無法直接讓計算機執行,它需要編譯成機器碼然後在讓計算機執行;

三.組合語言的組成

彙編指令容易理解,至於偽指令和其他符號他們既然沒有對應的機器碼計算機也不執行為什麼要有它們呢?上文寫到組合語言需要編譯成機器語言後才能被計算機執行,這原因其中之一就是為了

協助編譯器編譯彙編源**,其二就是為了彙編源**更好的

可讀性;

四.cpu與儲存器

位址匯流排

在計算機中一根導線可以傳送兩種穩定狀態高電平,低電平,用二進位制表示就是0和1;如果有十根位址匯流排,那麼它就能表示2的十次方個不同資料,編號從0到1023;這也是cpu能找到的位址範圍;

資料匯流排

資料匯流排的寬度決定了cpu與外界資料傳輸的速度;

一根資料匯流排能傳1bit二進位制資料,如果傳送資料超過資料匯流排一次能傳送資料的最大值,那就得分批傳了;例如只有一根資料匯流排,要傳個3過去,那只能一次傳0010,第二次傳0001,分兩次傳完;

控制匯流排

cpu對外部器件的控制通過控制匯流排來進行,例如需要讀取和寫入資料到記憶體,那麼就需要一根讀取控制線,和一根寫入控制線;

其實這些是在為cpu如何對儲存器進行讀寫做鋪墊

年輕的時候送過快遞感覺作為例子很貼切;

企鵝男孩是一名快遞員,他每天的工作就是把貨物送到規定的位址;這裡企鵝男孩就是cpu,貨物就是資料資訊,貨物的位址就是儲存單元的位址資訊,而送快遞這個動作就是傳達的控制資訊;送快遞簡直和cpu讀寫儲存器如出一轍;

這些都是我對王爽老師《組合語言》第一章的總結,有不對的地方還請多指教;書中前言真是寫到心坎了,也是我的瓶頸,學習框架也好語言也好總是沒有深度,這是因為我開始學習程式設計就沒走乙個循序漸進的路線,所以導致知識不成體系不夠紮實,不想做程式設計界的泥腿子,向成為一名真·程式設計師前進;

彙編學習 一

1.工作這幾年中儘管都是使用c c 但有時跟蹤bug最後都是到彙編中。而那部分 大部分都無法看懂 2.還有近期在搞反彙編。也須要一些彙編的知識 3.程式有時候執行較慢。彙編可能更直接些1.先找一本基礎教程 intel組合語言程式設計 2.開始最簡單的c 中嵌入彙編 3.寫c 函式下斷點,用vc帶的反...

at t彙編學習(一)

工作一年了,很是迷茫,乙個程式設計師不知到何去何從,現在網際網路上每天都會出現大量的程式語言,大量的新技術,感覺沒有自己的方向。找不到方向就積累知識。at t組合語言的基本框架如下所示 section data section text globl start start movl 1,eax mo...

arm彙編學習 一

之前斷斷續續看arm,啥也沒學到的感覺。開始系統學習arm,堅持下來,從arm開發環境,到arm模擬器實際執行。gnu as彙編編譯語法 摘自skyeye arm hello的 start.s define mode svc 0x13 define i bit 0x80.text align 4.g...