COL 是一個針對 VGA 文字模式(80×25,16 色)的調色盤展示程式,採用 TASM 語法(cseg segment),直接操作顯示記憶體 B800h 繪製完整 16×16 色彩矩陣:每列固定背景色(0-F),每行遞增前景色(0-F),以 '#' 字元填滿螢幕,頂端顯示十六進制列標「0123456789ABCDEF」。
MOV ES, CS:[VIDEO] 設 ES=B800h(文字模式顯示緩衝區段址)MOV AX, 3 / INT 10h 清螢幕並設 80×25 文字模式STOSW 寫入雙位元組並自動遞增 DI; BH = 背景色<<4 | 前景色
; 範例:背景藍(1) 前景亮白(F) → 1Fh
程式以 COL 變數追蹤當前背景色屬性基值,每換列 ADD COL, 10h(背景色左移 4 位)。前景色在內層迴圈以 INC BH 遞增。
HEX2:將 AL 拆為高/低 4 位,分別呼叫 HEX1HEX1:CMP AL,10 / JB HNUM1 判斷 0-9 或 A-F,ADD AL,'0' 或 ADD AL,'A'-10 轉 ASCII,寫入顯示緩衝區MESS:以屬性色輸出零結尾字串(COLR2 列標、COLOUR 提示字)STOSW 高效填充螢幕,無冗餘運算現代圖形堆疊雖以 GPU 框架緩衝區取代 B800h,但「像素格式定義、色彩空間編碼、雙緩衝交換」核心概念一脈相承。WebGL gl_FragColor、Canvas 2D fillStyle、CSS rgba() 本質上皆為「屬性編碼 → 硬體解碼 → 顯示」管線的高層抽象。
TASM /m COL
TLINK /t COL
; 產生 COL.COM,直接在 DOS 或 DOSBox 執行