組合語言的優勢 : 用最小的硬體需求、達到最精準的時序控制.

在今日各種高階語言盛行的年代, 提到組合語言, 一般工程師的反應若不是、那是甚麼東西? 不然就是、這年頭哪還有人自找麻煩用組合語言寫程式?

現在只要是8bit MCU以上, 都要求能支持C語言, 最好能用 Keil C. 需要甚麼功能, 把那個函數庫include進來就好, 寫寫串場程式, 一個案子手到擒來.尤其年輕工程師從學校開始, 受到Arduino長期的培養, 早就認為以上都是理所當然的.

但凡事都是一體兩面, 方便就失去了對事物的瞭解及掌控. MCU不像PC, 不會有用不完的記憶體及快到不用考慮的運算速度, 使用高階語言,可能沒空間放進所有需要的函數庫, 也可能最後因反應速度太慢而不知如何解決(因函數庫是個黑盒子), 除錯時也很難將中斷點設到剛好的位置(因高階語言一行會對應到好幾行組合語言), 也可能因太多事件同時進來而難寫程式.

組合語言是最低階的語言, 直接連結到硬體, 一行指令一個動作, 簡單明白. 但唯有對MCU硬體內部本身有最清楚的瞭解, 才知道該如何運用.組合語言可精確計算到每一行程式所需的時間,做最及時的反應. 事先清楚規劃記憶體的分配, 才不會因覆蓋而造成錯誤. 插斷的處理更是需要經驗, 讓不知何時會突然出現的事件, 有一個清晰的先後處理順序. 何時及如何使用看門狗(Watch-Dog-Timer)更是一種藝術, 這可確保MCU不會死當, 也是產品品質的保障.

只要能靈活運用組合語言, 就可用最少的資源, 完成所需及精準的功能, 並確保良好的產品品質. 期間創造出來的價值, 才能達到雙贏的目的.

返回頂端