Anda di halaman 1dari 27

OPERASI BLOK MEMORI I

1. TUJUAN PRAKTIKUM Setelah melakukan percobaan pada bab ini, mahasiswadiharapkan mampu : Membuat program untuk mengosongkan atau menghapus data data yang berbeda dalam suatu blok memory. Membuat program untuk mengisi suatu blok memory dengan urutan data data tertentu. Membuat program untuk mengubah urutan data data dalam suatu blok memori.

2. DASAR TEORI Dalam metoda pengolahan data, mengisi suatu blok memori dengan data 00h seringkali disebut sebagai proses mengosongkan suatu blok memori. Istilah mengosongkan memori sebenarnya kurang sesuai, mengingat setiap lokasi memori terdiri dari sejumlah elemen penyimpan informasi yang biasanya disebut sebagai flip flop. Setiap flip flop dapat menyimpan data satu bit (bit 0 atau bit 1). Jadi dengan demikian sebenarnya isi suatu memori tidak pernah kosong akan tetapi berisi data 00h (output seluruh flip flop yang ada dalam lokasi memori tersebut adalah nol). Untuk mengisi suatu blok memori dengan data data heksadesimal yang berurutan biasanya digunakan program dengan loop. Data data yang diisikan pada masing masing lokasi memori umumnya berasal dari suatu register yang digunakan sebagai penghitung (counter). Register penghitung tersebut mula mula diisi dengan suatu data awal yang nilainya merupakan nilai data pada alamat terkecil dari blok memori yang dipergunakan. Tentunya isi register penghitung tersebut akan dipindahkan pada lokasi memori pertama dalam blok memori. Kemudian isi rregister penghitung dinaikkan (ditambah dengan 1) dan diisikan pada lokasi memori berikutnya. Demikian selanjutnya langkah langkah tersebut diulang sampai seluruh lokasi memori pada blok memori tersebut terisi penuh.

Dalam hal mengisi suatu blok memori dengan data data heksadesimal berurutan caranya sama saja degan mengisi blok memori dengan data data heksadesimal yang berurutan (telah dijelaskan pada alinea sebelumnya); hanya perlu diingat bahwa isi register penghitung harus selalu diubah menjadi nilai data BCD setelah nilainya dinaikkan. Untuk membalik susunan atau urutan data data yang berada dalam suatu blok memori, maka data yang terletak pada lokasi memori teratas (data yang berada pada alamat terkecil dalam blok memori) ditukarkan dengan data yang berada pada lokasi memori terbawah dalam blok memori tersebut. Kemudian data pada lokasi kedua ditukarkan dengan data yang berada pada lokasi kedua dari bawah blok memori. Demikianlah selanjutnya untuk data data berikutnya dilakukan cara yang sama sampai susunan data pada blok memori menjadi kebalikan dari susunan semula. Untuk lebih jelasnya perhatikan Gambar 6.1.

(a)

(b)

Gambar 1.( a) Susunan data sebelum program dieksekusi, ( b) Susunan data setelah program dieksekusi

3. PERALATAN YANG DIGUNAKAN 1. Seperangkat Komputer 2. Simulator IDE 8085

4. LANGKAH PERCOBAAN Pada bab ini terdapat empat buah percobaan , sebagai berikut. 4.1 Membuat dan menguji program untuk mengosongkan data data pada suatu blok memori. 4.2 Membuat dan menguji program untuk mengisi suatu dengan data heksa decimal yang berurutan. 4.3 Membuat dan menguji program untuk mengisi suatu dengan data decimal yang berurutan. 4.4 Membuat dan menguji program untuk mengubah atau membalik urutan data data dalam suatu blok memmori tertentu. blok memori blok memori

4.1 Mengosongkan Suatu Blok Memori 4.1.1 membuat bagan alir dan program untuk mengosongkan (mengisi setiap lokasi memori dengandata 00h) suatu blok memori yang mempunyai alamat mulai D000h sampai D00Fh. Tulis program mulai alamt 7000h. 4.1.2 Bagan alir untuk langkah 4.1 adalah sebagai berikut : START

Inisilisasi BC [D000] Counter D 10h A 00h [D000] A CC+1 DD1

Z = 00? Y STOP

Gambar 2. Bagan Alir untuk program 4.1

4.1.3 Program untuk langkah 4.1adalah sebagai berikut : Tabel 1 Alamat 0000h 7000h 7003h 7005h Op Code 01 00 D0 16 10 1E 00 Mnemonik ORG 7000h LXI B, D000h MVI D, 10h MVI A, 00h Keterangan BC [D000] D 10h A 00h

7007h 7008h 7009h 700Ah 700Dh

02 0C 15 C2 05 70 76

STAX B INR C DCR D JNZ 7005h HLT

BC A ; [D000] A CC+1 DD1 [7005] 1

4.1.4 Sebelum program dijalankan, Mengisi blok memori yang akan digunakan dengan data 2F pada Alamat blok Memori D000 D00F. Tabel 2 Alamat Blok Memori D000h D001h D002h D003h D004h D005h D006h D007h D008h D009h D00Ah D00Bh D00Ch D00Dh D00Eh D00Fh Data 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F

4.1.5 Menjalankan (eksekusi) program, kemudian mencatat isi dari blok memori pada Tabel . Tabel 3 Alamat Blok Memori D000h D001h D002h D003h D004h D005h D006h Data 00 00 00 00 00 00 00

D007h D008h D009h D00Ah D00Bh D00Ch D00Dh D00Eh D00Fh

00 00 00 00 00 00 00 00 00

4.1.6 Jika program sudah benar, maka di setiap lokasi memori pada blok memori tersebut harus di beri data 00h. melanjutkan ke langkah berikutnya apabila program yang dibuat benar. Jika program yang di buat belum benar, memperbaiki program tersebut mulai dari bagan alirnya (mengulangi

langkah 4.1.1 sampai dengan langkah 4.1.5). 4.1.7 Perubahan apa yang harus di lakukan terhadap program apabila jumlah lokasi memori pada blok memori tersebut menjadi tiga kali dari jumlah semula.

4.1.8 Data Hasil Percobaan 4.1 adalah sebagai berikut : Dari program diatas setelah program di buat maka di peroleh hasil seperti gambar gambar berikut ini :

Gambar 3. Simulator sebelum simulasi di jalankan

Gambar 4. Program 4.1 setelah di buat pada assembler

Gambar 5. Breakpoints Manajer

Gambar 6. Data awal pada alamat D000h


7

Gambar 7. Simulator setelah dijalankan

(a)

(b) Gambar 8. (a) Data hasil Imulasi awal (b) Data hasil simulasi akhir
8

Gambar 9. Data akhir pada alamat D000h

4.1.9 Analisa untuk program 4.1 adalah sebagai berikut : Dari percobaan pada program A.1, dapat di ambil analisa sebagai berikut : Pada program diatas register D di jadikan counter untuk menghitung data mulai dari alamat D000h sampai alamat D00Fh (alamat di tunjukan pada register pasangan BC), dimana data pada register D akan berkurang satu bila pada register L bertambah satu datanya. Untuk mengubah data yang ada pada alamat D000h-D00Fh menjadi data 00h semua maka kita gunakan register A yang diisikan data 00h yang akan kita kirimkan ke alamat yang ditunjukan Register pasangan BC dengan intruksi STAX B. Proses pengubahan dan pengiriman data akan terus berlangsung sampai data pada counter (register D) bernilai 00. Untuk melihat kondisi counter (register B) sudah habis atau belum maka digunakan intruksi looping yang mengunakan JNZ.

4.1.10 Kesimpulan untuk program 4.1 adalah sebagai berikut : Dari percobaan dan analisa diatas dapat diambil kesimpulan sebagai berikut : Program 4.1 adalah program Untuk mengosongkan data pada alamat D000h-D00Fh. Pada program diatas register A diisikan data 00 di jadikan sebagai data mengubah data pada alamat D000h-D00Fh menjadi 00h.

4.2 Mengisi Blok Memori Dengan Data Heksadesimal 4.2.1 Membuat bagan alir dan program untuk mengisi blok memori alamat D100h sampai D10Fh dengan data heksadesimal berurutan mulai 00h sampai dengan 0Fh. Menulis program saudara mulai alamat 8000h. 4.1.11 Bagan alir untuk langkah 4.2 adalah sebagai berikut : START

Inisilisasi BC [D000] Counter D 10h A 00h [D000] A AA+1 CC+1 DD1

Z = 00? Y STOP

Gambar 10. Bagan Alir untuk program 4.2

10

4.2.2 Program untuk langkah 4.2 adalah sebagai berikut Tabel 4 Alamat 0000h 7000h 7003h 7005h 7007h 7008h 7009h 700Ah 700Bh 700Eh Op Code 01 00 D0 16 10 1E 00 02 IC 0C 15 C2 05 70 76 Mnemonik ORG 7000h LXI B, D000h MVI D, 10h MVI A, 00h STAX B INR A INR C DCR D JNZ 7005h HLT Keterangan BC [D000] D 10h A 00h BC A ; [D000] A AA+1 CC+1 DD1 [7005] 1

4.2.3 Sebelum program dijalankan (eksekusi), mengisi blok memori yang akan digunakan dengan data 00 pada Alamt D100 D10F dan kemudian isi perubahan data yang di dapat. Tabel 5 Alamat D100h D101h D102h D103h D104h D105h D106h D107h D108h D109h D10Ah D10Bh D10Ch D10Dh D10Eh D10Fh Data Lama 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Alamat D100h D101h D102h D103h D104h D105h D106h D107h D108h D109h D10Ah D10Bh D10Ch D10Dh D10Eh D10Fh Data Baru 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

11

4.2.4 Menjalankan program,kemudian mencatat

data-data yang berada dalam

blok memori tersebut pada kolom Data Baru yang berada pada Tabel 5. 4.2.5 Data Hasil Percobaan 4.2 adalah sebagai berikut :

Gambar 11. Simulator sebelum dijalankan

Gambar 12. Program 4.2 setelah di buat pada assembler

Gambar 13. Breakpoints Manajer

12

Gambar 14. Data awal pada alamat D100h

Gambar 15. Simulator setelah di jalankan

(a)

13

(b) Gambar 16. (a) Data hasil simulasi Awal (b) Data hasil simulasi akhir

Gambar 17. Data akhir pada alamat D100h

4.2.6 Analisa untuk program 4.2 adalah sebagai berikut : Dari percobaan pada program 421, dapat di ambil analisa sebagai berikut : Analisa untuk program 4.2 sama dengan program 4.1 hanya saja pada program 4.2 program yang di ubah untuk bilangan berturut-turut dari 00h0Fh sehinnga Untuk mengubah data yang ada pada alamat D100h-D10Fh menjadi data 00h-0Fh maka kita gunakan register A yang diisikan data 00h lalu kita gunakan Intruksi INR A biar data pada register A bertambah pada setiap program 1 kali mengulang (saat register B berkurang satu maka register A akan bertambah satu) setelah kita kirimkan ke alamat yang ditunjukan Register pasangan BC dengan intruksi STAX B.

14

4.1.12 Kesimpulan untuk program 4.1 adalah sebagai berikut : Dari percobaan dan analisa diatas dapat diambil kesimpulan sebagai berikut : Program 4.1 adalah program Untuk mengurutkan data pada alamat D100h-D10Fh. Pada program diatas register A diisikan data 00 lalu data di tambahkan dengan satu di jadikan sebagai data mengubah data pada alamat D100hD10Fh menjadi 00h-0Fh

15

4.3 Mengisi Blok Memori Dengan Data Desimal 4.3.1 Membuat bagan alir dan program untuk mengisi blok memori alamat D200h sampai D20Fh dengan data-data desimal berurutan mulai 00 sampai dengan 15. Menulis program saudara mulai alamat 9000h. 4.1.13 Bagan alir untuk langkah 4.3 adalah sebagai berikut : START

Inisilisasi BC [D200] Counter D 10h A 00h [D000] A AA+1 AA+1 CC+1 DD1

Z = 00? Y STOP

Gambar 18. Bagan Alir untuk program 4.2

16

4.3.2 Program untuk langkah 4.3 adalah sebagai berikut. Tabel 6 Alamat 0000h 9000h 9003h 9005h 9007h 9008h 9009h 900Ah 900Bh 900Ch 900Fh Op Code 01 00 D2 16 10 3E 00 02 3C 27 0C 15 C2 07 90 76 Mnemonik ORG 9000h LXI B, D200h MVI D, 10h MVI A, 00h STAX B INR A DAA INR C DCR D JNZ 9007h HLT Keterangan BC [D200] D 10h A 00h [D200] A AA+1 A [BCD] CC+1 DD1 [9007] 1

4.3.3 Sebelum program dijalankan (eksekusi), mengisi blok memori yang akan digunakan dengan data-data seperti yang tercantum dalam kolom Data Lama tabel 7. Tabel 7 Alamat D200h D201h D202h D203h D204h D205h D206h D207h D208h D209h D20Ah D20Bh D20Ch D20Dh Data Lama 0 21 12 81 83 14 17 16 50 57 62 75 88 91 Alamat D200h D201h D202h D203h D204h D205h D206h D207h D208h D209h D20Ah D20Bh D20Ch D20Dh Data Baru 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D

17

D20Eh D20Fh

97 99

D20Eh D20Fh

0E 0F

4.3.4 Menjalankan (mengeksekusi) program, kemudian mencatat isi blok memori tersebut pada kolom Data Baru yang berada pada Tabel 7. 4.3.5 Data Hasil Percobaan 4.1 adalah sebagai berikut : Dari program diatas setelah program di buat maka di peroleh hasil seperti gambar gambar berikut ini :

Gambar 19. Program untuk 4.4 setelsh dituliskan pada simulator javA

Gambar 20. Register sebelum simulator dijalankan

18

Gambar 21. Data awal pada alamat D200h-D20Fh

Gambar 22.isi register setelah simulator dijalakan

Gambar 23. Data akhir pada alamat D200h-D20Fh 4.3.6 Analisa untuk program 4.2 adalah sebagai berikut : Dari percobaan pada program 421, dapat di ambil analisa sebagai berikut : Analisa untuk program 4.3 sama dengan program4.2 dan 4.1 hanya saja pada program 4. program yang di ubah untuk bilangan berturut-turut dari 00h-15h sehinnga Untuk mengubah data yang ada pada alamat D200hD20Fh menjadi data 00h-15h maka kita gunakan register A yang diisikan data 00h lalu kita gunakan Intruksi INR A biar data pada register A

19

bertambah pada setiap program 1 kali mengulang (saat register B berkurang satu maka register A akan bertambah satu) setelah itu data yangakan dikirimkan ke alamat yang ditunjukan Register pasangan BC (dengan intruksi STAX B) kita ubah dalam bentuk biner code decimal agar data berubah pada saat data 0Ah menjadi 10h.

4.3.7 Kesimpulan untuk program 4.1 adalah sebagai berikut : Dari percobaan dan analisa diatas dapat diambil kesimpulan sebagai berikut : Program 4.1 adalah program Untuk mengurutkan data pada alamat D100h-D10Fh dari 00-15. Pada program diatas register A diisikan data 00 lalu data di tambahkan dengan satu di jadikan sebagai data mengubah data pada alamat D100hD10Fh menjadi 00h-0Fh setelah itu di ubah ke dalam bentuk bilangan BCD agar data pada alamat tersebut berubah menjadi 00-15.

20

4.4 Mengubah Urutan Data Dalam Suatu Blok Memori 4.4.1 Membuat bagan alir dan program untuk menbalik data-data yang berada D300h sampai D30Fh. Menulis program saudara mulai alamat 9500h. 4.1.14 Bagan alir untuk langkah 4.4 adalah sebagai berikut :

START

Inisilisasi HL [D300] BC [D30F] Counter D 10h A [D300] CM MC AC [D300] A HL H + 1 EE1 B B 1N T

Z = 00? Y STOP

Gambar 24. Bagan Alir untuk program 4.4


21

4.4.2

Program untuk langkah 4.3 adalah sebagai berikut. Tabel 7 Alamat 9500h 9503h 9506h 9508h 9509h 950Ah 9500Bh 950Ch 950Dh 950Eh 950Fh 9510h 9513h Op Code 21 00D3 11 OF D3 06 08 1A 4E 77 79 12 23 1D 05 C2 08 95 76 Mnemonik LXI H,D300h LXI D,D30Fh MVI B,08h LDAX D MOV C,M MOV M,A MOV A,C STAX D INX H DCR E DCR B JNZ 9508h HLT Keterangan HL [D300] DE [D30F] B 08h A [D30F] CM MA AC [D30F] A HL HL + 1 EE1 BB1 [9508] 1

4.4.4

Sebelum program dijalankan (eksekusi), mengisi blok memori yang akan digunakan dengan data-data seperti yang berada pada tabel 7 (kolom Data Lama). Tabel 8 Alamat D300h D301h D302h D303h D304h D305h D306h D307h D308h D309h D30Ah D30Bh D30Ch D30Dh D30Eh D30Fh Data Lama 00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF Alamat D300h D301h D302h D303h D304h D305h D306h D307h D308h D309h D30Ah D30Bh D30Ch D30Dh D30Eh D30Fh Data Baru FF EE DD CC BB AA 99 88 77 66 55 44 33 22 11 00

22

4.4.5 Menjalankan (mengeksekusi) program, kemudian mencatat memori tersebut pada kolom Data Baru yang berada pada Tabel 9.

isi blok

4.4.6 Apakah program yang di tulis pada langkah 4.4 masih dapat dipergunakan untuk membalik urutan data dalam blok memori yang jumlah lokasi memorinya ganjil.? Jelaskan.

4.4.7 Data Hasil Percobaan 4.1 adalah sebagai berikut : Dari program diatas setelah program di buat maka di peroleh hasil seperti gambar gambar berikut ini :

Gambar 25.Simulator Sebelum Dijalankan

Gambar 26 . Data setelah dituliskan pada assembler


23

Gambar27 . Break Points Manajer

Gambar 28. Data awal pada alamat D300h-D30Fh

Gambar29 . Simulator setelah dijalankan

24

(a)

(b) Gambar30 . (a)Data awal simulasi.(b) Data Akhir simulasi

Gambar 31 . Data akhir pada alamat D300h-D30Fh

25

4.4.8 Analisa untuk program 4.4 adalah sebagai berikut : Dari percobaan pada program 4.4, dapat di ambil analisa sebagai berikut : Pada program diatas register B di jadikan counter 08 data untuk menghitung data mulai dari alamat D300h-D30Fh (alamat di tunjukan pada register pasangan HL) dan untuk membalikan data dari alamat D30Fh-D300h(alamat di tunjukan pada register pasangan DE), dimana data pada register E akan berkurang satu bila pada register L bertambah satu datanya. Untuk membalikan data pada alamat D300h ke D30Fh digunakan intruksi MOV, data pada memori D30Fh diisikan pada Register A (intruksi LDAX D), lalu register M (data pada alamat D30Fh) di pindahkan pada register C, register M dipindahkan pada ke register A (Data pada alamat D30Fh di pindah ke alamat D300h), setelah itu register C dipindahkan ke register A dan dikirimkan ke Alamat DE (Data pada alamat D300h di pindah ke alamat D30Fh). Proses ini akan terus berlangsung hingga data pada counter sudah 00. Counter yang digunakan hanya adalah 08 karena pada program diatas hanya terjadi delapan kali pengulangan karena pada setiap satu kali program data langsung di alamat D300h di pindahkan ke alamat D30Fh dan sebaliknya. Proses pengubahan dan pengiriman data akan terus berlangsung sampai data pada counter (register D) bernilai 00. Untuk melihat kondisi counter (register B) sudah habis atau belum maka digunakan intruksi looping yang mengunakan JNZ.

4.1.15 Kesimpulan untuk program 4.4 adalah sebagai berikut : Dari percobaan dan analisa diatas dapat diambil kesimpulan sebagai berikut : Program 4.4 adalah program Untuk membalikan data pada alamat D300h-D30Fh ke alamat D30Fh-D300h.

26

5. DAFTAR PUSTAKA Data Hasil Praktikum Teori bahasa assembler semester 1

27