Mnemonics · CAIE Assembly Instructions · Addressing Modes · Trace Tables
| Mnemonic | Meaning | Example |
|---|---|---|
| LDM #n | Load immediate value n into ACC | LDM #5 → ACC = 5 |
| LDD addr | Load value at memory address into ACC | LDD 100 → ACC = Mem[100] |
| STO addr | Store ACC value at memory address | STO 200 → Mem[200] = ACC |
| ADD addr | Add value at address to ACC | ADD 100 → ACC = ACC + Mem[100] |
| SUB addr | Subtract value at address from ACC | SUB 100 → ACC = ACC - Mem[100] |
| INC reg | Increment register by 1 | INC ACC → ACC = ACC + 1 |
| DEC reg | Decrement register by 1 | DEC IX |
| Mnemonic | Meaning | Notes |
|---|---|---|
| JMP label | Unconditional jump to label | Always jumps |
| JPE label | Jump if ACC = 0 (Equal) | After CMP |
| JPN label | Jump if ACC ≠ 0 (Not equal) | After CMP |
| CMP addr/#n | Compare ACC with value — sets flags | Doesn't change ACC |
| IN | Input a character into ACC (ASCII) | From keyboard |
| OUT | Output ACC value as character | ASCII to screen |
| AND addr/#n | Bitwise AND with ACC | Mask operations |
| OR addr/#n | Bitwise OR with ACC | Set bits |
| XOR addr/#n | Bitwise XOR with ACC | Flip bits |
| LSL n / LSR n | Logical shift left/right by n bits | ×2 / ÷2 per shift |
| END | Stop program execution | Required at end |
LDM #42 — loads the literal value 42 into ACC. Fast, but fixed — value cannot change during runtime.LDD 100 — loads whatever value is stored at memory address 100.LDI 100 — reads Mem[100] to get an address, then loads from that address.LDX 100 — loads from address 100 + Index Register (IX). Useful for arrays.SUB 100 means ACC = ACC – Mem[100], not Mem[100] – ACC. Always check which way round the subtraction goes.