LAPORAN PRAKTIKUM ASSEMBLY
“Membuat Karakter Game“
Disusun oleh : Meyla Yan Sari
3.34.13.1.10 IK-2B
PROGRAM STUDI TEKNIK INFORMATIKA
JURUSAN TEKNIK ELEKTRO
JOBSHEET 1
Membuat Kaarakter Game
I. Tujuan Intruksional Khusus
Mahasiswa mengerti dan memahami konsep dasar arsitektur sistem komputer dan mampu melakukan pemrograman dalam bahasa assembly.
II. Dasar Teori A. Pengertian
Bahasa Assembly adalah bahasa yang memudahkan pemahaman bagian computer yang paling rendah, mendekati mesin. Bahasa assembly sebaiknya dipelajari secara kontektual sehingga interaksi perangkat keras dan perangkat lunak computer mungkin lebih mudah dipahami. Bahasa assembly adalah bahasa pemrograman dengan korespondensi satu-satu antara perintah-perintah/pertanyaannya dan bahasa mesin computer. Bahasa assembly tidak satu jenis sebagaimana CPU computer yang bermacam-macam. Setiap bahasa assembly secara langsung dipengaruhi oleh set intruksi mesin computer dan arsitektur perangkat keras.
Misalnya, bahasa assembly IBM-PC adalah bahasa assembly yang mengacu pada instruksi-instruksi yang dikenali oleh keluarga mikroprosesor intel 8086-80486.
Assembler adalah program yang mengonversi kode program sumber ke dalam bahasa mesin. Terdapat dua assembler yang dikenal baik untuk IBM-PC , yaitu MASM (Microsoft Assembler) dan TASM (Turbo Assembler). Bahasa assembly disebut bahasa level-bawah karena dalam struktur dan fungsi dekat dengan bahasa mesin. Sebaliknya, bahasa tingkat tinggi seperti Pascal, Basic, Fortran, dan Cobol mempunyai perintah-perintah yang andal yang diterjemahkan ke dalam berbagai instruksi mesin oleh compiler.
B. Kelebihan
Hasil program memiliki tingkat kecepatan yang tinggi
Ukuran dari program lebih kecil
C. Pengertian segment dan offset
Segment dan offset merupakan angka 16 bit (dipresentasikan dalam bahasa hexa) yang menunjukan suatu alamat tertentu di memory komputer. Pasangan segment : offset ini disebut juga alamat relatif. Selain alamat relatif, terdapat juga alamat mutlak berupa angka 20 bit (juga dipresentasikan dalam bil hexa). Alamat mutlak ini dapat dihitung dengan mengalihkan segment dengan 10 hexa dan ditambahkan dengan offset.
D. Interrupt
Interrupt merupakan permintaan kepada microprocessor untuk melakukan suatu perintah. Ketika terjadi permintaan interupsi, microprocessor akan mengeksekusi interrupt handler, yaitu suatu program yang melayani interupsi. Setiap interrupt handler itu memiliki alamat masing-masing yang disimpan dalam bentuk array yang masing-masing terdiri dari 4 byte. Array ini disebut vektor interupsi.
E. Bagian – bagian dari rogram assembler yaitu:
1. Label
Label merupakan suatu simbol yang didefinisikan sendiri oleh pembuat program untuk menandai lokasi memori pada area program. Simbol dan label adalah dua hal yang berbeda. Simbol tidak menggunakan titik dua, sedangkan label harus diakhiri dengan titik dua.
Contoh :
PAR EQU 500 ; “PAR” Menunjukan suatu symbol ; dari nilai 500
MULAI :
MOV A, #0FFh ; pada label; “Mulai” nilai 0FFh ; dipindahkan ke Akumulator
Dalam satu baris hanya ada satu label, pada umumnya Assembler membatasi jumlah karakter yang bisa digunakan hingga 31 karakter.
2. Mnenonik
3. Operand
Operand ditulis setelah mnemonic, bisa berupa alamat atau data yang digunakan instruksi yang bersangkutan.
Komentar harus diawali dengan titik koma. Sub rutin dari bagian besar program yang mengerjakan suatu operasi biasanya diawali dengan blok komentar yang menjelaskan fungsi sub rutin atau bagian besar program tersebut.
5. End
Petunjuk END merupakan kode perintah terakhir yang menunjukan batas akhir dari proses Assembly.Penulisan perintah:
MOV [operand A],[operand B]
Dengan ketentuan operand A merupakan register, variabel, lokasi memori dan ketentuan isi operand B berupa register, variabel, lokasi memori ataupun bilangan.
Operand B merupakan bilangan asal yang akan diisikan ke operand A, dengan kata lain operand A merupakan tujuan pengisian atau penduplikatan dari operand B.
Contoh:
MOV AH, AL
Operand A dari perintah diatas adalah register AH Operand B dari perintah diatas adalah register AL
Hal yang dilakukan dari perintah diatas adalah menduplikatkan isi register AL ke register AH
MOV AH,02
Operand A dari perintah diatas adalah register AH Operand B dari perintah diatas adalah bilangan 02
Hal yang dilakukan dari perintah diatas adalah memasukkan 02 ke register AH
III. Alat dan Bahan
2. PC Processor minimal pentium IV
IV. Langkah Kerja
1. Hidupkan komputer
2. Buka emulator 8086 yang telah dinstal pada laptop anda 3. Setelah terbuka, klik new untuk lembar kerja baru
4. Akan muncul form seperti berikut, klik COM Template > OK
6. Mulai ketikan code berikut untuk membuat karakter ‘A’ > klik emulate
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
org 100h JMP mulai: mulai:
MOV AX,0B800H MOV DS,AX MOV BX,10*80
MOV AL,017 MOV AH,02H MOV [BX],AX
MOV BX,12*80 MOV [BX],AX
MOV AX,0B800H MOV DS,AX MOV BX,10*80+4
MOV AL,016 MOV AH,02H MOV [BX],AX
MOV BX,12*80+4 MOV [BX],AX
MOV DS,AX MOV BX,8*80+2
MOV AL,030 MOV AH,02H MOV [BX],AX
MOV AX,0B800H MOV DS,AX MOV BX,10*80+2
MOV AL,095 MOV AH,02H MOV [BX],AX Ret
- MOV AH,03H merupakan nilai servis untuk mencetak karater atau dengan kata lain mengisi register AH dengan data 03.
- MOV AL,0.95 merupakan register AL yang diisi kode ASCII karakter yang akan dicetak yaitu mencetak karakter garis.
- MOV BX,10*80 merupakan kode yang digunakan untuk mengarahkan peletakan karakter segitiga.
- MOV [BX],AX menyimpan nilai AX pada tempat di memori yang ditunjuk oleh BX.
Hasil dari kode program di atas adalah sebagai berikut.
Klik emulate > run
org 100h JMP mulai:
; add your code here mulai:
MOV AX,0B800H MOV DS,AX MOV BX,0
MOV AL,177 MOV AH,03H MOV [BX],AX
MOV BX,4 MOV [BX],AX
MOV BX,4*80 MOV [BX],AX
MOV BX,4*80+4 MOV [BX],AX
MOV [BX],AX
MOV BX,2*80+4 MOV [BX],AX
MOV BX,2*80+2 MOV [BX],AX ret
- MOV AH,03H merupakan nilai servis untuk mencetak karater atau dengan kata lain mengisi register AH dengan data 03.
- MOV AL,177 merupakan register AL yang diisi kode ASCII karakter yang akan dicetak yaitu mencetak karakter kotak dengan ketebalan sedang.
- MOV BX,2*80+4 merupakan kode yang digunakan untuk mengarahkan peletakan karakter kotak.
- MOV [BX],AX menyimpan nilai AX pada tempat di memori yang ditunjuk oleh BX.
Hasil dari kode program di atas adalah sebagai berikut.
3. Karakter hantu
org 100h JMP mulai: ; add your code here mulai:
MOV AX,0B800H MOV DS,AX MOV BX,4
MOV AL,177 MOV AH,03H MOV [BX],AX
MOV BX,2*80+2 MOV [BX],AX
MOV BX,2*80+4 MOV [BX],AX
MOV [BX],AX
- MOV AH,03H merupakan nilai servis untuk mencetak karater atau dengan kata lain mengisi register AH dengan data 03.
- MOV AL,177 merupakan register AL yang diisi kode ASCII karakter yang akan dicetak yaitu mencetak karakter kotak dengan ketebalan sedang.
- MOV BX,2*80+4 merupakan kode yang digunakan untuk mengarahkan peletakan karakter kotak.
- MOV [BX],AX menyimpan nilai AX pada tempat di memori yang ditunjuk oleh BX.
Klik emulate > run
4. Karakter pacman
org 100h JMP Mulai: Mulai:
MOV BX,4*80+26 MOV [BX],AX MOV BX,2*80+28 MOV [BX],AX MOV BX,4*80+28 MOV [BX],AX Ret
- MOV AH,02H merupakan nilai servis untuk mencetak karater atau dengan kata lain mengisi register AH dengan data 02.
- MOV AL,177 merupakan register AL yang diisi kode ASCII karakter yang akan dicetak yaitu mencetak karakter kotak dengan ketebalan sedang.
- MOV BX,2*80+4 merupakan kode yang digunakan untuk mengarahkan peletakan karakter kotak.
- MOV [BX],AX menyimpan nilai AX pada tempat di memori yang ditunjuk oleh BX.
Hasil dari kode program di atas adalah sebagai berikut.
5. Assembly art
org 100h JMP Mulai:
; add your code here mulai:
- MOV AH,02H merupakan nilai servis untuk mencetak karater atau dengan kata lain mengisi register AH dengan data 02.
- MOV AL,177 merupakan register AL yang diisi kode ASCII karakter yang akan dicetak yaitu mencetak karakter kotak dengan ketebalan sedang.
- MOV BX,2*80 merupakan kode yang digunakan untuk mengarahkan peletakan karakter kotak.
- MOV [BX],AX menyimpan nilai AX pada tempat di memori yang ditunjuk oleh BX.
Hasil dari kode program di atas adalah sebagai berikut.
Klik emulate > run
VII. Kesimpulan
Bahasa Assembly adalah bahasa yang memudahkan pemahaman bagian computer yang paling rendah, mendekati mesin. Bahasa assembly sebaiknya dipelajari secara kontektual sehingga interaksi perangkat keras dan perangkat lunak computer mungkin lebih mudah dipahami.
Bahasa assembly adalah bahasa pemrograman dengan korespondensi satu-satu antara perintah-perintah/pertanyaannya dan bahasa mesin computer.