LAPORAN PRAKTIKUM ASSEMBLY
“Membuat Layout Game Pacman“
Disusun oleh :
Meyla Yan Sari
3.34.13.1.10
IK-2B
PROGRAM STUDI TEKNIK INFORMATIKA
JURUSAN TEKNIK ELEKTRO
POLITEKNIK NEGERI SEMARANG
JOBSHEET 2
Membuat Layout Game Pacman
I.
Tujuan Intruksional Khusus
Mahasiswa mengerti dan memahami konsep dasar arsitektur sistem komputer dan
mampu melakukan pemrograman dalam bahasa assembly.
II.
Dasar Teori
Untuk mengakses memori kita dapat menggunakan empat register: BX, SI, DI,
BP.
Menggabungkan register ini dalam [ ] simbol, kita bisa mendapatkan
lokasi memori yang berbeda. Kombinasi ini didukung (mode pengalamatan):
d8 - untuk 8 bit perpindahan.
D16 - untuk 16 bit perpindahan.
Pemindahan bisa menjadi nilai langsung atau offset variabel, atau
bahkan keduanya. Terserah compiler untuk menghitung langsung tunggal
nilai.
Pemindahan bisa berada di dalam atau di luar [ ] simbol, compiler
menghasilkan kode mesin yang sama untuk kedua-duanya. Pemindahan adalah nilai
ditandatangani, sehingga dapat menjadi positif atau
negatif. Umumnya compiler mengambil peduli tentang perbedaan antara d8
dan D16, dan menghasilkan kode mesin yang diperlukan.
Berikut mode pengalamatan: [BX + SI] + 25
dihitung dengan prosesor ke alamat fisik ini: 100 * 16 +
30 + 70 + 25 = 1725.
Secara default DS segmen register digunakan untuk semua mode kecuali
mereka dengan BP mendaftar, untuk ini segmen SS register digunakan.
Ada cara mudah untuk mengingat semua orang mungkin
kombinasi menggunakan tabel ini:
Anda dapat membentuk semua kombinasi yang valid dengan mengambil hanya satu
item dari setiap kolom atau melompat-lompat kolom dengan tidak mengambil apa-apa
dari itu. Seperti yang Anda lihat BX dan BP tidak pernah bersama. SI dan DI juga
tidak bersama. Berikut adalah contoh yang valid menangani
Cara: [BX + 5].
Nilai dalam register segmen (CS, DS, SS, ES) disebut "segmen",
dan nilai dalam register tujuan (BX, SI, DI, BP) disebut "offset".
Ketika DS berisi nilai 1234h dan SI berisi nilai 7890h dapat juga tercatat sebagai
1234:7890. Alamat fisik akan 1234h * 10h + 7890h = 19BD0h.
Untuk mengatakan compiler tentang tipe data, awalan ini harus digunakan:
BYTE PTR - untuk byte.
WORD PTR - demi kata (dua byte).
Sebagai contoh :
BYTE PTR [BX] ; byte access.
or
WORD PTR [BX] ; word access.
Emu8086 mendukung prefiks lebih pendek juga:
b. - Untuk BYTE PTR
kadang-kadang compiler dapat menghitung tipe data secara otomatis,
tetapi Anda tidak mungkin dan tidak harus bergantung pada bahwa ketika salah satu
operan adalah nilai langsung.
instruksi MOV
-
Salinan operan kedua (source) ke operan pertama (tujuan).
-
Sumber operan bisa menjadi nilai langsung, tujuan umum register atau lokasi
memori.
-
register tujuan dapat menjadi daftar tujuan umum, atau memori lokasi.
-
Kedua operan harus menjadi ukuran yang sama, yang dapat menjadi byte atau
kata.
Anda dapat copy & paste program di atas untuk Emu8086 code editor, dan tekan
tombol [Compile and Emulate] (atau tekan tombol F5 pada keyboard Anda).
Jendela Emulator harus terbuka dengan program ini dimuat, klik [Single Step]
tombol dan menonton nilai-nilai mendaftar. Bagaimana melakukan copy & paste :
1. Pilih teks di atas menggunakan mouse, klik sebelum teks dan tarik ke bawah
sampai semuanya dipilih
2. Tekan Ctrl + C kombinasi untuk menyalin
3. Ke Emu8086 source editor dan tekan Ctrl + V kombinasi untuk paste
Seperti Anda mungkin bisa menebak, ";" digunakan untuk komentar, apapun
setelah ";" simbol diabaikan oleh kompilator. Anda harus melihat sesuatu seperti
ketika program selesai:
III.
Alat dan Bahan
1. Emulator 8086
2. PC Processor minimal pentium IV
IV.
Langkah Kerja
1. Hidupkan komputer
4. Akan muncul form seperti berikut, klik COM Template > OK
5. Lembar kerja yang sudah siap untuk digunakan seperti pada gambar berikut
7. Muncul form seperti berikut. Kemudian klik run.
9. Untuk mengetahui RAM saat proses setelah emulate, klik
view
>
memory
10. Setelah muncul form, tuliskan B800:0000 pada text box > klik
update.
Sehingga
muncul seperti berikut.
V.
Analisis
org 100h
JMP Mulai:
;add your code here
mulai:
MOV AX,0B800H
MOV DS,AX
MOV AL,’A’
MOV AH,0FH
MOV BX,0
MOV [BX],AX
Ret
0B800H adalah merupakan alamat fisik, dimana karakter A itu akan ditempatkan
dalam layar. Kita bisa mengaturnya sesuai yang kita inginkan.
Jenis intruksi yang digunakan adalah MOV. Jenis intruksi ini digunakan untuk
mengopy nilai atau angka menuju suatu register, variabel atau memori.
Alamat yang digunakan adalah :
a. Register AX
b. Register DS
c. Register AL
d. Register AH
e. Register BX
Penjelasan program
o
Org 100h berfungsi sebagai pemberitahu bahwa pada saat program
dijalankan diletakkan mulai pada offset ke 100h.
o
MOV AX,0B800H berfungsi menampilkan karakter pada layar.
o
MOV AL ,’A’ maksudnya adalah kita meletakkan karakter “A” pada
regidter AL
MOV AX,0B800H
Operand A dari perintah diatas adalah register AX
Operand B dari perintah diatas adalah bilangan 0B800H
Hal yang dilakukan dari perintah diatas adalah memasukkan 0B800H ke register AX
MOV DS, AX
Operand A dari perintah diatas adalah register DS
Operand B dari perintah diatas adalah register AX
Hal yang dilakukan dari perintah diatas adalah menduplikatkan isi register AX ke
register DS
0FH adalah warna dari karakter yang kita tampilkan, kita bisa mengubahnya sesuai
yang kita inginkan.
VI.
Tugas
Membuat layout game pacman dengan assembler :
mov (2*76)+(160*14),ax mov (2*76)+(160*15),ax mov (2*76)+(160*16),ax mov (2*77)+(160*14),ax mov (2*78)+(160*14),ax
mov (2*36)+(160*9),ax mov (2*36)+(160*10),ax mov (2*36)+(160*11),ax mov (2*36)+(160*12),ax mov (2*36)+(160*13),ax mov (2*36)+(160*14),ax mov (2*36)+(160*15),ax mov (2*37)+(160*9),ax mov (2*38)+(160*9),ax mov (2*39)+(160*9),ax mov (2*40)+(160*9),ax mov (2*41)+(160*9),ax mov (2*42)+(160*8),ax mov (2*43)+(160*8),ax mov (2*44)+(160*8),ax mov (2*45)+(160*8),ax mov (2*46)+(160*9),ax mov (2*46)+(160*10),ax mov (2*47)+(160*10),ax