汇编学习(一)
看的是王爽老師的《匯編語言》第三版
這些都是我對王爽老師《匯編語言》第一章的總結(jié),有不對的地方還請多指教;書中前言真是寫到心坎了,也是我的瓶頸,學(xué)習(xí)框架也好語言也好總是沒有深度,這是因?yàn)槲议_始學(xué)習(xí)編程就沒走一個(gè)循序漸進(jìn)的路線,所以導(dǎo)致知識不成體系不夠扎實(shí),不想做編程界的泥腿子,向成為一名真·程序員前進(jìn);
基礎(chǔ)知識
一.匯編語言的誕生
上古時(shí)期在匯編語言還未出現(xiàn)的時(shí)候,那時(shí)的程序員還只能用二進(jìn)制也就是所謂的機(jī)器語言寫代碼,將0和1編成的程序代碼打在紙帶或卡片上,再將紙帶卡片輸入計(jì)算機(jī),進(jìn)行運(yùn)算;代碼相當(dāng)抽象,查錯(cuò)就更難了;難以辨別和記憶成為了機(jī)器語言的瓶頸;
但是怎么可能會有問題能難住程序員呢,于是匯編語言誕生了!
二.匯編語言VS機(jī)器語言
匯編語言的主體是匯編指令,它相比機(jī)器指令更容易書寫和記憶;例如
| mov ax,bx | 1000100111011000 | 寄存器BX的內(nèi)容送到AX |
先不用關(guān)心這指令,一眼就看出如果寫代碼只能從匯編語言和機(jī)器語言選一個(gè)的話我肯定選匯編;
當(dāng)然匯編語言無法直接讓計(jì)算機(jī)運(yùn)行,它需要編譯成機(jī)器碼然后在讓計(jì)算機(jī)運(yùn)行;
三.匯編語言的組成
- 匯編指令:機(jī)器碼的助記符,有對應(yīng)的機(jī)器碼;
- 偽指令 : 沒有對應(yīng)的機(jī)器碼,由編譯器執(zhí)行,計(jì)算機(jī)并不執(zhí)行;
- 其他符號:如加減乘除符號,也是由編譯器識別,沒有對應(yīng)的機(jī)器碼;
四.CPU與儲存器
- cpu可以直接使用的信息在存儲器(內(nèi)存)中存放;(這里我狠查了一波CPU能否直接從硬盤拿數(shù)據(jù),但是發(fā)現(xiàn)資料方向慢慢走向了操作系統(tǒng)所以就沒深入下去)
- 在存儲器中指令和數(shù)據(jù)沒有任何區(qū)別都是二進(jìn)制;(后面的學(xué)習(xí)會寫到CPU如何區(qū)分?jǐn)?shù)據(jù)和指令)
- 存儲器的大小跟它存儲單元的多少有關(guān),一個(gè)存儲單元可以存儲一個(gè)字節(jié),從零開始編號;
- 連接CPU與其他芯片的導(dǎo)線稱為總線,總線從邏輯上又分三類,地址總線,控制總線,數(shù)據(jù)總線;
地址總線
在計(jì)算機(jī)中一根導(dǎo)線可以傳送兩種穩(wěn)定狀態(tài)高電平,低電平,用二進(jìn)制表示就是0和1;如果有十根地址總線,那么它就能表示2的十次方個(gè)不同數(shù)據(jù),編號從0到1023;這也是CPU能找到的地址范圍;數(shù)據(jù)總線
數(shù)據(jù)總線的寬度決定了CPU與外界數(shù)據(jù)傳輸?shù)乃俣?#xff1b;一根數(shù)據(jù)總線能傳1bit二進(jìn)制數(shù)據(jù),如果傳送數(shù)據(jù)超過數(shù)據(jù)總線一次能傳送數(shù)據(jù)的最大值,那就得分批傳了;例如只有一根數(shù)據(jù)總線,要傳個(gè)3過去,那只能一次傳0010,第二次傳0001,分兩次傳完;控制總線
CPU對外部器件的控制通過控制總線來進(jìn)行,例如需要讀取和寫入數(shù)據(jù)到內(nèi)存,那么就需要一根讀取控制線,和一根寫入控制線;其實(shí)這些是在為CPU如何對存儲器進(jìn)行讀寫做鋪墊
年輕的時(shí)候送過快遞感覺作為例子很貼切;
企鵝男孩是一名快遞員,他每天的工作就是把貨物送到規(guī)定的地址;這里企鵝男孩就是CPU,貨物就是數(shù)據(jù)信息,貨物的地址就是存儲單元的地址信息,而送快遞這個(gè)動作就是傳達(dá)的控制信息;送快遞簡直和CPU讀寫存儲器如出一轍;
- 1.CPU需要確定存儲單元的地址;(快遞員確定貨物地址)
- 2.器件選擇,讀取信息還是寫入信息;(快遞也是一樣,你是要給客戶去送快遞還是給客戶發(fā)個(gè)快遞);
- 3.讀或?qū)懙臄?shù)據(jù);(送到的快遞,或者收回的快遞)
這些都是我對王爽老師《匯編語言》第一章的總結(jié),有不對的地方還請多指教;書中前言真是寫到心坎了,也是我的瓶頸,學(xué)習(xí)框架也好語言也好總是沒有深度,這是因?yàn)槲议_始學(xué)習(xí)編程就沒走一個(gè)循序漸進(jìn)的路線,所以導(dǎo)致知識不成體系不夠扎實(shí),不想做編程界的泥腿子,向成為一名真·程序員前進(jìn);
總結(jié)
- 上一篇: 关于数据结构(二)
- 下一篇: libco协程库源码解读