LAPORAN PRAKTIKUM ASSEMBLY Membuat Karak

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
POLITEKNIK NEGERI SEMARANG
2014

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



Sangat mudah untuk mengakses sistem komputer

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
Mnemonic instruksi atau pengarah Assembler dimasukan dalam “Mnemonic
field” yang mengikuti “label mnemonic”. Mnemonic instruksi misalnya ADD,
MOV, INC dan lain-lain.Sedangkan pengarah Assembler misalnya ORG, EQU,
DB dan lain-lain.

3. Operand
Operand ditulis setelah mnemonic, bisa berupa alamat atau data yang digunakan

instruksi yang bersangkutan.
Contoh :
MOV

A, #20h

; A dan #20h adalah operand

LAGI

; LAGI adalah operand

LAGI :
JNB
4. Komentar
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
1. Emulator 8086

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

5. Lembar kerja yang sudah siap untuk digunakan seperti pada gambar berikut

6. Mulai ketikan code berikut untuk membuat karakter ‘A’ > klik emulate

7. Muncul form seperti berikut. Kemudian klik run.

8. Karakter ‘A’ berhasil anda buat


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

 Setelah mengikuti langkah kerja diatas, mengetahui bagamana cara kerja prosessor
dalam pemrosessan untuk membentuk sebuah karakter dengan cara klik emulate.

 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
1. Karakter pertama :

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 AX,0B800H

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

2. Karakter ke dua :

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,2*80+6

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.
Klik run > emulate

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,2*80+6

MOV [BX],AX
MOV BX,4*80
MOV [BX],AX
MOV BX,4*80+2
MOV [BX],AX
MOV BX,4*80+4
MOV [BX],AX
MOV BX,4*80+6
MOV [BX],AX
MOV BX,4*80+8
MOV [BX],AX
MOV AX,0B800H
MOV DS,AX
MOV BX,6*80+2
MOV AL,179
MOV AH,03H
MOV [BX],AX
MOV BX,6*80+4
MOV [BX],AX
MOV BX,6*80+6
MOV [BX],AX
;KEDUA
MOV AX,0B800H
MOV DS,AX
MOV BX,4*80+12
MOV AL,177
MOV AH,03H
MOV [BX],AX
MOV BX,4*80+14
MOV [BX],AX
MOV BX,4*80+16
MOV [BX],AX
MOV BX,2*80+14
MOV [BX],AX
MOV BX,2*80+16

MOV [BX],AX
MOV BX,6*80+14
MOV [BX],AX
MOV BX,6*80+16
MOV [BX],AX
MOV BX,16
MOV [BX],AX
MOV BX,8*80+16
MOV [BX],AX
MOV BX,4*80+8
MOV [BX],AX
MOV AX,0B800H
MOV DS,AX
MOV BX,2*80+18
MOV AL,196
MOV AH,03H
MOV [BX],AX
MOV BX,4*80+18
MOV [BX],AX
MOV BX,6*80+18
MOV [BX],AX
;ketiga
MOV AX,0B800H
MOV DS,AX
MOV BX,2*80+22
MOV AL,177
MOV AH,03H
MOV [BX],AX
MOV BX,2*80+24
MOV [BX],AX
MOV BX,2*80+26
MOV [BX],AX
MOV BX,2*80+28
MOV [BX],AX
MOV BX,2*80+30

MOV [BX],AX
MOV BX,4*80+24
MOV [BX],AX
MOV BX,4*80+26
MOV [BX],AX
MOV BX,4*80+28
MOV [BX],AX
MOV BX,6*80+26
MOV [BX],AX
MOV AX,0B800H
MOV DS,AX
MOV BX,24
MOV AL,179
MOV AH,03H
MOV [BX],AX
MOV BX,26
MOV [BX],AX
MOV BX,28
MOV [BX],AX
;ke empat
MOV AX,0B800H
MOV DS,AX
MOV BX,36
MOV AL,177
MOV AH,03H
MOV [BX],AX
MOV BX,2*80+36
MOV [BX],AX
MOV BX,4*80+36
MOV [BX],AX
MOV BX,6*80+36
MOV [BX],AX
MOV BX,8*80+36
MOV [BX],AX
MOV BX,2*80+38

MOV [BX],AX
MOV BX,4*80+38
MOV [BX],AX
MOV BX,6*80+38
MOV [BX],AX
MOV BX,4*80+40
MOV [BX],AX
MOV AX,0B800H
MOV DS,AX
MOV BX,6*80+34
MOV AL,196
MOV AH,03H
MOV [BX],AX
MOV BX,2*80+34
MOV [BX],AX
MOV BX,4*80+34
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.

Klik emulate > run

4. Karakter pacman

org 100h
JMP Mulai:
Mulai:
MOV AX,0B804H
MOV DS,AX
MOV BX,0
MOV AL,177
MOV AH,02H
MOV [BX],AX

MOV BX,2
MOV [BX],AX
MOV BX,4
MOV [BX],AX
MOV BX,2*80
MOV [BX],AX
MOV BX,4*80
MOV [BX],AX
MOV BX,4*80+2
MOV [BX],AX
MOV BX,4*80+4
MOV [BX],AX
; add your code here
MOV BX,8
MOV [BX],AX
MOV BX,2*80+8
MOV [BX],AX
MOV BX,4*80+8
MOV [BX],AX
MOV BX,10
MOV [BX],AX
MOV BX,12
MOV [BX],AX
MOV BX,2*80+12
MOV [BX],AX
MOV BX,4*80+12
MOV [BX],AX
; add your code here
MOV BX,16
MOV [BX],AX
MOV BX,18
MOV [BX],AX
MOV BX,20
MOV [BX],AX
MOV BX,2*80+20
MOV [BX],AX
MOV BX,4*80+20
MOV [BX],AX
MOV BX,4*80+18
MOV [BX],AX
MOV BX,4*80+16
MOV [BX],AX
MOV BX,24
MOV [BX],AX
MOV BX,28
MOV [BX],AX
MOV BX,2*80+24
MOV [BX],AX
MOV BX,4*80+24
MOV [BX],AX

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.
Klik emulate > run

5. Assembly art

org 100h
JMP Mulai:
; add your code here
mulai:
MOV AX,0B802H
MOV DS,AX
MOV BX,0
MOV AL,003
MOV AH,03D
MOV [BX],AX
MOV BX,2*80
MOV [BX],AX
MOV BX,4*80
MOV [BX],AX
MOV BX,6*80
MOV [BX],AX
MOV BX,8*80
MOV [BX],AX
MOV BX,2*80+2
MOV [BX],AX
MOV BX,4*80+4
MOV [BX],AX

MOV BX,2*80+6
MOV [BX],AX
MOV BX,8
MOV [BX],AX
MOV BX,2*80+8
MOV [BX],AX
MOV BX,4*80+8
MOV [BX],AX
MOV BX,6*80+8
MOV [BX],AX
MOV BX,8*80+8
MOV [BX],AX
MOV BX,12
MOV [BX],AX
MOV BX,2*80+12
MOV [BX],AX
MOV BX,4*80+12
MOV [BX],AX
MOV BX,6*80+12
MOV [BX],AX
MOV BX,8*80+12
MOV [BX],AX
MOV BX,14
MOV [BX],AX
MOV BX,4*80+14
MOV [BX],AX
MOV BX,8*80+14
MOV [BX],AX
MOV BX,16
MOV [BX],AX
MOV BX,4*80+16
MOV [BX],AX
MOV BX,8*80+16
MOV [BX],AX
MOV BX,20
MOV [BX],AX
MOV BX,2*80+22
MOV [BX],AX
MOV BX,4*80+24
MOV [BX],AX
MOV BX,6*80+24
MOV [BX],AX
MOV BX,8*80+24
MOV [BX],AX
MOV BX,28
MOV [BX],AX
MOV BX,2*80+26
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 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.
Assembler adalah program yang mengonversi kode program sumber ke dalam bahasa
mesin