組合語言優勢在於精確控制與極致效能。本章介紹五大進階設計模式,透過實戰案例展示如何以空間換時間、以結構化思維簡化複雜邏輯。
利用可讀寫記憶體特性,將指令機器碼動態填入程式中,改變功能而不犧牲速度。僅適用於 RAM,嚴禁用於 ROM/韌體。
; 緩衝區存放機器碼差異位元組
CDSPMOD DB 88h ; MOV [DI], AL
DB 30h ; XOR [DI], AL
DB 08h ; OR [DI], AL
DB 20h ; AND [DI], AL
; 執行時依 BX 選擇模式填入指令
CLOD:
MOV AL, CDSPMOD[BX]
MOV CS:CDSP2[1], AL ; 修改指令中間位元組
CDSP:
SUB SI, SI
CDSP1:
LODSB
CDSP2 LABEL BYTE
XOR ES:[DI], AL ; 原碼 26 30 05,30 位元組被動態替換
INC DI
LOOP CDSP1
RET
同一指令位置,透過修改關鍵位元組實現 MOV/XOR/OR/AND 四種顯示效果,極度節省空間且無分支開銷。
適用於固定流程、多源資料處理場景,將「演算法」與「資料」解耦。
將所有可能輸入預先計算結果存入表格,執行時直接查表。核心優勢:O(1) 查找、零運算開銷、修改極易。
; 好:固定寬度、對齊、分組註解
TBXXX DB 000H, 001H, 003H, 007H, 00FH, 01FH, 03FH, 07FH
DB 0FFH, 002H, 006H, 00EH, 01EH, 03EH, 07EH, 0FEH
規律化結構利於複製、修改、除錯,一目瞭然。
分析問題規律,提煉「模式」,以圖形表達,設計程式單元。以氣泡排序為例:
│?│ ├─┤ AH (低位) <──│?│──> AL (高位) │ ├─┤ 模式二:交換 (AH > AL) AL <──│?│──> AH │ ├─┤ └─ SI = │?│ = SI
利用間接定址,以資料值為索引記錄出現次數,再按序重建陣列。適用於值域較小 (如 0~255) 且資料量大的場景,單趟掃描完成排序。
將「要執行什麼、按什麼順序、帶什麼參數」預先配置於緩衝區,執行引擎僅需循序讀取並調用。
螢幕選單 → 選擇模組編號 → 存入緩衝區 → 同步選擇參數 → 引擎按序執行。這正是「聚珍整合系統」的核心架構思想。
橋接法、流水線、查表、模式分析、預置法——五大技巧各有千秋,核心精神皆為「以結構化思維替代機械式編碼」。掌握這些模式,能在組合語言層面實現高階語言難以企及的效能與靈活性。程式設計如下圍棋,關鍵落子往往只在幾條指令之間。