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

組合語言的藝術——基本認識(二):指令體系、工作環境與資料對象

     編輯:組合語言

前言:認清指令、環境與對象,方能駕馭機器

本章系統整理組合語言指令格式與分類、IBM PC 記憶體佈局與周邊設備、系統程式 (DOS/BIOS) 與配備程式、公用模組願景,以及四大類資料對象 (數據、文字、圖形、概念) 的處理特性。

一、指令格式與分類


[前置元] 指令 [目的操作元, 源操作元]

前置元

  • 段超越:MOV AX, CS:BUF1
  • 長度定義:BYTE PTR/WORD PTR 臨時覆蓋原定義
  • 距離指定:JMP SHORT ABCD

指令運算元模式

★ 立即數不可作目的操作元

八大功能分類

  1. 資料傳移 (模式 1-4)
  2. 旗標控制 (模式 5)
  3. 段址處理 (模式 1-2)
  4. 數學計算 (視指令而定)
  5. 字串處理 (模式 6-7)
  6. 控制轉換 (模式 5)
  7. 條件執行 (模式 8)
  8. 中斷處理 (模式 8)

操作元順序陷阱

書寫順序 目的、來源,與習慣「由前到後」相反,極易寫錯。

二、工作環境:IBM PC 記憶體地圖與周邊

Big Endian 定址之痛

IBM PC 採「倒裝定址」(Big Endian):位址由大到小。例:AX=4567h 存 DI=2000h → [2000h]=67h, [2001h]=45h。讀回仍為 4567h,但圖形處理時邏輯順序顛倒,需額外 XCHG AH,AL 補救,繪圖關鍵路徑白白浪費指令。32 位擴展至 12345678h → 78563412h 更慘。這是美國人不愛寫組合語言的原因之一。

1MB 記憶體佈局 (真實可用 < 600KB)

模式範例
暫存器↔暫存器 (同長度)MOV AH,BL / XCHG AX,BX
暫存器↔緩衝區OR BUF1,AX / ADD CL,BYTE PTR BUF1
立即數→暫存器/緩衝區TEST DI,8000h / SUB BYTE PTR BUF1,3
記憶體間接定址MOV AL,BYTE PTR [DI] / JMP LAB1[BX]
無操作元PUSH CS / CLI / RET
計數器隱含LOOP ABCD / REP MOVSB / ROR AX,1
專用暫存器OUT DX,AL / MUL BUF1 / STOSB
條件/中斷JNZ ABCD / INT 10h / IRET
段範圍大小/用途
0000h0000-007Fh128B / 32 基本中斷
0008h0000-0380h896B / 系統管理中斷
0040h0000-00FFh256B / 基本程式資料
0054h0000-9C00h~34KB / DOS 佔用
00E1h-09000h 前半-用戶可控空間
09000h-0FFFFh-DOS 佔用
0A000h-VGA 顯示區
0A800h-EGA 顯示區
0B000h-文字模式緩衝區 (6845)
0B800h-圖形模式顯示區 (6845)
0C000h-0D000h-EMS 擴充記憶體
0C800h-ROM / 硬碟控制程式
0E000h-RAM (1MB 機) / 不可用
0F000h-ROM / BIOS

段暫存器 16 倍定址 (8088 相容遺留) 導致擴充記憶體產生 EMS 畸形兒。

周邊設備策略:介面程式分離

  • 鍵盤、螢幕、印表機、磁碟機皆屬周邊
  • 規格抄錄手冊,隨時查閱
  • 主程式不可統一處理,定妥介面做附屬程式,用戶自行設定
  • 三大理由:未來設備不可預知、常用設備固定無需載入廢碼、技術進步下主程式應永恆、唯介面代謝

系統程式:DOS vs BIOS

DOS (磁碟作業系統)BIOS (基本中斷服務)
儲存磁碟,開機載入ROM,固化
功能啟動、記憶體管理、部分 I/O統一周邊參數傳遞、便利程式師
修改性易修改 (版本 1.0→4.01)機種不變則永不變
速度較慢 (瞻前顧後)較慢
重疊鍵盤/螢幕等功能重疊同左
策略兼容即保留渣滓、包袱越重可改入口、擴展功能、生命期長

建議優先用 BIOS 中斷,並修改入口增強功能。DOS 面臨 OS/2 取代,大限將至。

配備程式與公用模組願景

  • 配備程式:非必要基礎程式 (函數庫、繪圖公式、視窗管理、EMS 裝置)
  • 若有統一規格,將演化為「公用模組」市場,軟體生產將輕而易舉
  • 「聚珍整合模組」即將推出,首階段面向程式師,次階段面向終端用戶

三、處理對象:四大資料類型特性

1. 數據資料:安全、精確、完整

  • 量大,需規劃長度,否則成執行瓶頸
  • 進制轉換、顯示定位、計算公式 → 子程式化任意調用
  • 極限可知 → 結構化規格;不可知 → 依規則性處理

2. 文字資料:中英混排的挑戰

  • 英文:字碼不分、佔 1 字元、文字模式 25×80
  • 中文:≥16×16 點陣、圖形模式、中英比例約 2:1
  • 內碼:雙字元常見,技術進步下四字元成趨勢
  • 排序核心痛點:國標碼 6763 字分集按頻率,與使用者認知脫節;Big-5 13053 字同病。部首筆畫索引需多次對照表查找,速度較英文慢 50 倍 (表法) 或千倍 (公式法)
  • 倉頡字母索引:效率等同英文、零空間、支援千萬字、字典電話簿即查即得
  • 交換碼標準化必要,須容納所有系統字集

3. 圖形資料:點陣、向量、概念

  • 點陣:壓縮/還原/截取/綜合
  • 向量:計算/調整/變數/層次複雜
  • 概念資料:視覺效應分析為人可理解概念,極精簡、易存儲、取出經「概念作圖」還原。畫家經驗程式化,電腦忠實執行、每次一致
  • 關鍵:資料結構定義、層次安排、特徵描述、輸入變數處理

4. 概念資料:思考的基本單元

  • 非語言,組成語言的基礎因素
  • 具象 (圖形概念) + 抽象 (主觀感受/認知/慾望)
  • 電腦中必為二進制,性能因設計者觀點異
  • 未來基本結構,現階段人人有機會成先驅

5. 綜合資料:整合軟體的必然

  • 輸入資料含指令與字符 (桌上排版需同時存指令控制版面)
  • 統一鍵盤應用、字符定義規範
  • 世界字符編碼爭議:ISO 有限編碼平面難容萬國文字
  • 真正標準:各國文字為本的自然語言,多字元碼方案
  • 中文採四字元「自然碼」(倉頡壓縮),支援上千萬字、四字元硬體架構下一次讀取四字元最高效

四、指令應用微優化:時脈與位元組核算

熟記 8088 指令時脈與長度是寫好程式前提。以下常見優化:

低效寫法代價優化寫法代價說明
CALL ABCD / RET4B, 43TJMP ABCD / JMP SHORT ABCD2-3B, 15T同功能,直覺語意不同,精簡時應內聯
MOV AX,03B, 4TSUB AX,AX / XOR AX,AX2B, 3TXOR 影響旗標,勿用於旗標判斷前
ADD AX,AX2B, 3TSHL AX,12B, 2T
MOV AX,43BMOV AL,42BAH 不須為 0 時
MOV AL,46h / MOV AH,0FFh4B, 8TMOV AX,0FF46h3B, 4T
CMP CX,04B, 4TOR CX,CX / JCXZ XXXX2B, 3T / 1指令JCXZ 限用 CX
SUB BX,14B, 4TDEC BX1B, 2T
MOV AX,[SI] / INC SI / INC SI4B, 21TLODSW1B, 16T專用指令
MOV CX,8 / MUL CX5B, 137TSHL AX,1 ×3 / MOV CL,3 / SHL AX,CL6B, 6T / 3BCL 計數器 ≥2 時優於立即數
多 MOV WORD PTR BUF,0累積大SUB AX,AX / REP STOSW + STOSB極省保留一暫存器=0 最佳
連續 CALL 子程式時空雙損前置子程式內聯 / 合併入口節省調用開銷調用次數多時效果顯著
SUB AH,AH / MOV AL,BUF-BUF DB ?,0 / MOV AX,WORD PTR BUF-預設高位 0
OR ES:[DI],BH / OR ES:[DI+1],BL8B, 32TXCHG BL,BH / OR ES:[DI],BX / XCHG BH,BL7B, 28T利用 16 位運算
濫用 PUSH/POP 保存暫存器15T/12T用閒置暫存器 / 雙入口 / 文檔說明破壞暫存器極省系統程式/高頻子程式必嚴謹

乘法指令實測 (10MHz, 3072×14270 次)


SHL AX,CL:  CL=0→23s, 1→27s, 2→32s, 3→36s, 4→40s, 5→44s, 6→49s, 7→54s
SHL AX,n:   n=1→14s, 2→28s, 3→42s, 4→56s, 5→71s, 6→85s, 7→99s
結論:CL≥2 時分開 SHL 較慢,用 CL 計數器更佳

總結

指令分類清晰、記憶體地圖燒腦、BIOS 優於 DOS、周邊介面解耦、文字排序倉頡最優、概念資料為未來、微優化積少成多。組合語言藝術在於對機器架構的透徹理解,與對每一個時脈、位元組的極致珍視。

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