LAPORAN PRAKTIKUMMIKROPROSESSOR
Program dengan loop
NAMA : Ahmad Zulfan
NIM : 1120402010
KELAS : D 2
PRODI : TEKNIK TELEKOMUNIKASI
KEMENTRIAN PENDIDIKAN NASIONAL
POLITEKNIK NEGERI LHOKSEUMAWE
Lembar Pengesahan
Judul Praktikum : Pemrograman java dengan JCREATOR
No Praktikum : 02/ LAB. JARINGAN KOMPUTER
Nama : Ahmad Zulfan
Nim : 1120402010
Jurusan/ Prodi : T.Elektro/ T.Telekomunikasi
Tanggal Praktikum : 2 – 03 - 2013
Tanggal Penyerahan : 16 – 03 - 2013
Nilai :
Dibuat Diperiksa Mahasiswa, Dosen Pembimbing,
( Ahmad Zulfan) (Hanafi, ST, M,Eng) Nim. 1120402010 Nip. 196901172002121001
i
Daftar Isi
Lembar Pengesahan ………………………… i
Daftar isi ………………………………… ii
I. Tujuan praktikum ………………………… 1
II. Dasar Teori ………………………………… 1
III. Peralatan yang digunakan …………………… 1
IV. Teori penunjang ……………………………… 2
V. Langkah percobaan ………………………….. 6
VI. Program dan Flowchart ……………………… 7
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
1
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
Loop 2
(a)
Loop 1
(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).
2
Instruksi 1
Instruksi 2
Instruksi 3
Instruksi 4
Instruksi 5
Instruksi 6
Instruksi 7
Kode operasi instruksijump
Byte alamat(rendah)
Byte alami(tinggi)
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.
3
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 operasiinstruksi CALLAwal 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.
4
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.
6
HL ← HL + 1
C ← C – 1
Mulai
DE : A000h HL : A020h C : 0Ah
A ← DE
HL ← A
DE ← DE + 1
C = 0 ?
Selesai
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
DCR C
JNZ LooP1
HLT
7
Mulai
DE : C000h HL : C030h C : 1Dh
B. Program untuk mengambil data dan menjumlahkan data tersebut dengan bilangan angka 7.
.ORG 9000hMVI D,0C0h
MVI E,0
MVI H,0C0h
MVI L,30h
MVI C,1Dh
Loop1:LDAX D
ADI 07h
MOV M,A
INX D
INX H
DCR C
JNZ LooP1
HLT
8
A A + 07h
C = 0 ?
Selesai
HL ← HL + 1
C ← C – 1
A ← DE
HL ← A
DE ← DE + 1
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
9
Mulai
A : 00h B : 0Ah C : 06h
A A + B
C=0?
C C - 1
Selesai
VII. Penyelesaian Tugas A. Program untuk mengambil data dari lokasi memori yang berurutan.
Input Data Output DataAlamat Data Alamat DataA000 24 D000 24A001 00 D001 00A002 3B D002 3BA003 22 D003 22A004 10 D004 10A005 4F D005 4FA006 5C D006 5CA007 FF D007 FFA008 80 D008 80A009 8D D009 8D
10
B. Program untuk mengambil data dan menjumlahkan data tersebut dengan bilangan tertentu.
11
Input Data Output DataAlamat Data Alamat DataC000 15 D000 1CC001 4F D001 56C002 28 D002 2FC003 9B D003 A2C004 30 D004 37C005 BC D005 93C006 2D D006 34C007 66 D007 6DC008 1E D008 25C009 5D D009 64C00A AF D00A B6C00B A9 D00B B0C00C 21 D00C 28C00D C0 D00D C7C00E DC D00E E3C00F B1 D00F B8C010 1B D010 22C011 56 D011 5DC012 00 D012 07C013 BB D013 C2C014 CC D014 D3C015 DD D015 E4C016 AA D016 B1C017 A9 D017 B0C018 6B D018 72C019 7C D019 83C01A 8F D01A 94C01B 900 D01B 97C01C 45 D01C 4CC01D 2A D01D 00
12
C. Perkalian dua buah bilangan biner 4 bit
13
VIII. Analisa
Register B A0 0E 0F 03 0E 02 05 09Register C 00 03 0E 0A 09 0D 08 0FRegister A C0 2A D2 1E 7E 1A 28 87
14
IX. Kesimpulan
15