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

匯編語言套裝軟體製作:程式合併與定案包裝(二)

     編輯:組合語言

第三節 程式合併:濃縮精華,去蕪存菁

一、過程合併:尋找共性,參數化重構

常見程式弊病:缺乏規劃、信馬由缰如流水帳。電腦最強項是處理重複工作,程式師卻常與電腦「爭風吃醋」。輸入龐雜代碼耗費月餘,不如動腦分析合併。作者曾將 40 頁代碼濃縮為 10 頁、速度提升 5 倍。寫程式不精簡三大因:無能、不懂技巧、缺乏敬業精神。正確流程:任務明確 → 因素分析 → 模組分割 → 同類合併 → 變數參數化統一執行。若已成亂麻,最好重寫;必須改則用合併技巧濃縮。

合併步驟:

  1. 找出相似過程,集中擺放。
  2. 比對差異指令/流程;無差異即純重複,宜合併。
  3. 差異處以變數取代,或將不同入口置暫存器。
  4. 調用前設定好變數與暫存器。
  5. 合併相似段落,差異處套用變數。

實例:繪圖程式片段——十幾處設定顯示卡暫存器的代碼看似各異,實則只有四個變數(兩傳送值、兩連續 I/O 埠)。重構為 6 指令子程式:

SUB:
OUT DX, AL
INC DX
MOV AL, AH
OUT DX, AL
RET

調用前置 DX=埠號、AX=數值,一次調用搞定。簡短子程式視時空效益決定保留與否,無論如何優於原碼。

另一惡例:鍵盤輸入逐碼比對分派——8 方向游標鍵各寫完整流程,共 18 有效碼,代碼冗長驚人。重構:主流程 10 行,利用查表跳轉(FUNC 表)分派子程式,新增/刪除功能極易。子程式內再合併重複調用(如 MOVDATA+SETDLT→SETDATA,XORDOT+XYDISP→XYDIDOT),速度空間雙贏。掌握技巧後寫作速度也能提升數倍。

二、分支處理:行雲流水的藝術

分支用得好,程式氣勢一貫。某拋物線快速程式(無乘除、無函數)分支錯誤導致支離破碎(BE10、BE20、BE3、BE01 多餘段)。核心錯誤在 105-113 行:多餘計算與錯誤分支調用。重構將 BE1 內聯入主流程,BE3、BE01 邏輯整合,BE14 尾部重複 POP/POP/MOV/JMP 移至分支內部,省 20 余指令、顯著提速。分支設計原則:主流程線性、分支極小化、共用代碼前置。

第四節 定案包裝:成敗在細節

一、手冊:專業作家的專屬領域

手冊非程式師附帶品。螢幕提示雖成趨勢,但「功能介紹」與「應用發揮」層次不同。程式師文字能力常不足,導致提示晦澀。手冊需專業作家撰寫:懂文字概念、諳電腦功能。培養程式師 3-6 個月,作家需 3-5 年。優質程式必有周詳藍圖,經文字整理即成手冊——良好規劃的程式,先有手冊藍圖,再寫代碼。

二、版本:生命力源於迭代

程式完成非終點。一次寫完美是幻想,也是自找麻煩。需高瞻遠矚規劃版本:快速交付 v1.0 獲用戶回饋,持續增長成熟。版本管理必須專人負責檔案維護、修訂更正,嚴防版本混淆釀災。

三、包裝:必備配套而非商業偽裝

組合語言體積小,應避免複雜初始化、多片磁碟。作者「聚珍整合系統」單碟內含:操作提示/手冊閱讀程式、繁簡轉換、多種文書檔互轉、dBase III 轉換等配套程式及資料表。螢幕提示資料龐大,若無預先壓縮規劃極傷腦筋。手冊印刷、磁碟複製、一切細節必須預謀。成本全在開發與包裝,成功代價必須先付出。

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