laporan ii

Upload: arisman-nazri

Post on 19-Oct-2015

62 views

Category:

Documents


8 download

DESCRIPTION

Sistem

TRANSCRIPT

PROGRAM DENGAN LOOP

Salah satu kelebihan mikroprosesor/computer adalah dapat melaksanakan suaru tugas yang sama secara erulang-ulang.Untuk melakukan tugas semacam ini, suatu program harus mempunyai kemampuan untuk kembali ke instruksi sebelumnya(membuat loop).Mikroproprosesor melaksanakan program loop dengan menggunakan kelompok instruksi percabangan (lompat). Dengan adanya instruksi percabangan maka urutan eksekusi program yang normal (dari atas ke bawah) akan berubah-berubah. Pada umunya instruksi yang digunakan untuk membuat loop adalah JUMP, CALL, RETURN, dan RESTART.

I. Sasaran belajarSetelah melakukan percobaan pada Bab 3 ini, diharapkan anda mampu: Membedakan penggunaan instruksi percabangan bersyarat dan tidak bersyarat. Membuat bagan air untuk program-program yang menggunakan loop. Membuat program dengan loop serta mengeksekusikannya.

II. Peralataan yang digunakan Unit komputer (PC) Simulator 8085

III. Teori penunjangMikroprosesor 8085 menyediakan 29 instruksi percabangan (lompat) yang dapat digunakan oleh pemakai. Ke 29 instruksi tersebut terbagi kedalam kelompok indtrukdi percabangan bersyarat dan tanpa syarat.A. Instruksi JMP bersyarat dan tidak bersyaratInstruksi percabgan tidak bersyarat, misalnya JMP. Instruksi ini merupakan tiga byte instruksi yakni byte pertama untuk kode operasi instruksi tersebut dan byte kedua dan ketiga untuk alamat. (lihat Gambar 3.1a).

Instruksi 1Instruksi 2Instruksi 3Instruksi 4Instruksi 5Instruksi 6Instruksi 7Kode operasi instruksi jumpByte alamat(rendah)Byte alamat (tinggi)(a)(b)Loop 1Loop 2Urutan program utamaMemori

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 mikroprosesor akan menjemput instruksi selanjutnya dari alamat yang ada di program counter. Instruksi JMP dapat digunkan untuk membuat loop maju (loop1) atau mundur (loop2).Seperti terlihat pada Gambar 3.1b instruksi ini juga dapat digunakan untuk menjalankan program terusterus-menerus dalam suatu loop kontinyu. Instruksi-instruksi lompat bersyarat terdiri atas : JZ (jump if zero) JNZ (jump if 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 is 0,menunjukkan isi akumulator adalah positip) JM (jump if sign bit is 1,untuk menunjukkan bahwa akumulator berisi bilangan negative)Instruksi-instruksi tersebut diatas hanya akan dilaksanakanoleh MPU, apabila kondisi yang diminta terpenuhi.Sebagai contoh pada instruksi JZ (jump if zero),percabangan hanya kan terjadi apabila bit Zero dari Register Flag adalah satu (Z =1). Zero Flag akan berlogikan satu bila hasil suatu operasi aritmatika atau logika sama dengan nol (isi akumulator = 00H). Selain instruksi-instruksi JMP diatas, terdapat pula instruksi PCHL. Instruksi akan mengganti alamat yang ada deprogram counter dengan isi register HL. Apabila intruksi PCHL dilaksanakan, maka akan terjadi percabangan secra tidak bersyarat.B. Instruksi CALL, Return Instruksi-instruksi CALL alamat digunakan untuk memanggil suatu subprogram atau rutin. Rutin adalah sutu bagian program pendek yang melaksanakan tugas tertentu,misalnya perkalian dua buah bilangan. Jika rutin tersebut akan digunakan berulang kali dalam suatu program, maka dpat ditulis pada memori pada subroutine, dan dapat juga dipanggil setiap kali diperlukan.Apabila insstruksi CALL ini dieksekusi, maka isiprogram counter akan diganti dengan alamat awal dari subrutin yang sipanggil dalam memori. Urutan eksekusi program oleh mikroprosesor akan seperti yang ditunjukkan oleh Gambar 3.2.Untuk mengembalikan mikroprosesor ke program utama (setelah menyelesaikan subrutin). Instruksi RETURN sebagai pasangan instruksi CALL.

(b)------CALL sub1------CALL sub2---(a)Urutan program utamaRETSub 1RETSub 1

Gambar 3.2 Instruksi Call dan Return

MemoriKode 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 kedua dan ketiga berisi alamat awal dari subrutin. Seperti hanya instruksi JMP, instruksi CALL juga dapat bersyarat atau tanpa syarat.Instruksi-instruksi CALL dengan syarat yaitu: CNZ (call if zero flag is not set) CZ (call if 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 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 digunakan) pada suatu bagian memori baca tulis (RAM) tertentu yang disebut Stack. Alamat kembali ini dimuat kedalam register stack pointer dengan menggunakan instruksi LXI SP pada awal program.

Untuk mengembalikan mikroprosesor 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 (pemakaian instruksi-instruksi CALL dan RET) akan dibahas lebih lanjut pada bab 19.Pada bab 3 ini tersedia tiga buah latihan yang dapat digunakan oleh saudara, yaitu sebagai berikut :A. Latihan membuat program untuk pengambilan data pada suatu blok lokasi memori, dan menyimpan data-data tersebut pada blok lokasi memori yang lain.B. Latihan membuat program untuk pengnambilan 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.

IV. Langkah PercobaanA. Program untuk mengambil data dari lokasi memori yang berurutan

A.1Buatlah bagan alir dan program untuk mengambil 10 data yang terdapat pada alamat A000h sampai dengan A009h, dan simpanlah data tersebut pada lokasi memori yang berurutan (alamat D000h sampai D009h) tuliskan program saudara mulai alamat 8000h

A.2 Bagan alir untuk langkah A.1 adalah sebagai berikut.

Bagan alir

A.3 Program untuk langkah A.1 adalah sebagai berikut :

AlamatKode operasiLabelMnemonic

800021 00 A0LXI H,A000h

800311 00 D0LXI D,D000h

80060E 0AMVI C,10

80087Eambil :MOV A,M

8009EBXCHG

800A77MOV M,A

800BEBXCHG

800C23INX H

800D13INX D

800E0DDCR C

800F79MOV A,C

8010FE 00CPI 0h

8012C2 08 80ambilJNZ

801576HLT

A.4 Ujilah program saudara dengan menggunakan data heksadesimal pada Tabel 3.2

Table 3.2Input DataOutput Data

Alamat Data Alamat Data

A00024D00024

A00100D00100

A0023BD0023B

A00322D00322

A00410D00410

A0054FD0054F

A0065CD0065C

A007FFD007FF

A00880D00880

A0098DD0098D

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

B.1 Buatlah bagan alir dan program untuk mengambil 30 data yang terdapat pada blok memori alamat C000h sampai dengan alamat C01Dh. Tambahkan setiap data dengan 7 dan simpan hasilnya pada alamat D000 sampai dengan alamat D01Dh. Tulis perjanjian saudara mulai alamat 9000h.

B.2 Bagan alir untuk langkah B.1 adalah sebagai berikut

B.3 Program untuk langkah B.1 sebagai berikut AlamatKode operasiLabelMnemonic

900021 00 C0LXI H,C000h

900311 00 D0LXI D,D000h

90060E 1EMVI C,30

90087Eambil:MOV A,M

9009EBXCHG

900AC6 07ADI 07h

900C77MOV M,A

900DEBXCHG

900E23INX H

900F13INX D

90100DDCR C

901179MOV A,C

9012FE 00CPI 0h

9014C2 08 90ambilJNZ

901776HLT

B.4 Ujilah program saudara dengan menggunakan data heksadesimal pada Tabel 3.4

Table 3.4Input DataOutput Data

Alamat Data Alamat Data

C00015D0001C

C0014FD00156

C00228D0022F

C0039BD003A2

C00430D00437

C005BCD005C3

C0062DD00634

C00766D0076D

C0081ED00825

C0095DD00964

C00AAFD00AB6

C00BA9D00BB0

C00C21D00C28

C00DC0D00DC7

C00EDCD00EE3

C00FB1D00FB8

C0101BD01022

C01156D0115D

C01200D01207

C013BBD013C2

C014CCD014D3

C015DDD015E4

C016AAD016B1

C017A9D017B0

C0186BD01872

C0197CD01983

C01ABFD01AC6

C01B900D01B97

C01C45D01C4C

C01D2AD01D31

C.Perkalian dua buah bilangan biner 4 bitC.1 Perkalian dapat digunakan dengan cara penjumlahan berulang, misalnya 3x5 dapat dilaksanakan dengan menjumlahkan bilangan 3 sampai dengan 5 kali (3x5 = 3+3+3+3+3).Buatlah bagan alir dan program untuk mengalikan 4 bit bilangan biner yang terdapat pada register B dengan 4 bit bilangan biner yang lain yang ada dalam register C. Simpan hasil perkalian antara 2 bilangan tersebut pada register A. Tulis program saudara mulai alamat B000h.

C.2 Bagan alir untuk langkah C.1 sebagai berikut

C.3 Program untuk langkah C.1 adalah sebagai berikut :

AlamatKode operasiLabelMnemonic

B000H3E 00MVI A,00h

B002H06 A0MVI B,0A0h

B004H0E 06MVI C,06h

B006H80ulang ADD B

B007H0DDCR C

B008HC2 06 B0ulangJNZ

B00B76HLT

C.4 Ujilah program saudara dengan menggunakan data heksadesimal pada Tabel 3.6, kemudian catat hasil kali yang diperoleh pada table tersebut.

Table 3.6Register BA00E0F030E020509

Register C06030E0A090D080F

Register AC02AD21E7E1A2887

ANALISA

KESIMPULAN

14