--- 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`|