Anda di halaman 1dari 18

LAPORAN PRAKTIKUM MIKROPROSESSOR

Program dengan loop

NAMA NIM KELAS PRODI

: Syukrul : 1120402024 :D2 : TEKNIK TELEKOMUNIKASI

KEMENTRIAN PENDIDIKAN NASIONAL POLITEKNIK NEGERI LHOKSEUMAWE

Lembar Pengesahan

Judul Praktikum No Praktikum Nama Nim Jurusan/ Prodi

: Pemrograman java dengan JCREATOR : 02/ LAB. JARINGAN KOMPUTER : Syukrul : 1120402024 : T.Elektro/ T.Telekomunikasi

Tanggal Praktikum Tanggal Penyerahan

: :

2 03 - 2013 16 03 - 2013

Nilai

Dibuat Mahasiswa,

Diperiksa Dosen Pembimbing,

( Syukrul) Nim. 1120402024

(Hanafi, ST, M,Eng) Nip. 196901172002121001

Daftar Isi

Lembar Pengesahan

Daftar isi

ii

I.

Tujuan praktikum

II.

Dasar Teori

III.

Peralatan yang digunakan

IV.

Teori penunjang

V.

Langkah percobaan ..

VI.

Program dan Flowchart

VII.

Penyelesaian tugas

10

VIII.

Analisa

15

IX.

Kesimpulan

16

X.

Daftar pustaka

17

ii

Program dengan loop

I.

Tujuan 1. Untuk membuat mahasiswa dapat mempelajari microprocessor dengan baik.

II.

Dasar Teori Salah satu kelebihan microprocessor/komputer adalah dapat melaksanakan suatu tugas yang sama secara berulang-ulang untuk melakukan tugas semacam ini. Suatu program harus mempunyai kemampuan untuk kembaki ke instruksi sebelumnya (membuat loop). Microprocessor melaksanakan program loop dengan menggunkan kelompok instruksi percabangan (lompat). Dengan adanya instruksi percabangan maka urutan eksekusi program yang normal (dari atas ke bawah) akan berubah. Pada umumnya instruksi yang digunakan untuk membuat loop adalah JUMP, CALL, RETURN, dan RESTART. Sasaran Belajar Membedakan penggunaakn instruksi percabangan bersyarat dan tidak bersyarat. Membuat bagan alir untuk program-program yang menggunakan loop. Membuat progran dengan loop dengan serta mengeksekusinya.

III.

Peralatan yang Digunkan Komputer Trainer microprocessor MIDIKOM

IV.

Teori Penunjang Microprocessor 8085 menyediakan 29 instruksi percabangan (lompat) yang dapat digunakan oleh pemakai. Ke 29 instruksi tersebut terbagi ke dalam kelompok instruksi percabangan bersyarat dan tanpa syarat. Instruksi JMP tidak bersyarat dan bersyarat Instruksi percabangan tidak bersyarat, misalnya JMP instruksi ini merupakan tiga byte instruksi yakni byte pertama untuk kode operasi instruksi tersebut dan byte ke dua dan ketiga untuk alamat. (lihat gambar 3.1a). Memori Urutan program utama Instruksi 1 Loop 2 Instruksi 2 Instruksi 3 Instruksi 4 Instruksi 5 Instruksi 6 Loop 1 Instruksi 7 (b) Gambar 3.1 instruksi JMP Apabila instruksi JMP ini dieksekusi, alamat yang terdapat pada byte dua dan tiga akan dipindahkan ke program counter (register PC). Dengan demikian microprocessoe akan menjemput instruksi selanjutnya dengan alamat yang ada di program counter. Instruksi JMP dapat digunakan untuk membuat loop maju (loop1) atau mundur (loop2).

Kode operasi instruksi jump Byte alamat (rendah) Byte alami (tinggi)

(a)

Seperti terlihat pada gambar 3.1b instruksi ini juga dapat digunakan untuk menjalankan program terus-menerus dalam suatu loop kontinyu instruksi-instruiksi lompat bersyarat terdiri atas : JZ (jump if zero) JZN (jumpif zero flag not set) JNC (jump if carry flag is 0) JC (jump if carry flag is 1) JPO (jump if the parity of the byte in the accumulator is odd) JP (jump if sign bit 0, menunjukkan isi akumulator adalah positif) JM (jump if sign bit is 1, untuk menunjukkan bahwa akumulator berisi bilangan negatif)

Instruksi-instruksi tersebut di atas hanya akan dilaksanakan oleh MPU. Apabila kondisi yang diminta dipenuhi. Sebagai contoh pada instruksi JZ (jump is zero), percabangan hanya akan menjadi apabila bit zero dari register flag adalah satu (Z = 1). Zero flag akan berlogika satu apabila hasil suatu operasi aritmatika atau logika sama dengan nol. (isi akumulator = 00h). Selain instruksi-instruksi JUMP di atas, terdapat pula instruksi PCHL. Instruksi ini akan menggantikan alamat yang ada di program counter dengan isi register HL. Apabila instruksi PCHL dilaksanakan, maka akan terjadi percabagan secara tidak bersyarat. Instruksi CALL, Return Instruksi-instruksi CALL alamat digunakan untuk memanggil suatu subprogram atau rutin. Rutin adalah suatu bagian program pendek yang melaksanakan tugas tertentu. Misalnya perkalian dua buah bilangan. Jika rutin tersebut akan digunakan berulang kali dalam suatu program, maka dapat ditulis sekali pada memori sebagai subrutin, dan dapat dipanggil setiap kali dipergukan. Apabila instruksi CALL ini dieksekusi, maka isi program counter akan diganti dengan alamat awal dari subrutin yang dipanggil dalam memori. Urutan eksekusi program oleh microprocessor akan seperti yang ditunjukkan oleh gambar 3.2.

Untuk mengembalikan microprocessor ke dalam program utama (setelah menyelesaikan subrutin), instruksi RETURN sebagai pasangan instruksi CALL.

Sub 1 Urutan program utama -

CALL sub 1 -

CALL sub 2 -

Gambar 3.2 instruksi call dan return Memori Kode operasi instruksi CALL Awal subrutin (Rendah) Byte alamat awal subrutin (Tinggi) Gambar 3.3 pola instruksi CALL Instruksi CALL adalah instruksi tiga byte (lihat gambar 3.2), byte pertama berisi kode operasi untuk instruksi, sedangkan byte yang kedua dan ketiga berisi alamat awal dari subrutin. Seperti halnya instruksi JMP, instruksi CALL juga dapat bersyarat atau tanpa syarat.

Instrukis-instruksi CALL dengan syarat yaitu : CNZ (call if zero flag not sel) CZ (callif zero) CNC (call if carry flag is 0) CC (call if carry flag is 1) CPO (call if the parity is odd) CPE (call if parity is even) CP (call if positive) CM (call if minus) Ketika MPU menjumpai instruksi CALL, maka MPU akan menyimpan alamat kembali (alamat instruksi selanjutnya setelah subrutin selesai dijalankan) pada suatu bagian memori baca tulis (RAM) tertentu yang disebut stack. Alamat kembali ini dimuat ke dalam register stack pointer dengan menggunakan instruksi LXI SP pada awal program. Untuk mengembalikan microprocessor ke program utama, INTEL 8085 mempunyai instruksi RET bersyarat dan RET tidak bersyarat yang termasuk instruksi RET bersyarat adalah. RZ (return if zero) RNC (return if not carry) RC (return if carry) RPO (return if parity odd) RPE (return if parity even) RP (return if plus) RM (return if minus)

Perincian program subroutine (pemakai instruksi-instruksi CALL dan RET) akan dibahas lebih lanjut pada Bab 19. Pada bab 3 tersedia tiga buah latihan yang dapat dilakukan oleh saudara, yaitu sebagai berikut : A. Latihan membuat program untuk pengambilan data pada suatu blok lokasi memori, dan menyimpan data-datatermasuk pada blok lokasi memori yang lainnya. B. Latihan membuat progran untuk pengambilan data dan menambahkan suatu bilangan tertentu kepada masing-masing data kemudian menyimpannya pada lokasi memori yang lain. C. Latihan membuat program perkalian 2 bilangan biner 4 bit yang berbeda masing-masing bilangan biner tersebut tersimpan pada register B dan register C. 5

V.

Langkah Percobaan dan Latihan

A. Program untuk mengambil data dari lokasi memori yang berurutan. Membuat bagan alir dan program untuk mengambil 10 data yang terdapat pada alamat A000h sampai dengan A009h, dan menyimpan data tersebut pada lokasi memori yang berurutan (alamat A020h sampai A029h). menuliskan program mulai alamat B000h.

B. Program untuk mengambil data dan menjumlahkan data tersebut dengan bilangan tertentu. Membuat bagan alir dan program untuk mengambil 30 data yang terdapat pada blok memori C000h - C010h, menambahkan setiap data dengan angka 7. dan menyimpan data tersebut pada lokasi memori yang berurutan (alamat A020h sampai A029h). menuliskan program mulai alamat 9000h. C. Perkalian dua buah bilangan biner 4 bit Membuat bagan alir dan program untuk mengalikan 4 bit bilangan biner pada reg B dengan 4 bit bilangan biner pada reg C dan menyimpan hasilnya pada alamat 1000h, menuliskan program di mulai pada alamat A000h.

VI.

Program dan Flowchart

A. Program untuk mengambil data dari lokasi memori yang berurutan. . ORG 0B000h MVI D,0A0h MVI E,0 MVI H,0A0h MVI L,20h MVI C,0Ah Loop1: LDAX D MOV M,A INX D INX H
HL HL + 1 HL A A DE DE : A000h HL : A020h C : 0Ah Mulai

DE DE + 1

DCR C JNZ LooP1 HLT


C=0? CC1

Selesai

B. Program untuk mengambil data dan menjumlahkan data tersebut dengan bilangan angka 7. .ORG 9000h MVI D,0C0h MVI E,0 MVI H,0C0h MVI L,30h MVI C,1Dh Loop1: LDAX D ADI 07h
A A + 07h A DE DE : C000h HL : C030h C : 1Dh Mulai

MOV M,A INX D INX H DCR C JNZ LooP1 HLT


CC1 DE DE + 1 HL A

HL HL + 1

C=0?

Selesai

C. Program perkalian dua buah bilangan biner 4 bit .ORG 0A000h MVI A,00h MVI B,0A0h MVI C,06h Loop1: ADD B DCR C JNZ LooP1 HLT
C=0? A A+B A : 00h B : 0Ah C : 06h Mulai

CC-1

Selesai

VII. Penyelesaian Tugas A. Program untuk mengambil data dari lokasi memori yang berurutan.

Input Data Alamat Data A000 24 A001 00 A002 3B A003 22 A004 10 A005 4F A006 5C A007 FF A008 80 A009 8D

Output Data Alamat Data D000 24 D001 00 D002 3B D003 22 D004 10 D005 4F D006 5C D007 FF D008 80 D009 8D

10

B. Program untuk mengambil data dan menjumlahkan data tersebut dengan bilangan tertentu.

11

Input Data Alamat Data C000 15 C001 4F C002 28 C003 9B C004 30 C005 BC C006 2D C007 66 C008 1E C009 5D C00A AF C00B A9 C00C 21 C00D C0 C00E DC C00F B1 C010 1B C011 56 C012 00 C013 BB C014 CC C015 DD C016 AA C017 A9 C018 6B C019 7C C01A 8F C01B 900 C01C 45 C01D 2A

Output Data Alamat Data D000 1C D001 56 D002 2F D003 A2 D004 37 D005 93 D006 34 D007 6D D008 25 D009 64 D00A B6 D00B B0 D00C 28 D00D C7 D00E E3 D00F B8 D010 22 D011 5D D012 07 D013 C2 D014 D3 D015 E4 D016 B1 D017 B0 D018 72 D019 83 D01A 94 D01B 97 D01C 4C D01D 00

12

C. Perkalian dua buah bilangan biner 4 bit

Register B Register C Register A

A0 00 C0

0E 03 2A

0F 0E D2

03 0A 1E

0E 09 7E

02 0D 1A

05 08 28

09 0F 87

13

VIII. Analisa

14

IX.

Kesimpulan

15