• Tidak ada hasil yang ditemukan

LAPORAN PRAKTIKUM ASSEMBLY Membuat Varia

N/A
N/A
Protected

Academic year: 2018

Membagikan "LAPORAN PRAKTIKUM ASSEMBLY Membuat Varia"

Copied!
24
0
0

Teks penuh

(1)

LAPORAN PRAKTIKUM ASSEMBLY

“Membuat Variabel dengan Assembler“

Disusun oleh :

Meyla Yan Sari

3.34.13.1.10

IK-2B

PROGRAM STUDI TEKNIK INFORMATIKA

JURUSAN TEKNIK ELEKTRO

POLITEKNIK NEGERI SEMARANG

(2)

JOBSHEET 7

“Data Flow Diagram“

I.

Tujuan Intruksional Khusus

Mahasiswa mengerti dan memahami konsep dasar arsitektur sistem komputer dan

mampu melakukan pemrograman dalam bahasa assembly.

II.

Dasar Teori

Mengendalikan aliran program hal yang sangat penting, ini adalah

di mana program Anda dapat membuat keputusan sesuai dengan tertentu :

-

Jumps tanpa syarat

Instruksi dasar yang mentransfer kontrol ke titik lain dalam program ini adalah

JMP.

Sintaks dasar instruksi JMP :

JMP label

Untuk mendeklarasikan label dalam program Anda, cukup ketik nama dan

menambahkan ":" sampai akhir, label dapat kombinasi karakter apapun tetapi tidak

dapat memulai dengan angka, misalnya di sini adalah 3 label hukum definisi :

label1: label2: a:

Label dapat dideklarasikan pada baris terpisah atau sebelum lainnya instruksi,

misalnya

x1:

MOV AX, 1 x2: MOV AX, 2

(3)

Tentu saja ada cara yang lebih mudah untuk menghitung beberapa dua angka, tapi

masih contoh yang baik dari instruksi JMP. Seperti yang Anda lihat dari contoh ini

JMP mampu mentransfer mengontrol maju dan mundur. Hal ini dapat melompat di

mana saja di segmen kode saat ini (65.535 bytes).

-

Jumps Bersyarat pendek

Tidak seperti instruksi JMP yang tidak melompat tanpa syarat, ada petunjuk yang

melakukan lompatan bersyarat (melompat hanya ketika beberapa kondisi dalam

bertindak). Instruksi-instruksi ini dibagi dalam tiga kelompok, kelompok pertama

hanya menguji satu bendera, kedua membandingkan angka sebagai ditandatangani,

dan ketiga membandingkan angka sebagai unsigned.

(4)

Seperti yang Anda lihat ada beberapa petunjuk yang melakukan itu hal yang sama, itu

benar, mereka bahkan dirakit ke dalam kode mesin yang sama, maka ada baiknya

untuk diingat bahwa ketika Anda mengkompilasi instruksi JE - Anda akan

mendapatkannya dibongkar sebagai: JZ. Nama yang berbeda digunakan untuk

membuat program lebih mudah memahami dan kode.

Langsung petunjuk untuk nomor ditandatangani

(5)

Instruksi melompat untuk nomor unsigned

Umumnya, bila diperlukan untuk membandingkan nilai-nilai numerik Instruksi CMP

digunakan (hal ini sama dengan SUB (mengurangi) instruksi, tetapi tidak menyimpan

hasilnya, hanya mempengaruhi bendera).

Logikanya sangat sederhana, misalnya :

itu diperlukan untuk membandingkan 5 dan 2,

5-2 = 3

hasilnya tidak nol (Zero Flag diatur ke 0).

Contoh lain:

itu diperlukan untuk membandingkan 7 dan 7,

7-7 = 0

hasilnya adalah nol! (Zero Flag diatur ke 1 dan JZ atau JE akan melakukan

melompat).

(6)

Coba contoh di atas dengan nomor yang berbeda untuk AL dan BL, bendera terbuka

dengan mengklik [FLAGS] tombol, gunakan [Tunggal Langkah] dan melihat apa

yang terjadi, jangan lupa untuk mengkompilasi ulang dan ulang setelah setiap

perubahan (menggunakan F5 shortcut).

Semua melompat bersyarat memiliki satu batasan besar, tidak seperti JMP instruksi

mereka hanya bisa melompat 127 byte depan dan 128 byte mundur (perhatikan bahwa

sebagian besar instruksi dirakit menjadi 3 atau lebih byte).

Kita dapat dengan mudah menghindari keterbatasan ini menggunakan trik lucu:

-

Dapatkan instruksi jump bersyarat yang berlawanan dari tabel di atas, membuat

melompat ke label_x.

-

Instruksi m Gunakan JMP untuk melompat ke lokasi yang diinginkan.

-

Tentukan label_x: setelah instruksi JMP.

(7)
(8)

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

(9)

6. Mulai ketikan code berikut untuk membuat string ‘PACMAN’ > klik emulate

(10)

8. berhasil anda buat

V.

Analisis

ARTGame EQU 00100100b

org 100h

JMP Mulai

wallGame DB 178

Nama DB 'PACMAN',0

Mulai:

(11)

MOV AH,ARTGame

MOV ES:(2*3)+(160*3),ax

MOV ES:(2*4)+(160*3),ax

MOV ES:(2*5)+(160*3),ax

MOV ES:(2*6)+(160*3),ax

MOV ES:(2*3)+(160*3),ax

MOV ES:(2*3)+(160*4),ax

MOV ES:(2*3)+(160*5),ax

MOV ES:(2*3)+(160*6),ax

MOV ES:(2*3)+(160*7),ax

MOV AL, Nama[0]

MOV ES:(2*38)+(160*18),ax

MOV AL, Nama[1]

MOV ES:(2*39)+(160*18),ax

MOV AL, Nama[2]

MOV ES:(2*40)+(160*18),ax

MOV AL, Nama[3]

MOV ES:(2*41)+(160*18),ax

MOV AL, Nama[4]

MOV ES:(2*42)+(160*18),ax

MOV AL, Nama[5]

MOV ES:(2*43)+(160*18),ax

ret

a. EQU Directive ini digunakan untuk mendefinisikan sebuah konstanta tanpa

menuntut disediakannya sebuah lokasi memori. Jadi ATRGame EQU

00100100b berarti konstanta ATRGame sama dengan 00100100b

b.

Org 100h berfungsi sebagai pemberitahu bahwa pada saat program dijalankan

diletakkan mulai pada offset ke 100h.

c. Perintah JMP(JUMP) ini digunakan untuk melompat menuju tempat yang

ditunjukkan oleh perintah JUMP. Adapun syntaxnya adalah:

JUMP Tujuan .

(12)

d.

Nama DB 'PACMAN', 0 Directive ini digunakan untuk mendefinisikan data

8-bit pada memori program berupa karakter-karakter ASCII yakni

PACMAN-DWIWURI

e.

MOV AX,0B800H berfungsi menampilkan karakter pada layar.

VI.

Tugas

Membuat layout game pacman dengan assembler :

Koding

Mengetikkan koding berikut pada emu8086

(13)
(14)
(15)
(16)
(17)
(18)
(19)
(20)
(21)
(22)

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

mov (2*37)+(160*15),ax mov (2*38)+(160*15),ax mov (2*39)+(160*15),ax mov (2*40)+(160*15),ax mov (2*41)+(160*15),ax mov (2*42)+(160*16),ax mov (2*43)+(160*16),ax mov (2*44)+(160*16),ax mov (2*45)+(160*16),ax mov (2*46)+(160*15),ax mov (2*46)+(160*14),ax mov (2*47)+(160*14),ax ret

(23)
(24)

VII.

Kesimpulan

Variabel adalah lokasi memori. Untuk seorang programmer ini jauh lebih mudah

telah beberapa nilai disimpan dalam variabel bernama "var1" maka pada

Referensi

Dokumen terkait