首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 組合語言

組合語言程式設計(二):模組分割、特性分析與調用架構

     編輯:組合語言

前言:模組化——軟體工程的聖杯

模組非簡單切割,而是以目標為導向的系統性分解。本章詳細說明分割原因、前置作業、六步驟分割法、七大模組特性分析、兩種調用架構與介面設計。

模組分割四大原因

  1. 制作方便、易維護
  2. 效率導向:速度優化 vs 空間優化,採用不同技巧
  3. 人員能力與條件分工
  4. 功能分類,利於靈活組合

核心原則:先確定目標、全面認知格局、整理歸類、統一命名格式、建立總表專人維護。

分割前置作業:.REF 與 .LST 分析


C:\> M ABCD,,,;     ; MASM 產生 .OBJ .LST .CRF
C:\> CREF ABCD      ; 產生 ABCD.REF 交叉參考表

列印 .LST 與 .REF 對照,精簡整理後再分割。

六步驟分割法

  1. 刪除無用標號:.REF 中僅有定義無引用、或前導 JMP/RET 的標號刪除
  2. 清理冗餘:無意義 NOP 刪除;JMP xxxx 改 JMP SHORT xxxx;孤立段落合併;單次調用子程式內聯
  3. 功能獨立者優先分割:分割後檢查是否調用其他子程式,記錄為「功能模組」
  4. 子程式歸屬:僅供該模組調用 → 附屬;共用 → 「共用模組」
  5. 主流程歸類:多為「應用模組」,難分割亦無需分割
  6. 詳細註記:備查備用

中文系統七大模組特性深度剖析

模組類型核心特性與設計重點
1. 系統中斷 (鍵盤/顯示/列印/通訊)功能鍵盤:省空間、建表法靈活;顯示:犧牲空間換速度、彈性大;列印:設定載入技巧;通訊:安全正確保密
2. 內碼轉換輔助四字元內碼、高位區分中英、雙向轉換、兼顧速度
3. 字形結構介面多層結構、子模組多、空間速度兼顧、極小空間輸出海量字形
4. 字形分析輔助處理大小/種類/筆形/位置變化、核心在變數處理、緩衝區安排定效率
5. 英文字形功能字數少、無任意組合功能、獨立模組
6. 繪圖核心功能字形產生器心臟、關鍵在計算、螢幕用查表/快速運算、列印用高精度
7. 各種介面應用模組間溝通橋樑、良窳決定使用效率、理解結構即可輕易對接

模組調用架構:中斷向量 vs 目標檔聯結

方案一:系統中斷介面 (採用)

  • 優點:設計者無需佈署位址、應用者無需知入口、支援磁盤覆蓋技術動態載入
  • 缺點:執行效率稍低 (可將中斷入址複製至自身緩衝區改用遠呼叫改善)

中文字形產生器介面範例:支援 6 萬有效漢字、近 600 萬組合新字、1×1 至 128×128 無級次縮放、多字體/粗細/變體、繁簡/ASCII 可選。

方案二:.OBJ 靜態聯結

  • 適用:小型、高專用性程式
  • 缺點:相互獨立、兼容性差、多程式並用佔空間大、聯結後難靈活復用

介面設計精要

  • 參數透過暫存器傳遞 (模組間緩衝區無法統籌)
  • 功能明確,以參數分支實現多態
  • 高效率、大彈性,兼顧通用與專用需求
  • 空間小、結構完整、獨立可調用

總結

模組分割非切菜切豆腐,而是以系統工程思維進行功能內聚、介面解耦。七大模組各司其職、特性鮮明,中斷介面架構支援動態覆蓋與零配置調用,正是大型系統長期演進的關鍵。理解模組特性、掌握分割步驟、設計優良介面,是組合語言程式設計師邁向架構師的必修課。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved