A. Penjelasan Studi Kasus
Pada praktikum ini, disini hasil output sesuai dengan penggunaan operator aritmatika dan logika matemaika. Pada program ini, menggunakan operator and, add, sub, mul, dev, dan eor. Setiap mikroprosesor memiliki kemampuan untuk mengerjakan perintah aritmatika dan logika. Pada mesin-mesin sederhana, kombinasi antara perintah aritmatika dan logika sering dilakukan untuk mengolah/memanipulasi data tertentu. Manipulasi terjadi hanya di dalam mikroprosesor dan prosesnya tidak dapat dilihat, namun efek dari manipulasi tersebut dapat dilihat dan disimulasikan. Rangkaian untuk mensimulasikan perintah aritmatika ditunjukkan pada gambar 1.
Gambar 1. Rangkaian simulasi untuk perintah aritmatika.
PORTC dan PORTD sebagai input (tanpa pull-up eksternal, PORTA sebagai output.
DSW1 dan DSW2 merupakan komponen DIP SWITCH, dimana kombinasi biner dari masing-masing DIP SWITCH tersebut kemungkinannya adalah mulai dari 00000000 Biner (0 Hex) sampai 11111111 Biner (FF Hex). Misalnya DSW1 adalah bilangan pertama dan DSW2 adalah bilangan kedua, maka antara bilangan pertama dengan bilangan kedua dapat dioperasikan berbagai operasi aritmatika.
B. Dasar Teori
Setiap mikroprosesor memiliki kemampuan untuk mengerjakan perintah aritmatika dan logika. Pada mesin-mesin sederhana, kombinasi antara perintah aritmatika dan logika sering dilakukan untuk mengolah/memanipulasi data tertentu. Manipulasi terjadi hanya di dalam mikroprosesor dan prosesnya tidak dapat dilihat, namun efek dari manipulasi tersebut dapat dilihat dan disimulasikan. Rangkaian untuk mensimulasikan perintah aritmatika ditunjukkan pada gambar 1.
Gambar 1. Rangkaian simulasi untuk perintah aritmatika.
PORTC dan PORTD sebagai input (tanpa pull-up eksternal), PORTA sebagai output.
DSW1 dan DSW2 merupakan komponen DIP SWITCH, dimana kombinasi biner dari masing-masing DIP SWITCH tersebut kemungkinannya adalah mulai dari 00000000 Biner (0 Hex) sampai 11111111 Biner (FF Hex). Misalnya DSW1 adalah bilangan pertama dan DSW2 adalah bilangan kedua, maka antara bilangan pertama dengan bilangan kedua dapat dioperasikan berbagai operasi aritmatika.
KAMUS PERINTAH ARITMATIKA
Sintak | Keterangan | Contoh |
Add Opr1, Opr2
Adc Opr1, Opr2
Sub Opr1, Opr2
Mul Opr1, Opr2 |
Opr1 = Opr1 + Opr2
Opr1 = Opr1 + Opr2 + Cy
Opr1 = Opr1 – Opr2
Opr1 = Opr 1 x Opr2 Mengalikan dua register. Perkalian 8 bit dengan 8 bit menghasilkan bilangan 16 bit yang disimpan di r0 untuk byte rendah dan di r1 untuk byte tinggi. Untuk memindahkan bilangan 16 bit antar register digunakan instruksi movw (copy register word) |
add r15, r14 ; r15 = r15+r14
adc r15, r14 ; r15 = r15+r14
sub r19,r14 ; r19=r19-r14
mul r21,r20 ; r1:r0=r21*r2 |
Instruksi ADD dan SUB.
Instruksi ADD digunakan untuk melakukan operasi penjumlahan 8 bit dan 16 bit. Ada 38 jenis perintah penjumlahan pada mikroprosesor Z-80 CPU. Pada operasi aritmetika 8 bit register A (akumulator) ditambahkan dengan isi sebuah register 8 bit atau data immediate 8 bit, atau data pada satu lokasi memori yang alamatnya dicatat oleh register HL, IX, atau IY. Sedangkan pada operasi aritmetika 16 bit register HL, IX, dan IY berfungsi sebagai akumulator yang dapat ditambahkan dengan isi register BC, DE, HL, SP. Untuk lebih jelasnya perhatikan Tabel 1 berikut ini:
Tabel 1. Instruksi ADD
Instruksi SUB digunakan hanya untuk melakukan operasi pengurangan 8 bit. Pada operasi SUB isi register A dikurangkan dengan salah satu isi register A, B, C, D, E, H, L, atau data immediate 8 bit. Disamping juga isi register A dapat dikurangi dengan data pada suatu lokasi memori yang alamatnya dicatat oleh register HL, IX, dan IY.
Tabel 2. Instruksi SUB
Instruksi ADD dan SUB dapat mempengaruhi status Sign, Zerro, HalfCarry, Overflow, dan Carry pada Register Flag. Pada instruksi ADD flag N = 0 dan pada instruksi SUB flag N = 1. Dua keadaan ini digunakan untuk menyatakan fungsi flag C sebagai carry atau borrow.
Instruksi ADC (ADD With Carry) dan SBC (Sub With Carry)
Instruksi ADC digunakan untuk menambahkan isi register A dengan data 8 bit yang berada pada suatu register atau data immediate atau data suatu memori dan mengikut sertakan bit Carry (C). Instruksi ADC juga digunakan untuk menambahkan isi register HL dengan data 16 bit yang berada pada register BC, DE, HL, dan SP dengan mengikut sertakan bit Carry Flag (C).
Tabel 3. Instruksi ADC
Instruksi SBC digunakan untuk mengurangkan isi register A dengan data 8 bit yang berada pada suatu register atau data immediate atau data suatu memori dengan mengikutsertakan bit carry flag. Instruksi SBC juga digunakan untuk mengurangkan isi register HL dengan data 16 bit yang berada pada register BC, DE, HL, dan SP dengan mengikutsertakan bit Carry Flag (Cy). Hasil dari kedua bentuk pengurangan tersebut dicatat di Register A dan Register HL.
Tabel 4. Instruksi SB
Instruksi INC (Increment) dan DEC (Decrement)
Instruksi INC digunakan untuk menambah isi suatu register atau memori dengan satu nilai. Instruksi ini sangat potensial digunakan untuk membuat counter cacah naik.
Tabel 5. Instruksi INC
Instruksi DEC digunakan untuk mengurangi isi register atau data suatu memori dengan nilai 1.
Tabel 6. Instruksi DEC
C. Perancangan
Modul 3-1
Daftar Komponen
Penjelasan Coding / Syntax
Penjelasan Program
Pada program ini disimulasikan jika kita menekan tombol play, maka lampu akan mati/nyala ketika kita menekan switch. Disini kita menggunakan mulr20,r21 yang artinya nilai pada r20 akan dikalikan dengan nilai pada r21. Mul juga ada perintah dalam operator matematika yang artinya perkalian. Dan untuk switch, jika ke atas adalah bernilai Nol jika ke bawah bernilai Satu. Pada gambar diatas lampu LED yang menyala dan switch yang di tekan tidak sesuai karena nilai pada register sudah di kalikan. Pada perkalian juga kita harus menyimpan nilai pada ro (register nol).
Hasil percobaan operasi aritmatika perkalian
Input*(SW1 … SW8) | Output (LED D7 … D0) | Keterangan |
1 Hex | D2 | Input = 1 Hex berarti 00000001 Bin |
30 Hex | D7, D6 | Input = 30 Hex berarti 00110000 Bin |
4B Hex | D2, D3, D5 | Input = 4B Hex berarti 01001011 Bin |
50 Hex | D6 | Input = 50 Hex berarti 01010000 Bin |
Modul 3-2
Daftar Komponen
Penjelasan Coding dan Syntax
Penjelasan Program
Pada program ini disimulasikan jika kita menekan tombol play, maka lampu akan mati/nyala ketika kita menekan switch. Disini kita menggunakan add r20,r21 yang artinya nilai pada r20 akan ditambahkan dengan nilai pada r21. Add juga ada perintah dalam operator matematika yang artinya penjumlahan. Dan untuk switch, jika ke atas adalah bernilai Nol jika ke bawah bernilai Satu. Pada gambar diatas lampu LED yang menyala dan switch yang di tekan tidak sesuai karena nilai pada register sudah di jumlahkan. Pada simulasi ini, DSW2 menggunakan PORTD dan di set sebagai input karena kita membutuhkan inputan dari switch. Begitu juga dengan DSW1 yang menggunakan PORTC sebagai inputan yang akan kita input melalui switch. Kemudian pada PORTC, nilai disimpan di r20, sedangkan pada PORTD nilai disimpan di r21. Kemudian nilai ditambahkan dengan menggunakan perintah Add r20,r21 yang hasilnya dikeluarkan melalui PORTA yaitu akan dikeluarkan melalui LED.
Tabel 3. Hasil percobaan operasi aritmatika perkalian
Input | Output | |
DSW2 (HEX) | DSW1 (HEX) | LED (D7 … D0) (HEX) |
0F | 0A | D1, D2, D4, D7 |
F0 | A0 | Tidak ada |
C0 | B0 | Tidak ada |
AA | F0 | D5, D6 |
Modul 3-3
Daftar Komponen
Penjelasan Coding/Syntax
Penjelasan Program
Pada program ini disimulasikan jika kita menekan tombol play, maka lampu akan mati/nyala ketika kita menekan switch. Disini kita menggunakan or r20,r21 yang artinya nilai pada r20 akan or kan dengan nilai pada r21. ORjuga ada perintah dalam operator logika. Dan untuk switch, jika ke atas adalah bernilai Nol jika ke bawah bernilai Satu. Pada gambar diatas lampu LED yang menyala dan switch yang di tekan tidak sesuai karena nilai pada register sudah di ORkan. Pada simulasi ini, DSW2 menggunakan PORTD dan di set sebagai input karena kita membutuhkan inputan dari switch. Begitu juga dengan DSW1 yang menggunakan PORTC sebagai inputan yang akan kita input melalui switch. Kemudian pada PORTC, nilai disimpan di r20, sedangkan pada PORTD nilai disimpan di r21. Kemudian nilai ditambahkan dengan menggunakan perintah Add r20,r21 yang hasilnya dikeluarkan melalui PORTA yaitu akan dikeluarkan melalui LED. Jika pada program menggunakan operator logika OR, maka lampu hasil pada operator tersebut akan di OR kan. Lampu LED yang menyala pada simulasi ini adalah :
Tabel 4. Hasil percobaan operasi logika OR
Input | Output | |
DSW2 (HEX) | DSW1 (HEX) | LED (D7 … D0) (HEX) |
5F | CA | D1, D2, D4, D5, D6, D7 |
F3 | A0 | D5, D6, D7 |
C9 | B3 | D0, D1, D3, D7 |
A3 | F7 | D0, D2, D6 |
Modul 3-4
Daftar Komponen
Penjelasan Coding/Syntax
Penjelasan Program
Pada program ini disimulasikan jika kita menekan tombol play, maka lampu akan mati/nyala ketika kita menekan switch. Disini kita menggunakan and r20,r21 yang artinya nilai pada r20 akan and kan dengan nilai pada r21. AND juga ada perintah dalam operator logika. Dan untuk switch, jika ke atas adalah bernilai Nol jika ke bawah bernilai Satu. Pada gambar diatas lampu LED yang menyala dan switch yang di tekan tidak sesuai karena nilai pada register sudah di ANDkan. Pada simulasi ini, DSW2 menggunakan PORTD dan di set sebagai input karena kita membutuhkan inputan dari switch. Begitu juga dengan DSW1 yang menggunakan PORTC sebagai inputan yang akan kita input melalui switch. Kemudian pada PORTC, nilai disimpan di r20, sedangkan pada PORTD nilai disimpan di r21. Kemudian nilai ditambahkan dengan menggunakan perintah Add r20,r21 yang hasilnya dikeluarkan melalui PORTA yaitu akan dikeluarkan melalui LED.
Tabel 5. Hasil percobaan operasi logika AND
Input | Output | |
DSW2 (HEX) | DSW1 (HEX) | LED (D7 … D0) (HEX) |
5F | CA | D1, D2, D4, D5, D6, D7 |
F3 | A0 | D5, D6, D7 |
C9 | B3 | D0, D1, D3, D7 |
A3 | F7 | D0, D2, D6 |
Modul 3-5
Daftar Komponen
Penjelasan Coding/Syntax
Penjelasan Program
Pada program ini disimulasikan jika kita menekan tombol play, maka lampu akan mati/nyala ketika kita menekan switch. Disini kita menggunakan EXOR r20,r21 yang artinya nilai pada r20 akan exor kan dengan nilai pada r21. EXOR juga ada perintah dalam operator logika. Dan untuk switch, jika ke atas adalah bernilai Nol jika ke bawah bernilai Satu. Pada gambar diatas lampu LED yang menyala dan switch yang di tekan tidak sesuai karena nilai pada register sudah di EXORkan. Pada simulasi ini, DSW2 menggunakan PORTD dan di set sebagai input karena kita membutuhkan inputan dari switch. Begitu juga dengan DSW1 yang menggunakan PORTC sebagai inputan yang akan kita input melalui switch. Kemudian pada PORTC, nilai disimpan di r20, sedangkan pada PORTD nilai disimpan di r21. Kemudian nilai ditambahkan dengan menggunakan perintah Add r20,r21 yang hasilnya dikeluarkan melalui PORTA yaitu akan dikeluarkan melalui LED. Karena pada AVR tidak ada perintah EXOR, maka kita menggunakan perintah EOR pada AVR.
Data sampel untuk pengujian :
Input #1 | Input #2 | Input #1 XOR Input #2 | ||
5F | CA | 5F EXOR CA = 95 | ||
F3 | A0 | F3 EXOR A0 = 53 | ||
C9 | B3 | C9 EXOR B3 = 7A | ||
A3 | F7 | A3 EXORÅ F7 = 54 | ||
… | … | … Å … = | ||
… | … |
|
Incoming Terms
- Manipulasi Aritmetika
- Contoh Laporan Instruksi Logika
- Percobaan Aritmatika Dan Logika
- Rangkaian Yang Menggunakan Mikroprosesor
- Laporan Instruksi Logika
- Contoh Laporan Instruksi Dasar Aritmatika Dan Operasi Logika