---
# System prepended metadata

title: citsit MBD

---

---
title: citsit MBD

---

![image](https://hackmd.io/_uploads/SyLcgYNPZg.png)

![image](https://hackmd.io/_uploads/By8bJ0Lv-e.png)



| Register | Nama Lengkap | Fungsi | Penjelasan Bit | Contoh Pemakaian |
| :--- | :--- | :--- | :--- | :--- |
| DDRx | Data Direction Register | Mengatur arah pin sebagai Input atau Output | Bit = 0: Input, Bit = 1: Output | `SBI DDRB, 5` |
| PORTx (saat DDRx = 0) | Data Register (Input Mode) | Mengatur sinyal logic High (1) / Low (0) pada pin | Bit = 0: Logika 0, Bit = 1: Logika 1 | `SBI PORTB, 5` |
| PORTx (saat DDRx = 1) | Data Register (Output Mode) | Mengeluarkan sinyal High (1) / Low (0) pada pin Output | Bit = 0: Logika 0, Bit = 1: Logika 1 | `SBI PORTB, 5` |
| PINx | Input Pins Address | membaca nilai sinyal logic yang masuk pada pin | Bit = 0: Terbaca Low, Bit = 1: Terbaca High  | `SBI PINB, 5` |

| Mnemonic | Operand | Deskripsi | Contoh Pemakaian |
| :--- | :--- | :--- | :--- |
| LDI | Rd, K | Load Immediate - Memuat nilai konstanta 8-bit (K) ke register tujuan (Rd). Hanya bisa digunakan untuk register R16-R31. | `LDI R16, 0xFF` |
| ADD | Rd, Rr | Addition - Menjumlahkan 2 register atau register dan data yang disimpan dalam memori. | `ADD R16, R17` |
| SUB | Rd, Rr | Subtraction - Mengurangkan 2 register atau register dan data yang disimpan dalam memori. | `SUB R16, R18` |
| AND | Rd, Rr | Bitwise AND - Melakukan operasi logika AND antara 2 register atau register dan data memori. | `AND R16, R17` |
| OR | Rd, Rr | Bitwise OR - Melakukan operasi logika OR antara 2 register atau register dan data memori. | `OR R16, R17` |
| MUL | Rd, Rr | Multiplication - Melakukan operasi perkalian antara 2 register. | `MUL R16, R17` |
| JMP | label | Jump - Lompat ke alamat yang ditentukan. | `JMP LOOP_START` |
| RCALL | label | Relative Call - Memanggil subroutine secara relatif terhadap alamat instruksi saat ini. | `RCALL DELAY_MS` |
| RET | - | Return - Kembali dari subroutine setelah selesai dieksekusi. | `RET` |
| CPI | Rd, K | Compare Immediate - Membandingkan 2 bilangan (register dan nilai konstan) lalu memasukkan hasilnya ke register flag. | `CPI R16, 0x05` |
| BREQ | label | Branch if Equal - Melakukan percabangan ke alamat tertentu jika flag equal (Z) bernilai 1. | `BREQ TARGET_LABEL` |
| MOV | Rd, Rr | Move - Memindahkan data dari 1 register ke register lain. | `MOV R16, R0` |
| IN | Rd, P | Input - Membaca data dari port I/O tertentu dan memasukkannya ke dalam register. | `IN R16, 0x23` |
| OUT | P, Rr | Output - Menulis data dari register ke port I/O tertentu. | `OUT 0x25, R16` |
| STS | k, Rr | Store to SRAM - Menyimpan data dari register ke memori SRAM. | `STS 0x0100, R16` |
| ROL | Rd | Rotate Left - Melakukan rotasi bit ke kiri. | `ROL R16` |
| SBI | P, b | Set Bit in I/O - Set bit tertentu dalam port I/O menjadi 1. | `SBI PORTB, 4` |
| CBI | P, b | Clear Bit in I/O - Set bit tertentu dalam port I/O menjadi 0. | `CBI PORTB, 4` |
| CLC | - | Clear Carry - Mengosongkan bit carry. | `CLC` |
| SWAP | Rd | Swap Nibbles - Menukar posisi nibble atas dan nibble bawah. | `SWAP R16` |
| ROR | Rd | Rotate Right - Memutar bit ke kanan pada register atau memori. | `ROR R16` |
| BREAK | - | Break - Memaksa program berhenti sementara dan memasuki mode debugging. | `BREAK` |
| NOP | - | No Operation - Menunjukkan bahwa tidak ada operasi yang harus dilakukan. | `NOP` |
| SLEEP | - | Sleep - Switch microcontroller ke mode sleep untuk menghemat daya. | `SLEEP` |
| WDR | - | Watchdog Timer Reset - Mereset watchdog timer pada microcontroller. | `WDR` |
| LDS | Rd, k | Load from SRAM - Memuat data dari alamat memori SRAM (k) ke register (Rd). | `LDS R16, 0x0100` |
| SBIC | P, b | Skip if Bit is Clear - Melewati instruksi berikutnya jika bit (b) pada I/O port (P) bernilai 0. | `SBIC PIND, 2` |
| SBIS | P, b | Skip if Bit is Set - Melewati instruksi berikutnya jika bit (b) pada I/O port (P) bernilai 1. | `SBIS PIND, 2` |
| DEC | Rd | Decrement - Mengurangi nilai pada register (Rd) sebesar 1. | `DEC R16` |
| INC | Rd | Increment - Menambah nilai pada register (Rd) sebesar 1. | `INC R17` |
| EOR | Rd, Rr | Exclusive OR - Melakukan operasi logika XOR antara dua register. | `EOR R16, R17` |
| PUSH | Rr | Push to Stack - Mendorong (menyimpan) isi dari sebuah register ke atas tumpukan (stack). | `PUSH R16` |
| POP | Rd | Pop from Stack - Menarik (mengambil) data dari atas tumpukan (stack) ke sebuah register. | `POP R16` |
| BRNE | label | Branch if Not Equal - Melakukan percabangan jika flag not equal (Z=0) bernilai 1. | `BRNE loop`|
