Lap Mikro 2 (SAF)

23
HALAMAN PENGESAHAN Judul Percobaan : Instruksi Dasar Aritmatika dan Operasi Logika No Praktikum : 02 Nama Pratikan : Sayyid Al Fuad No BP : 1301041028 Kelas/ Kelompok : 2 B EC / 11 Partner : Naufal Ichsan Pembimbing : 1. Era Madona,SST.M.Sc 2. Muhamad Irmansyah, ST.MT. Tanggal Praktikum : 23 Maret 2015 Tanggal Penyerahan : 30 Maret 2015 Keterangan : Nilai :

description

laporan mikro

Transcript of Lap Mikro 2 (SAF)

Page 1: Lap Mikro 2 (SAF)

HALAMAN PENGESAHAN

Judul Percobaan : Instruksi Dasar Aritmatika dan Operasi Logika

No Praktikum : 02

Nama Pratikan : Sayyid Al Fuad

No BP : 1301041028

Kelas/ Kelompok : 2 B EC / 11

Partner : Naufal Ichsan

Pembimbing : 1. Era Madona,SST.M.Sc

2. Muhamad Irmansyah, ST.MT.

Tanggal Praktikum : 23 Maret 2015

Tanggal Penyerahan : 30 Maret 2015

Keterangan :

Nilai :

Page 2: Lap Mikro 2 (SAF)

KATA PENGANTAR

Puji dan syukur penulis ucapkan atas rahmat dan karunia yang diberikan oleh Allah

SWT, sehingga penulis dalam keadaan sehat wal afiat sehingga dapat menyelesaikan laporan

mikroprosesor ini dengan baik dan tepat pada waktunya.

Dalam penyusunan dan penulisan laporan ini masih banyak kekurangan dan kesalahan

dikarenakan kuranganya informasi dan ilmu dalam bidang maintenance. Namun laporan ini

dapat selesai karena bantuan dari beberapa pihak. Oleh karena itu penulis ingin mengucapkan

terimakasih yang sebesar-besarya kepada :

l. Bapak Muhamad Irmansyah, ST.MT. dan Ibuk Era Madona,SST.M.Sc selaku dosen

pembimbing di mata kuliah Mikroprosesor dan Interface.

2. Teman kelompok yang telah mau saling berbagi pengalaman dan saling membantu

dalam praktek di mata kuliah Mikroprosesor dan Interface.

Penulis mengharapakan kritik dan saran yang bersifat membangun demi kelancaran dan

kesempurnaan dalam penyusanan dan penulisan laporan selanjutnya.

Penulis berharap laporan nantinya tidak hanya sebagai pelengkap dari nilai mata kuliah

yang bersangkutan, tetapi juga dapat digunakan sebagai sumber informasi dan ilmu bagi

pembaca, terutama bagi penulis sendiri. Akhir kata penulis minta maaf apabila ada kata-kata

yang kurang berkenan.

Padang, 15 Maret 2015

Penulis

Sayyid Al Fuad

Page 3: Lap Mikro 2 (SAF)

DAFTAR ISI

LEMBAR PENGESAHAN ……………………………………………………… i

DAFTAR ISI ……………………………………………………………………... ii

KATA PENGHANTAR ………………………………………………………… iii

BAB I PENDAHULUAN

1.1 Tujuan Percobaan....................................................................................1

1.2 Landasan Teori........................................................................................1

BAB II PERCOBAAN

2.1 Langkah Kerja ........................................................................................6

2.2 Membuat Program ...................................................................................7

BAB III HASIL PERCOBAAN

3.1 Data Hasil Percobaan..............................................................................9

3.2 Analisa Data .............................................................................................9

BAB IV PENUTUP

4.3 Kesimpulan..............................................................................................12

4.4 Saran..........................................................................................................12

DAFTARPUSTAKA………………………………………………………………..13

Page 4: Lap Mikro 2 (SAF)

BAB I

PENDAHULUAN

1.1. Tujuan

Membiasakan para pemakai dengan instruksi aritmatika dan operasi logika.

Menjelaskan tentang mode pengelamatan memori.

Latihan menyusun data untk register-register CPU dan bagian memori.

1.2. Landasan Teori

a. Instruksi aritmatika 8 bit dan instruksi operasi logika.

Instruksi aritmatika 8 bit dan operasi-operasi logika dalam CPU Z80 dilandaskan

pada register A (acculumator). Register-register A,B,C,D,E,H dan L dapat digunakan

sebagai operand bersama-bersama dengan register A pada instruksi-instruksi LD. Jika data

ditransfer antara memori dan register A, alamat memori dapat ditunjukkan oleh register-

register HL, IX, IY. Dibawah ini terdapat instruksi aritmatika dan instruksi operasi logika

beserta artinya :

ADD A : Data pada register A ditambahkan pada register A sendiri,

Artinya data diduakalikan atau digeser ke kiri satu bit.

ADC B : Isi register B bersama dengan carry flag ditambahkan pada

register A.

SUB C : Data pada register A dikurangi dengan data pada register C.

SBC (HL) : Isi register A dikurangi dengan isi memori yang alamatnya

Ditunkukkan ileh HL, dikurangi lagi dengan carry flag.

AND D : Operasi logika “AND” antara register D dengan register A.

OR 0FH : Operasi logika “OR” antara data 0FH dengan register A.

XOR A : Operasi “Exclusive-OR” antara register A dengan dirinya sendiri

INC H : Menambah isi register H dengan 1.

INC (IX) : Menambah isi memori pada alamat yang ditunjukkan oleh IX

dengan 1.

Page 5: Lap Mikro 2 (SAF)

DEC C : Mengurangi isi register C dengan 1.

DEC (IY+3) : Hasil penjumlahan isi register IY dan tiga dipakai sebagai

penunjuk alamat pada memori. Isi memori pada alamat yang

ditunjukkan oleh IY+3 dikurangi dengan 1.

b. Metode pengelamatan data.

Pada instruksi-instruksi bahasa assembly diatas, mode pengelamatan yang dipakai

dapat diringkas seperti dibawah ini. Mode pengelamatan yang lain dapat dilihat bahwa Z80

CPU technical manual.

Pengelamatan Register.

Contoh : pada instruksi ACD A,B,ADC adalah opcode yang menyatakan

operasi macam apa yang akan dilaksanakan. Huruf A disebelah kanan

menyatakan bahwa a=data akan ditambahkan ke register A. Huruf B disebelah

kanan huruf A yang menyatakan bahwa data ditambahkan ke A diambil dari

register A.

Pengelamatan register tak langsung.

Suatu register 16 bit digunakan untuk menyimpan alamat memori.

Contoh : pada instruksi SBC A,(HL), bukan berarti bahwa register A dikurangi

isi register HL. Tetapu CPU akan melihat data 16 bit yang terdapat pada HL

sebagai alamat memori, lalu memeriksa data 8bit yang tersimpan di memori

pada alamat yang alamtnya ditunjukkan dengan IX+2. Hasilnya disimpan dalam

register A.

LD A,(IX)

ADD A,(IX+2)

Pengelamatan langsung.

Contoh : OR 0FH. Disebelah kanan op-code OR, terdapat bilangan 0FH. Hal ini

berarti bahwa bilangan 0FH di OR kan secara logika dengan register A. Baik

data 0FH maupun juga programnya disimpan di memori. CPU mengambil data

dengan melihat PC sebagai alamat rujukan. Contoh-contoh dibawah ini juga

merupakan pengelamatan langsung.

Page 6: Lap Mikro 2 (SAF)

LD B,8

ADD A,44H

SUB A,0A4H

c. Status flag.

Setelah suatu operasi logika atau arithmatika selesai dilaksanakan, hasilnya akan

disimpan pada register A dan beberapa status flag (carry, overflow, chage sign, zero result,

parity) juga akan terpengaruh. Status flag ini akan disimpan dalam flip-flop di CPU Z80.

Flip-flop ini membentuk suatu register yang disebut flag register. Data pada register ini

dapat dipindahkan ke memori seperti juga register-register lain dengan menggunakan

instruksi-instruksi khusus (instruksi PUSH). Beberapa status flag diterangkan dibawah ini :

Carry flag.

Carry flag ini akan berada dalam keadaan set (1) bila dalam operasi

penjumlahan yang tidak diberi tanda (+ atau -) hasil yang didapat lebih besar

daripada dalam operasi pengurangan, terjadi dalam keadaan set apabila dalam

operasi pengurangan, terjadi peminjaman. Carry flag juga digunakan sebagai

suatu syarat untuk instruksi-instruksi “jam”, “call”, atau atau “return”. Flag ini

juga berfungsi sebagai penghubung dalam operasi-operasi aritmatika yang

digunakan lebih dari 1 bit. Tiga buah data 8 bit dapat dihubungkan dengan suatu

data 24 bit dengan menggunakan flag carry, 4 data 8 bit juga dihubungkan

sebagai data 32 bit.

Over flow atau Parity flag.

Pada operasi aritmatika komplemen kedua yang menggunakan data ( dapat +

maupun -) maka flag ini berfungsi sebagai overflow flag. Overflow flag dalam

Z80 menyatakan bahwa bilangan komplemen kedua bertanda pada accumulator

telah melebihi kapasitas maksimum (+127) atau kurang dari kapasitas minimum

(-128).

Ketika suat operasi aritmatika dilakukan didalam CPU Z80, bilangan pada

register A dapat dianggap sebagai data yang tidak diberi tanda (0 sampai 255)

atau data yang bertanda (-128 sampai +127). Dengan demikian baik carry flag

Page 7: Lap Mikro 2 (SAF)

maupun overflow flag dapat dipengaruhi oleh operasi aritmatika dengan

keterangan disebelah kananya.

10101100 bilangan tak bertanda 172 atau bilangan bertanda -84.

+ 11101000 bilangan tak bertanda 232 atau bilangan bertanda -24.

------------

1 10010100 bilangan tak bertanda 184, carry flag = 1 atau

bilangan bertanda -180 dengan overflow flag = 0.

01001010 bilangan 74 bertanda atau tidak.

+ 01000010 bilangan 66 bertanda atau tidak.

------------

1 10001100 bilangan 140 tak bertanda, dengan carry flag = 0,

atau bilangan bertanda -166 dengan overflow flag =

-1, hasilnya menjadi negative.

Untuk operasi logika pada CPU Z80, flag ini = 1 bila hasil parity 8 bit pada

accumulator adalah genap. Flag ini sangat berguna untuk transmisi data. Karna

carry dan overflow tidak akan terjadi dalam operasi logika.. status parity dan

overflow dapat disimpan dalam flip-flop yang sama. Flip-flop disebut P/V flag.

Dengan memeriksa parity ini programmer dapat memeriksa overflow setelah

operasi-operasi aritmatika dan memriksa parity setelah operasi-operasi logika.

Zero flag

Jika register A sama dengan 0 setelah operasi logika atau aritmatika, keadaan

atau status ini akan dicatat dalam flip-flop yang disebut zero flag. Zero flag

dapat digunakan sebagai sarat untuk instruksi-instruksi bercabang, juga berguna

dalam pembuatan “LOOP”.

Page 8: Lap Mikro 2 (SAF)

Sign flag

Jika bit yang paling kiri (bit 7) dari register A adalah satu setelah operasi logika

atau aritmatika, bilangan pada register A di interprestasikan sebagai bilangan

negative. Sign flag ini akan diset menjadi satu. Flag ini akan diabaikan bila

programmer telah menunjuk datanya sebagai bilangan-bilangan tanpa ada.

Flag-flag lain

Flag-flag lain yang dirancang untuk operasi aritmatika BCD tidak lah penting

bagi programmer. Format register yang dibentuk oleh flag ini terlihat seperti

dibawah ini.

S Z P/V C

Sign Zero Parity/ CarryOverflow

Pada mikrokomputer, isi flag register biasanya dinyatakan dengan dua digit

hexadecimal. Pemakai harus menyatakan data dua digit ini dengan suatu

bilangan bener delapan bit. Misalnya, jika flag register adalah 3CH, sign flag

menyatakan positif, nilai tidak nol, parity genap, atau terjadi overflow tapi tidak

ada carry.

Page 9: Lap Mikro 2 (SAF)

BAB II

PERCOBAAN

2.1. Langkah Kerja

PERCOBAAN 1

1. Tulislah program bahasa assembly dan akhiri dengan instruksi terakhir RST 38H.

Instruksi ini akan mengambilkan control uPro-1 pada program monitor setelah

menjalankan seluruh program.

2. Dengan menggunakan table instruksi, terjemahkan program ke dalam bahasa

mesin dengan 1800H sebagai alamat awal. Tuliskan alamat yang sesuai untuk tiap-

tiap instruksi.

3. Siapkan mikrokomputer uPro-1. Catat data sebelum eksekusi dengan mengisi data

pada register/memori sesuai dengan nilai preset pada table.

4. Masukkan program dengan menekan tombol-tombol pada keyboard. Periksa

program yang tersimpan dalam memori.

5. Jalankan program (eksekusi), dengan menekan tombol ADDR dan tekan alamat

awal yang digunakan pada program (1800) kemudian tekan tombol GO.

6. Catatlah kembali data setelah eksekusi yang ada pada register dengan mengisi data

pada register/memori sesuai dengan tebel.

7. Bandingkanlah data pada register sebelum program dieksekusi dan seetelah

eksekusi. Periksalah apakah tiap-tiap register sudah benar. Bila masih ada

kesalahan, kemballilah pada langkah 1 dan periksa lagi.

8. Ulangi langkah 1 sampai 3 untuk percobaan II dan III.

Page 10: Lap Mikro 2 (SAF)

2.2. Membuat Program

a. Pertambahan (Percobaan 1).

Start Mnnemonic Op-Code AlamatD 54 LD D, 54 16 54 1800 – 1801E 64 LD E, A6 1E A6 1802 – 1803A D LD A, D 7A 1804A A + E ADD, A, E 83 1805L A LD L, A 6F 1806

Stop RST-38 FF 1807

b. Pertambahan (Percobaan 2).

Start Mnnemonic Op-Code AlamatD FE LD D, FE 16 FE 1800 – 1801E CE LD E, CE 1E CE 1802 – 1803A D LD A, D 7A 1804A A + E ADD, A, E 83 1805L A LD L, A 6F 1806

Stop RST-38 FF 1807

c. Pertambahan 16-bit dengan menggunakan memori (Percobaan 3).

Start Mnemonic Op-Code AlamatA 99 LD A, 99 3E 99 1800 – 1801(1A00) A LD (1A00), A 32 00 1A 1802 – 1803 – 1804A (1A00) LD A, (1A00) 3A 00 1A 1805 – 1806 – 1807E BC LD E, BC 1E BC 1808 – 1809A A + E ADD A, E 83 180AL A LD L,A 6F 180BA FF LD A, FF 3E FF 180C – 180D(1A01) A LD (1A01), A 32 01 1A 180E – 180FA (1A01) LD A, (1A01) 3A 01 1A 1810 – 1811E 98 LD E, 98 1E 98 1812 – 1803A A+E+CY ADC A+E+CY 8B 1804 – 1805HL A LD H,A 67 1806 – 1807

Stop RST-38 FF 1808

d. Pertambahan 16-bit dengan menggunakan memori (Percobaan 4)

Page 11: Lap Mikro 2 (SAF)

Start Mnemonic Op-Code AlamatA 99 LD A, FC 3E FC 1800 – 1801(1A00) A LD (1A00), A 32 00 1A 1802 – 1803 – 1804A (1A00) LD A, (1A00) 3A 00 1A 1805 – 1806 – 1807E BC LD E, EF 1E EF 1808 – 1809A A + E ADD A, E 83 180AL A LD L,A 6F 180BA FF LD A, AF 3E AF 180C – 180D(1A01) A LD (1A01), A 32 01 1A 180E – 180FA (1A01) LD A, (1A01) 3A 01 1A 1810 – 1811E 98 LD E, EC 1E EC 1812 – 1803A A+E+CY ADC A+E+CY 8B 1804 – 1805HL A LD H,A 67 1806 – 1807

Stop RST-38 FF 1808

BAB III

Page 12: Lap Mikro 2 (SAF)

HASIL PERCOBAAN

3.1. Tabel Hasil Percobaan

Percobaan 1 dan 2

Nilai Preset Hasil Pelaksanakan ProgramRegister Register Flag

D E HL Sign Zero P/V Carry54h A6h BC FA 1 1 0 0FEh CEh BC CC 1 0 0 1

Percobaan 3 dan 4

Nilai Preset Hasil Pelaksanakan ProgramMemori Register Register Flag

(1A01)

(1A00) DE HL Sign Zero P/V Carry

FFh 99h 98 BC 98 55 1 0 0 1AEh FCh EC EF 9C EB 1 0 0 1

3.2. Analisa Data

Percobaan 1 dan 2 adalah pertambahan suatu isi register dengan isi register. Register yang ditambah adalah register D dengan E. Namun, karena dalam Instruction Set tidak ada instruksi untuk menambah D dengan E, maka kita akali sedikit dengan memindahkan isi register D ke register A, barulah kita melakukan operasi A + E karena operasi A + E ada dalam Instruction Set Z-80. A + E tidak ada bedanya dengan D + E karena isi register A sama dengan isi register D karena telah dipindahkan isinya. Mnemonic yang dipakai dalam pertambahan adalah ADD. Hasil pada percobaan ini disimpan dalam register L.

Pada suatu penjumlahan, ada dua kemungkinan. Ada carry atau tidak. Cara untuk mengetahui ada atau tidaknya Carry dalam suatu penjumlahan adalah dengan mengecek isi dari register F, karena isi register F mewakili suatu penjumlahan tersebut terhadap Carry. Karena isi dari suatu register dalam bentuk bilangan BCD, untuk menentukan ada atau tidaknya Carry kita ubah formatnya kedalam bilangan Biner.

Berikut hasil Penjumlahan beserta Carry pada percobaan 1 dan 2

Page 13: Lap Mikro 2 (SAF)

Percobaan 1 :

54h + A6h = FAh

Register F = A8h = 1010 1000

Sign Zero - - - P/V - Carry1 0 1 0 1 0 0 0

Percobaan 2

FEh + CE = CC

Register F = 99h = 1001 1001

Sign Zero - - - P/V - Carry1 0 0 1 1 0 0 1

Jika percobaan 1 dan 2 penjumlahan dilakukan dengan metode 8 bit, maka pada percobaan 3 dan 4 secara 16-bit. Pada percobaan dengan metode 16-bit, digunakan bantuan alamat untuk pengopersian suatu penjumlahan. Jika diteliti lebih lanjut, percobaan ini sama saja dengan metode 8-bit namun dilakukan 2 kali dalam suatu waktu. Alamat dibutuhkan karena pada penjumlahan 8-bit pertama (dimulai dari low bit) bisa terdapat Half Carry yang akan mempengaruhi operasi penjumlahan 8-bit selanjutnya.

Operasi penjumlahan pertama disimpan sementara pada alamat 1A00, lalu operasi kedua pada alamat 1A01. Pada opersi penjumlahan di 8-bit kedua, kita harus memasukkan perintah tambahkan 1 (Carry) yang didapatkan dari hasil pertambahan di 8-bit pertama, kedalam operasi pertambahan pada 8-bit yang kedua. Mnemonic yang digunakan untuk menyertakan Half Carry adalah ADC.

Berikut hasil penjumlahan pada percobaan 3 dan 4 :

Percobaan 3 :

8-bit pertama = (1A00) = 99 + BC = 55 (terdapat Carry dan akan dimasukkan ke 1A01).

8-bit kedua = (1A01) = FF + 98 = 198 / 98 (1 adalah carry yang akan dimasukkan pada

1A02).

Jadi hasil penjumlahan dari : FF99 + 98BC adalah = 9855 (terdapat carry).

Percobaan 4 :

Page 14: Lap Mikro 2 (SAF)

8-bit pertama = (1A00) = FC + EF = EB (terdapat Carry dan akan dimasukkan ke 1A01).

8-bit kedua = (1A01) = AF + EC = 19C / 9C (1 adalah carry yang akan dimasukkan pada

1A02).

Jadi hasil penjumlahan dari : AFFC + EFEC adalah = 9CEB (terdapat carry).

Kita cek register F untuk menentukan flagnya, karena pada percobaan 3 dan 4 isi dari register F adalah sama-sama 99h dan jika diubah ke bilanga Biner menjadi 1001 1001 maka flagnya :

Sign Zero - - - P/V - Carry1 0 0 1 1 0 0 1

BAB IV

Page 15: Lap Mikro 2 (SAF)

PENUTUP

4.1. Kesimpulan

a. Dalam pengoperasian penjumlahan, jika suatu instruksi tidak tersedia pada modul

maka kita harus memindahkan variabel tersebut kedalam instruksi yang tersedia.

b. Mnemonic untuk menambahkan suatu register dengan register lain adalah ADD.

c. Untuk mengetahui suatu penjumlahan terdapat Carry atau tidak adalah dengan

memeriksa register F lalu ubah hasilnya kedalam bentuk biner dan sesuaikan denga

flag-flag yang sudah ditentukan.

d. Dibutuhkan bantuan alamat untuk pengoprasian penjumlahan 16-bit

e. Pada penjumlahan 16-bit, pengoperasian penjumlahan dari 8-bit high harus

melibatkan Carry yang didapatkan dari pengopersian penjumlahan 8-bit high low jika

ada.

f. Mnemonic yang digunakan untuk melibatkan Carry dalam pengoperasian

penjumlahan 16-bit adalah ADC.

4.2. Saran

a. Berdoalah terlebih dahulu sebelum melakukan praktek.

b. Pakailah jas lab ketika memasuki labor.

c. Dengarkan instruksi dosen demi kelancaran dalam praktek.

d. Gunakan alat alat seusuai dengan fungsinya demi mencegah terjadinya kerusakan

alat.

e. Kembalikan alat alat dan rapikan meja kerja apabila telah selesai melakukan praktek.

DAFTAR PUSTAKA

Page 16: Lap Mikro 2 (SAF)

JOBSHEET PRATIKUM LABORATORIUM MIKROPROSESOR DAN INTERFACE