명령어 만들기
TINY CPU MICOM을 이용한 LED 를 제어에 필요한 명령어 SET 구성을 한다.
LED 켜는 명령어
LED를 제어하는데 필요한 어셈블리 언어에 필요한 명령어들어 16bit 단위로 동작하도록 작성한다.
명령어 포맷
16bit = opcode[15:12] + operand[11:0]
명령어
| Mnemonic | Operand | Opcode (Hex) | Description |
|---|---|---|---|
| NOP | - | 0x0 | No Operation |
| LOAD | n | 0x1 | Load immediate value into register |
| INC | - | 0x2 | Increment register |
| DEC | - | 0x3 | Decrement register |
| JMP | addr | 0x4 | Unconditional jump |
| JZ | addr | 0x5 | Jump if zero |
| JNZ | addr | 0x6 | Jump if not zero |
| LED_ON | - | 0x7 | Turn LED on |
| LED_OFF | - | 0x8 | Turn LED off |
| DELAY | n | 0x9 | Delay for n time units |
만약 16비트 명령어 형식(상위 4비트 Opcode, 하위 12비트 Operand)을 사용한다면 다음과 같이 정리할 수도 있습니다.
| Opcode | Mnemonic | Format | Example |
|---|---|---|---|
| 0x0 | NOP | NOP | 0x0000 |
| 0x1 | LOAD | LOAD n | 0x100A |
| 0x2 | INC | INC | 0x2000 |
| 0x3 | DEC | DEC | 0x3000 |
| 0x4 | JMP | JMP addr | 0x4005 |
| 0x5 | JZ | JZ addr | 0x500A |
| 0x6 | JNZ | JNZ addr | 0x6002 |
| 0x7 | LED_ON | LED_ON | 0x7000 |
| 0x8 | LED_OFF | LED_OFF | 0x8000 |
| 0x9 | DELAY | DELAY n | 0x93E8 |