lap mikro 2 (saf)
Post on 22-Dec-2015
17 Views
Preview:
DESCRIPTION
TRANSCRIPT
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 :
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
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
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.
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.
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
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”.
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.
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.
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)
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
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
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 :
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
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
JOBSHEET PRATIKUM LABORATORIUM MIKROPROSESOR DAN INTERFACE
top related