首頁>Club>
3
回覆列表
  • 1 # 靈思致遠IT學苑

    一,搞清楚組合語言的原理。要有一定的微機硬體基礎知識,因為彙編很底層,更加接近機器語言,往往很多的東西要從機器層面來支援理解。彙編是一門比較枯燥的語言,也是一門比較難學的語言,想學的更快,必須對裡面的一些原理搞清楚,例如:8086微處理器的內部結構,這是與記憶體直接聯絡的,理解後,然後看他的是怎麼儲存的,他一些功能,他有什麼作用,一般這些都是直接寫入記憶體掛鉤的,所以比較難懂,但是你努力的話,也可以學的很好,世上無難事,只要你肯攀登,是一個道理,多去理解一些原理東西,並且與用實際操作結合起來,這樣才 增加自己理解力,使學的越來越快。

    對於程式設計來說,要有基本的思路,就是說要明白程式一步一步是怎麼執行的,這最關鍵。像計數器程式設計,如果沒有數電的知識,看起來會比較費勁,不過多看看書上的例題,多寫幾遍也沒多大問題。看看課本上大師們怎麼編的,模仿很多遍之後,你會不知不覺的發現自己也成開發高手了,而且當你羨慕別人寫得程式幾百行的時候也不會想到後來自己也能寫出來的,其實你可以,但是這是需要課本學習時間的,每個語句反覆的揣摩,自己模仿,就是這樣的刻苦練的,沒什麼好的捷徑,沒有汗水不會有收穫的,但是這也是一個充滿樂趣的過程。

    二,最好先學習一門高階語言,因為高階語言更接近人的語言,相對比較容易理解。掌握了一門高階語言後再學彙編,一來不易產生畏懼感,二來遇到問題,只能侷限於已學的彙編知識來來思考遇到的問題,此時跳出彙編,旁援掌握的語言有助拓新思路,而不只侷限與彙編一個思路。

    三,要有積極的心態,細緻,踏實的學習態度是少不了的,更為重要的是實踐。比喻為:猶如一個戰士進入敵營中心地帶,要冷靜,小心,還要勇敢,智慧,要在敵中心步步為勝,留意敵人的一舉一動,將敵一掃而光,不可大意一步,因為接近核心了,稍一大意有可能留下極大隱患。一個狂熱的學習勁頭,是學習的動力。勤奮,刻苦,等品質也將幫你一路順進。

    四、推薦兩本書:一本是王爽寫的<<組合語言>>和羅雲彬寫的windows環境下32位組合語言程式設計。保持好心態,不要急,拿著王爽的書一點一點來,把書中碰到的每一個不會的都弄明白。感覺碰到一些似懂非懂的可以先做個記號放那,等一會兒再回頭看。多動手寫程式,哪怕是書中的例子,看完題目就把書合上,先寫一遍,然後和書中的對比一下。每章後面的題更要弄懂,因為接下來的幾章中還會碰到這個題的延伸部分。

    五、核心是要提高自己的學習能力

    我們生活在一個知識大爆炸的年代,知識內容浩如煙海,知識更迭日新月異,我們要適應這個新時代,關鍵不是你掌握了多少知識,而是你掌握了學習的方法,提高了自己的學習能力,俗話說,授人魚不如授人以漁。掌握了學習的能力,那學什麼都快,學習什麼都行,學習能力的提高,關鍵是正確的學習方法,這裡供大家參考我總結的方法:

    學習經驗總結和分享:

    1.善用各種搜尋引擎,學會用關鍵詞找到要的內容。

    2.可以註冊一些論壇,不懂可以發帖提問。

    3.搜尋相關學習的群,加入,不懂提問可以得到快速回答。

    4.寫好學習日記和總結,把平時遇到的問題和解決辦法儲存起來,

    5.學習相關的知識要透過相關的練習來鞏固,活學活用,舉一反三。

  • 2 # 誰的心不曾柔軟

    有LSI設計經驗學起來會比較容易 能明白這些程式碼進了晶片裡是怎麼被執行的 甚至自己可以做一個簡單的CPU 自己出一套指令集

  • 3 # 嵌入式宏思微想

    組合語言是面向機器的程式設計語言。在實際應用中,它通常被應用在底層,硬體操作和高要求的程式最佳化的場合。驅動程式、嵌入式作業系統和實時執行程式都需要組合語言。

    如何學好組合語言?首先,要有一定的理論知識儲備,例如編譯原理,計算機原理,微機原理,體系結構與指令系統。其次,要多研讀範例,多寫多除錯彙編程式碼。

    儘管不同的硬體平臺,組合語言不盡相同,但都離不開資料傳送,條件設定,控制轉移,位移與位操作,特權指令,浮點與多媒體,偽操作等等。

    多年以來使用匯編語言的心得是,程式碼完整規範,儘量使用常規指令,做好堆疊和上下文的保護與恢復。

  • 4 # 雁塔菜農

    本人從上世紀80年代就開始從事軟硬體的程式設計,特別是經歷了PC彙編和微控制器彙編。

    目前PC彙編肯定沒人再搞了,因為在DOS時代,PC彙編(實際多用宏彙編)還大有用途,但在windows時代後,彙編就已經退出了舞臺,只有反彙編搞逆向的人才使用和學習彙編和反彙編。

    在微控制器應用中,隨著資源的擴大,像ARM晶片用匯編幾乎不可能。

    故在嵌入式領域,主要在小晶片的MCU上使用匯編,例如MVS51系列,PIC系列、AVR系列和DSP系列等。

    當然也有搞各類彙編的,實際他們也是在搞反彙編,即搞逆向工程。

    所以在這個年代想學習彙編的都是有故事的人……至少是聽過故事的人!

    本人精通51彙編和反彙編,如果需要,可以在網上搜索菜農的文章和帖子。

  • 5 # 蛋撻不吃皮

    組合語言本身很簡單,常用指令沒幾個,語法規則也不多,看幾個小時資料似乎就明白了,但其實不然。彙編的背後是體系結構,是程式設計拋開各種高層形態的最根本,最本質的解釋。

    本人從業多年,除了跟我一樣搞過很久安全的同學,其餘的沒有一個我認為算是精通匯編。而我是怎麼掌握彙編的呢 ?

    1 早年用匯編手寫病毒。比如處理指令重定位,是真的用匯編計算指令地址,push push call 實現函式呼叫。

    2 長期病毒木馬2進位制分析。分析明白各種 malware 的原理,實現查殺防。個別病毒,需要實現修復。

    3 漏洞挖掘。fuzzer 發現漏洞,彙編級詳細分析,exploit 編寫,武器化利用,一條龍。

    4 各種逆向分析。好的東西沒有程式碼,IDA 裡看就是了。

    5 跟debuger 做朋友。從來看不上print 方式的bug定位。所有問題在偵錯程式裡分析明白,絕不靠猜。

    6 編譯器後端研究。什麼指令選擇,指令排程,暫存器分配,全都研究一遍。

    7 底層開發,作業系統,裝置驅動,虛擬化都走上一遍。X86很熟? ARM學一遍做對比。

    歷經這麼多,終於敢說學明白彙編了。

    推薦如下的文件,很基礎又相對全面的介紹了很多計算機常見問題在彙編層面的解釋。

    《Introduction to Computer Organization with x86-64 Assembly Language & GNU/Linux》

    以上,希望對樓主有幫助

  • 中秋節和大豐收的關聯?
  • 水培花卉施肥不當,出現黃葉、爛根,如何才能正確掌握施肥方法?