大一新生如何學習組合語言?

時間 2021-06-17 05:00:58

1樓:JeepCar

是哪個學校?大一讓你們學彙編?如果是學校安排你們學,這安排有問題。

如果是選修課,那還是不要選。如果是計算機專業,可以先學C語言,然後與《計算機組成》一起學組合語言。如果不是計算機專業,基本上不用學彙編。

真的很想學彙編,那建議還是學X86彙編,裝個XP系統,或者裝個dosbox,執行debug,可以直觀了解組合語言的各種概念與指令的執行。不然,你要背的東西就太多了。

2樓:P2Tree

學習組合語言中很大一部分內容其實是學習機器的指令集架構,一定不要只停留在學習語言的語法表達上,這是相對次要的東西。指令集架構是一種機器的硬體向軟體的介面,也就是提供給軟體開發人員來操作硬體的方式。

所以,你學習組合語言,實際上要重點學習某一類機器的硬體體系結構

組合語言相比其他高階程式語言要簡單的很多,你需要懂的無非就是:指令、段表達(記憶體空間)、符號、偽指令這幾種東西的格式,往往這些都能在機器的彙編手冊中查到。我這裡想說的指令其實是通用的表達格式,而不是具體某個指令怎麼寫。

Mips 其實是很簡單的一種機器,作為初學體系結構是非常合適的。要說它和其他機器組合語言的差別,要看什麼層次,微觀差別很大,因為指令集不同、硬體結構不同,對應的語言語法、程式設計模型就會不同;

從巨集觀上說,其實都是差不多的,當你已經熟悉 Mips 組合語言之後,再去學習其他機器的彙編會容易很多,因為你已經懂了指令語法怎麼讀,程式流怎麼看,暫存器的關係,記憶體空間訪問這些概念。

書中很多細節的東西,不用死記硬背(當然如果是考點那沒辦法),尤其是編碼,編寫組合語言不需要考慮編碼,這是交給彙編器做的事情。實際工程上,如果你是彙編應用軟體編寫者,你也不需要過分擔心編碼;如果你是彙編器開發者,編碼也是隨用隨查。

不過你的書裡邊,雖然不需要記憶某一類指令的編碼,但卻需要記憶有哪幾類指令,每一類指令的特點,這些知識會有助於你更隨心編寫匯程式設計序,畢竟同樣的功能,通常可以用不同的指令實現,但實現效果卻可能會差很多。

我認為學習組合語言不要拿著組合語言的書來看,因為彙編是和機器強繫結的,任何一本介紹組合語言的書,其實都是在介紹機器體系結構(很多介紹的還很淺顯不專業),順帶介紹語法,常見的比如 X86 機器(似乎最多),Mips 機器,Arm 機器等。

如果這本看過了,可以再看他們倆寫的另一本書:

不急,慢慢啃,比看其他啥書都有用。不懂專業術語就去第一本書裡找,工作原理嘛,如果你想知道組合語言的工作原理,得去看編譯原理的書,那是另外乙個話題了。

如果想真心學好組合語言,提高計算機程式設計素養,一定要熟悉機器體系結構,不要一味的往上層衝,比如什麼帥氣的軟體棧、程式庫,這些都可以看做是封裝。真正的大牛,要不就是在底層深耕,要不就是有紮實的底層基礎之後去再架設高層。

ps:如果是為了考試的話,該死記硬背也逃不了,但應付大學期末考試很容易的。

最後,想緬懷一下 Mips,Mips 公司已經決定在最新的版本中採用 RISC-V 架構了,且學且珍惜。

生物專業的大一新生如何學習英語?

北漂在家 方法因人而異,只提點零散的建議。前面有人已經推薦軟體了,滬江網的那套背單詞的東西也不錯。四六級考試不知道現在什麼狀況,不過我個人的體驗與其被四六級搞死不如花半年一年直接準備托福,他們出題是有對性地考察你是不是掌握了最有用的東西,就算不打算出國這也是測試自己是不是達到一般閱讀水平的指標。大叔...

大一新生如何準備雅思?

我就說嘛 大一其實還早啦,到了大二準備也不錯,可以先考個四六級。想要6.5的分數,如果四級570以上或者六級520以上,那對於你來說難度不是很大,但是國外的雅思和國內的英語是完全不同的考試體系,考察的側重點也是不一樣,雅思的四科都有自己的評分標準,尤其體現在口語和寫作上的區別。這也是國內考生偏弱的兩...

大一新生如何準備acm?

首先掌握一門語言,推薦c與c 接著除了刷題以外還要紮實學習對應知識。比如很多題目考的是數論博弈論圖論群論組合數學概率。所以千萬不要丟棄其他課程來專學這個。然後就是毅力與堅持了。這玩意兒一定是不簡單的,但是只要你堅持,必然有收穫。要能忍受的住一天甚至兩三天才做出來一題,但是這一題的精髓盡數掌握。不要貪...