Laporan Praktikum Assembly Modul 2 Kelompok 3 – Instruksi Aritmatika dan Logika pada Microproccessor Z-80 12-04-2016

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.

12

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.

13

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

1

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

2

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

3

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

4

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

5

Instruksi DEC digunakan untuk mengurangi isi register atau data suatu memori dengan nilai 1.

Tabel 6. Instruksi DEC

6

C. Perancangan

Modul 3-1

Daftar Komponen

b1

Penjelasan Coding / Syntax

3-1

Penjelasan Program

3131

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

dsa

Penjelasan Coding dan Syntax

3-2

Penjelasan Program

S3-2

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

dsa

Penjelasan Coding/Syntax

3-3

Penjelasan Program

676

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

dsa

Penjelasan Coding/Syntax

kmkk

Penjelasan Program

676

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

dsa

Penjelasan Coding/Syntax

2222

Penjelasan Program

676

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
…  Å  … =
…  EXOR  … =

…  EXOR  … =

Share Button

By Rinaldo Jonathan

Admin of this site. Artis papan PCB. #zoneRinaldo #Controllerism Studio Demon, Stage Angel, Sleepy Developer, Smoke free. Kalkud SHS 2012, PCR G15.

Leave a Reply

Verified by ExactMetrics