畫面
載入中…
程式
點行號 = 設中斷點(或在游標所在行按 F9)。Tab 縮排;按 Esc 再按 Tab 可離開編輯區。
組合語言語法速查
; 分號後面是註解
.equ SPEED, 5 ; 常數
.reg x v0 ; 暫存器別名
start: ; 標籤
ld x, 10 ; v0 = 10
ld i, ball ; I = ball 的位址
drw x, x, 4 ; 畫 4 列 sprite
jp start
ball:
.px ".##." ; 用像素畫 sprite
.px "####"
.db 0x3C, 0b0101, "hi" ; 原始資料
.dw 0x1234 ; 16 位元資料
.ds 8 ; 保留 8 個位元組
.org 0x300 ; 往後填空到指定位址
| 指令 | 意思 |
|---|---|
cls ret exit | 清畫面、返回、結束程式 |
jp 位址 jp v0, 位址 call 位址 | 跳躍、加偏移跳躍、呼叫子程式 |
se sne skp sknp | 條件跳過下一行:相等、不等、按鍵按下、按鍵沒按 |
ld vx, 值|vy ld i, 位址 | 載入 |
ld vx, dt ld dt|st, vx ld vx, k | 讀寫計時器、等待按鍵 |
ld f|hf|b, vx ld [i], vx ld vx, [i] | 字型位址、BCD、批次存取記憶體 |
add or and xor sub subn shr shl | 算術與位元運算 |
rnd vx, 遮罩 drw vx, vy, 高度 | 亂數、畫 sprite |
high low scd n scr scl | SUPER-CHIP:高/低解析度、捲動 |
數字可寫 10、0x0A、0b1010,也可以用 + - * / & | << >> 與括號組成運算式。負數會轉成補數,所以 add v0, -1 就是減 1。
除錯
暫存器
堆疊
反組譯(從 PC 開始)
記憶體
相容性(Quirks)
不同年代的 CHIP-8 直譯器對幾個指令的行為不同。ROM 跑起來怪怪的時,試試換一組。