Anda di halaman 1dari 9

LAPORAN PRAKTIKUM

MIKROKOMPUTER

Variabel, Konstanta dan Register

Nama

: Mas Fariz Fadlilah Mufid

NIM

: 14/364050/PA/15881

Tanggal

: 5 Oktober 2015

Nama Asisten

: Maulana Akbar

JURUSAN ILMU KOMPUTER DAN ELEKTRONIKA


FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS GADJAH MADA
YOGYAKARTA
2015

Kegiatan 1
1. Listing dibawah ini diketik pada emu8086.

2. Mengemulasi program, jika terdapat error, perbaiki program diatas, tanpa

merubah nilai variable!

3. mengamati perubahan isi memori pada alamat program disimpan

4. Mengamati perubahan register pada saat program sebelum dan sesudah

dieksekusi!

5. Mengedit listing 1 dengan:


-

Tambahkan kurung siku pada instruksi baris 3 6,


Contoh
ADD AL,a0
Ganti instruksi baris 11 14 menjadi
a DB 25, 15, 32, 27
Amati perbedaan isi memori setelah dan sebelum program di edit!

Kegiatan 2
1. Mengetik listing dibawah ini pada emu8086

2. mengemulasi program
3. mengamati perubahan isi memori sebelum intruksi dieksekusi

4. Mengamati perubahan register pada saat program sebelum dan sesudah

dieksekusi!
Sebelum

Setelah

5. Mengamati perubahan isi memori setelah semua instruksi di eksekusi

Kegiatan 3
1. Mengetik listing dibawah ini pada emu8086

2. Memperbaiki program diatas sehingga dapat digunakan untuk menjumlahkan

2 konstanta (K0 dan K1) dan 3 variabel (a0, a1, a2) yang terdapat pada
program.
3. Mengemulasikan program diatas!
4. mengamati perubahan isi register pada saat program dieksekusi

5. Mengamati perubahan isi memori pada segmen kode program

Sebelum

Setelah

Pembahasan
Kegiatan 1:
Program semula diatas terjadi error karena pada program tersebut
menggunakan register AL semua ,padahal terdapat input bilangan 448 yang
otomatis register AL (8bit) tidak cukup untuk menyimpan data tersebut .Maka

solusinya ialah menggunakan tambahan Register A(high) AH yaitu dengan cara


mengubah program Register AL menjadi AX di baris yang akan di input data 448.
Pada variable a0-a4 semua data tersebut di simpat didalam data segmen dengan
offset nya , namun jika kita ingin melihat atau mengetahui lokasi alamat dari
variable tersebut kita dapat menggunakan instruksi LEA(load effective address)
Jika kita menambahkan LEA BX,a0 maka kita dapat mengetahui alamat variable
a0 dengan menggunakan instruksi LEA dan menampilkkannya melalui register
BX, sedangkan jika menggunakan offset juga sama saja untuk menampilkan
alamat dari variable nya.
Pada listing pertama sebelum di edit tidak bisa di jalankan namun setelah
diedit, bisa di jalankan dan terdapat tambahan instruksi yang dapat
menampilkan alamat dari sebuat variable yang di tunjukkan oleh instruksi
tersebut . Jika pada instruksi baris 11-15 di pindah ke baris 3 maka instruksi
tersebut dibaca oleh program dan secara jump, loncat .dan data yang di simpan e
dalam register A berbeda dari program yang sebelumnya , karena padda
program sebelumnya instruksi tersebut berada setelah program kendali kembali
ke system operasi. Manfaat dari penggunaan Variabel ialah mempermudah
pengguna (programmer) untuk menyimpan suatu nilai terutama yang beresekala
banyak.
Kegiatan 2 :

Pada program pertama menggunakan instruksi DB (define byte) jadi


program tersebut menyimpan nilai data menggunakan angka atau kode ASCII
sedangkan pada program kedua lebih menggunakan DW(define Word) yang
membuat program kedua memasukkan data menggunakan nomor memori
program untuk menginstruksinnya , jadi isi program keduannya sama namun
hanya berbeda cara (instruksi yang dipakai) menggunaan angka dan satunnya
dengan nomor memori. Maka dari itu listing satu dapat berfungsi seperti listing 2
,karena instruksi di dalamnya memiliki tujuan yang sama namun hanya berbeda
penyampaiiannya. Variabel dengan instruksi DW hanya membutuhkan memori
sebesar 2 byte sehingga data tersebut bisa di simpan kedalam memori register
AX.
Kegiatan 3 :
Pada Percobaan ketiga terdapat kekurangan. Pertama adalah ketika instruksi
pada baris ketiga MOV AL, k0 seharusnya register yang digunakan AX agar nilai
dari k0 dapat teralokasikan. Selanjutnya pada ADD [BX], AL. Seharusnya
ditambahkan pada [BX] adalah register AX, agar semua nilai pada register AX
yaitu AH dan AL ditambahkan pada [BX]. Setelah program dijalankan, nilai dari
variabel A3 akan bernilai 0223h, untuk memunculkan nilai ini pada register AX

kita bisa menggunakan intruksi MOV AX, A3. Pada listing awal intruksi ini tidak
ada, jadi dengan menambahkan intruksi in i nilai dari A3 akan secara otomatis
disalin ke register AX dan memunculkannya.
Kesimpulan
Variabel merupakan suatu lokasi di dalam memori yang memiliki deklarasi
syntax name DB value dan name DW value.
Define Byte (DB) dapat menampung satu byte data setiap dideklarasikan
sedangkan Define World (DW) dapat menampung dua byte data.
Keberadaan konstanta hampir sama dengan variabel, namun keberadaan hanya
sampai program dikompilasi. Untuk mendeklarasikannya name EQU <an
expression>.

Anda mungkin juga menyukai