回覆列表
  • 1 # 一刻科技

    彙編目前主要用於逆向了,之前很多用匯編寫的硬體裝置也改用了C等高階語言了。

    程式語言說實在的沒什麼入門捷徑,首先搞定語法還有關鍵字,至於程式設計邏輯一般問題都不大。然後就是練習。

    如果沒有學習過任何一個程式語言,那麼按照範例寫一些簡單的程式,跑起來看結果,然後修改,這樣就會更容易入門一些。

    如果你是懂其他語言比如C,然後做逆向,那可以用C寫一個簡單的小程式,然後反編譯後,再去看看程式碼,這樣就容易和熟悉的語言對上,方便理解和深入開展。

  • 2 # 多瑙河中的魚

    組合語言的學習首先要對計算機硬體基礎知識有所瞭解,特別是暫存器,記憶體等。同時要對二進位制有所瞭解。同時你得了解與,或,非,異或等數理邏輯計算的相關知識;你同時對數位電路知識要了解,瞭解邏輯與或非在數位電路上如何實現。另外不但對數位電路,對於類比電路你也要了解。諸於A/D,D/A轉換,光電轉換等等都要有所瞭解。這些東西對於你掌握組合語言用於工業控制有很大幫助。順便說一下,有很多工業控制的程式是用C語言編寫的,C語言雖然也比較難,但較組合語言方便多了。

  • 3 # 校園小喇叭

    組合語言入門一:環境準備

    • 現階段,找個方便好使的程式設計環境還是比較蛋疼的,對於部分想過癮或者想從學習實踐中學習的小夥伴來說,確屬不易。結合國內本科時的Ubuntu及gcc/nasm環境來講解吧環境來分享吧。

    • 環境

    • Ubuntu

    • gcc/nasm

    環境檢查

    先開啟終端,安裝所需軟體(注意$開頭的才是命令,並且$並不屬於命令的一部分):

    $ sudo apt-get install gcc nasm vim gcc-multilib -y

    在終端中分別執行which nasm和which gcc,得到如下結果,則表示環境已經安裝完畢。

    $ which nasm

    /usr/bin/nasm

    $ which gcc

    /usr/bin/gcc

    開始第一個程式

    在組合語言環境下,我們先別急著搞什麼Hello World,在這裡要打印出Hello World還不是一個簡單的事情,這也算是初入彙編比較讓人不解的地方,成天都在扯什麼暫存器定址啥的,說好的變數分支迴圈函式呢?

    別說話,先按照我的套路把環境配好,程式跑起來了再說。注意,不是Hello World。先亮出第一個程式的C語言等價程式碼:

    int main() {

    return 0;

    }

    不好意思,大括號沒換行。你以為接下來我要gcc -S嗎?Too naive。我這可是正宗手工藝,非機械化生產。

    說正事,先一股腦啥都不知道地把程式碼敲完,跑起來再說:

    首先準備個檔案,暫且叫做first.asm吧,然後把下面的程式碼搞進去:

    global main

    main:

    mov eax, 0

    ret

    好了程式寫完了,你能感受到這裡的0就是上面C程式碼裡的0,說明你有學習彙編的天賦。

    OK接下來就要編譯運行了。來一堆命令先:

    $ nasm -f elf first.asm -o first.o

    $ gcc -m32 first.o -o first

    這下,程式就編譯好了,像這樣:

    $ ls

    first first.asm first.o

    好了我們執行一下:

    $ ./first ; echo $?

    別問我為何上面的命令後面多了一串奇怪的程式碼,你自己把它刪掉之後再看就能猜出來是幹啥的了。如果還有疑惑,可以再次做實驗確認,比如把程式碼裡的0改成1。變成這樣:

    global main

    main:

    mov eax, 1

    ret

    再按照同樣的套路來編譯執行:

    $ nasm -f elf first.asm -o first.o

    $ gcc -m32 first.o -o first

    $ ./first ; echo $?

    1

    OK,咱們的環境準備工作大功告成。

    出國到了MIT以後,計算機體系結構第一門課,教授給了個學習平臺叫做lc-3。連結如下:

    主頁 Introduction to Computing Systems

    https://highered.mheducation.com/sites/0072467509/student_view0/lc-3_simulator.html

    模擬器 LC 3 Simulator Windows Version 3.01 (385.0K)

    https://highered.mheducation.com/sites/0072467509/student_view0/lc-3_simulator.html

    指令手冊 AppendixA.pdf

    https://highered.mheducation.com/sites/dl/free/0072467509/104691/pat67509_appa.pdf

    這個平臺有哪些好處?

    1.指令少,只有最基本的17條指令。文件每條指令用法都有具體描述,這裡不多說

    2.開發環境簡單。一個編譯器,一個虛擬機器,另外一個console視窗。

    3.減法,堆疊,函式呼叫都需要自己實現。夯實基礎。

    學習體會:

    這個平臺掌握之後。stm32指令集基本是對著指令手冊就可以直接動手寫了。

    另附LC-3指令參考一份連結如下:

    http://www.cs.utexas.edu/users/fussell/cs310h/lectures/Lecture_10-310h.pdf

  • 4 # Ren

    本行汽車電子,之前某老平臺幾次大的軟體變更升級,CPU計算資源非常緊張,有些低優先順序中斷已經開始丟失了,我用powerpc彙編把原來c語言的基礎演算法庫重寫了一遍,重點照顧了耗時最長的查表map程式,優化了分支預測特性,減少不必要的流水線等待,結果程式執行時間減少30%,不丟中斷了,老平臺又苟延殘喘了幾年。

    彙編怎麼學?一句話,多看手冊,多反編譯,就那麼幾種套路,組合語言還是很純粹的,沒有太多花活。

  • 中秋節和大豐收的關聯?
  • 英語留長髮怎麼說?