Anda di halaman 1dari 10

LAPORAN PRAKTIKUM ASSEMBLER

Oleh

GOZALLI ACHMAD IRAWAN

0717032049

gozalli@students.unila.ac.id, edo_gozt@yahoo.co.id

gozalli@students.unila.ac.id , edo_gozt@yahoo.co.id PROGRAM STUDI ILMU KOMPUTER JURUSAN MATEMATIKA FAKULTAS

PROGRAM STUDI ILMU KOMPUTER JURUSAN MATEMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS LAMPUNG

2009

DAN ILMU PENGETAHUAN ALAM UNIVERSITAS LAMPUNG 2009 Gozalli Achmad Irawan – Ilmu Komputer - Universitas
DAN ILMU PENGETAHUAN ALAM UNIVERSITAS LAMPUNG 2009 Gozalli Achmad Irawan – Ilmu Komputer - Universitas
PRODI ILMU KOMPUTER JURUSAN MATEMATIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS LAMPUNG LAPORAN PRAKTIKUM

PRODI ILMU KOMPUTER JURUSAN MATEMATIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS LAMPUNG

LAPORAN PRAKTIKUM 1 ASSEMBLER PENGGUNAAN PROGRAM DEBUG DAN COMMAND PROMPT

Gozalli Achmad Irawan

0717032049

gozalli@students.unila.ac.id, edo_gozt@yahoo.co.id

PENDAHULUAN

Bahasa assembler adalah bahasa pemrograman tingkat rendah. Hal ini untuk

menggambarkan kekhususannya sebagai bahasa yang berorientasi pada mesin. Pada

bahasa assembler digunakan menemonic code, yaitu kode tunggal program, sebagai

pengganti numeric operation code pada bahasa mesin.

Meskipun perkembangan bahasa tingkat tinggi kini berkembang dengan cepat, namun

bahasa assembly tidak dapat digantikan dengan bahasa tingkat manapun dalam hal

kecepatan, ukuran file yang kecil serta kehandalannya dalam manipulasi system.

Pembuatan bahasa assembler tidak akan lepas dari operasi-operasi register. Dalam

system operasi DOS maupun keluarga Windows, untuk melihat isi register dan nilai-nilai

di dalamnya dapat menggunakan command line dan perintah debug.

MEMULAI DENGAN COMMAND PROMPT DAN DEBUG

MENGGUNAKAN COMMAND LINE

Untuk memulai command prompt dari Windows dapat dilakukan dalam beberapa cara,

yaitu:

dari Windows dapat dilakukan dalam beberapa cara, yaitu: Gozalli Achmad Irawan – Ilmu Komputer - Universitas
dari Windows dapat dilakukan dalam beberapa cara, yaitu: Gozalli Achmad Irawan – Ilmu Komputer - Universitas

1.

Masuk ke Start menu Program Acessories Command Line

2. Masuk ke Start menu Run, ketikkan “cmd” lalu tekan tombol

Tampilan awal dari command prompt sebagai berikut:

Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\Gozalli>

Perhatikan tampilan diatas. Pada tampilan awal tersebut dituliskan Sistem Operasi yang kita gunakan dan versi sistem operasi tersebut. Baris C:\Documents and Settings\Gozalli> menyatakan bahwa kita sedang berada pada direktori user gozalli pada drive C. Untuk berpindah ke direktori lain maka gunakan perintah cd [path direktori]. Untuk keluar dari suatu direktori menuju direktori satu tingkat

diatasnya, maka dapat digunakan perintah cd

direktori utama, yaitu drive aktif dapat digunakan perintah cd\. Dan untuk berpindah

drive aktif, dapat digunakan perintah [huruf direktori]:.

, dan untuk keluar langsung menuju

Contoh :

C:\Documents and Settings\Gozalli>cd C:\Documents and Settings>cd gozalli C:\Documents and Settings\Gozalli>cd\ C:\>d:

D:\>c:

C:\>dir Volume in drive C has no label. Volume Serial Number is E481-1A29

Directory of C:\

16/05/2009 07:50 05/06/2009 10:08 16/05/2009 07:50 16/05/2009 08:10

<DIR>

0 AUTOEXEC.BAT 15.512 bar.emf 0 CONFIG.SYS Documents and Settings

05/06/2009 07:04

<DIR>

ECWIN

and Settings 05/06/2009 07:04 <DIR> ECWIN Gozalli Achmad Irawan – Ilmu Komputer - Universitas
and Settings 05/06/2009 07:04 <DIR> ECWIN Gozalli Achmad Irawan – Ilmu Komputer - Universitas

02/06/2009 00:10 16/05/2009 08:36

<DIR>

201 emu8086.io IBMTOOLS

02/06/2009 12:13 05/06/2009 19:54

<DIR>

13.030 PDOXUSRS.NET Program Files

03/06/2009 17:51

<DIR>

Programming

05/06/2009 19:54

<DIR>

WINDOWS

C:\>

5 File(s)

28.743 bytes

Dir(s)

6 8.446.607.360 bytes free

Pada program diatas dapat dilihat bahwa kita menggunakan perintah dir. Perintah ini digunakan untuk menampilkan isi direktori yang sedang aktif.

Demikianlah perintah-perintah dasar dalam command line. Untuk perintah lebih lanjutnya dapat di lanjutkan pada pembahasan selanjutnya.

MENGGUNAKAN DEBUG

Untuk menggunakan perintah debug, dalam direktori aktif ketikkan perintah debug , maka akan muncul tampilan tanda “-“ diawal baris. Bila tanda itu sudah muncul berarti kita telah masuk kedalam lingkungan program debug. Langkah awal yang akan dilakukan yaitu ketikkan r, maka akan terdapat tampilan sebagai berikut:

C:\>debug -r AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=0B0F ES=0B0F SS=0B0F CS=0B0F IP=0100

0B0F:0100 E174

NV UP EI PL NZ NA PO NC

LOOPZ

0176

Pada tampilan diatas yaitu memperlihatkan register-register dan nilai-nilai didalamnya. Pada baris ini dituliskan register-register yaitu AX.BX,CX,DX,SP,BP,SI,DI,DS,ES,SS,CS, dan IP. Register-register tersebut adalah register yang umum digunakan dalam assembler. Register-register tersebut terbagi atas:

General Purpose register : AX.BX,CX,DX Segmen register : DS,ES,SS,CS Index Pointer : IP, berpasangan dengan CS

: DS,ES,SS,CS Index Pointer : IP, berpasangan dengan CS Gozalli Achmad Irawan – Ilmu Komputer -
: DS,ES,SS,CS Index Pointer : IP, berpasangan dengan CS Gozalli Achmad Irawan – Ilmu Komputer -

Pointer dan Index Register

: SP,BP,SI,DI

Nilai pada masing-masing register yaitu sejumlah 2 byte atau 16 bit. Pada tampilan diatas bernilai 0000, nilai tersebut bertipe heksa decimal. Pada register AX, BX, CX, dan DX, masing-masing register tersebut dibagi kembali menjadi 2. Yaitu Little Endian (L) dan High Endian (H). Contoh: bila nilai AX=1F2D maka:

AL (AX Little Endian) = 2D AH (AX High Endian) = 1F

Memasukkan nilai pada register:

Untuk memasukkan nilai pada register, maka gunakan perintah r diikuti dengan nama register, lalu masukkan nilai. Contoh: akan mmeberikan nilai AX menjadi 12AB

-r

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=0B0F ES=0B0F SS=0B0F CS=0B0F IP=0100

0B0F:0100 E174

LOOPZ

0176

-rax

AX 0000

:12ab

NV UP EI PL NZ NA PO NC

-r AX=12AB BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=0B0F ES=0B0F SS=0B0F CS=0B0F IP=0100

0B0F:0100 E174

NV UP EI PL NZ NA PO NC

LOOPZ

0176

Perhatikan bahwa nilai AX telah berubah. Hal ini dapat pula dilakukan untuk regiser lain.

Melihat Isi Memori:

Untuk melihat isi memori dapat digunakan perintah “d”. contoh:

-d100

0B0F:0100

E1 74 09 AC 3B F1 72 F5-59 5E EB 0B 3B F1 72 ED

.t

;.r.Y^

;.r.

0B0F:0110

59 5E 3A 5C FF 74 0E B4-3B CD 21 86 34 00 FE 0A

Y^:\.t ;.!.4

0B0F:0120

9B DA E9 C9 D7 E9 C3 D7-89 7E 02 80 46 01 0C B8

F ~

0B0F:0130

3F 2E B9 08 00 F3 AA 86-C4 AA 86 C4 B1 03 F3 AA

?

0B0F:0140

32 C0 AA C3 BE 08 98 BF-CE 92 B4 60 CD 21 BE 77

2 `.!.w

32 C0 AA C3 BE 08 98 BF-CE 92 B4 60 CD 21 BE 77 2
32 C0 AA C3 BE 08 98 BF-CE 92 B4 60 CD 21 BE 77 2

0B0F:0150

3

>2

5

0B0F:0160

92 BF CE 92 E8 CB E3 C3-33 C0 89 3E 32 99 A2 35 99 A2 36 99 8A F8 9C 57-33 C9 88 0E 61 97 AC E8

a W3 6

0B0F:0170

73 E3 75 1D 3C 20 74 F6-3C 09 74 F2 86 06 36 99

s.u.< t.<.t

6.

Perhatikan pada tampilan diatas terdapat baris yang berisi bilangan 0B0F:0100. Bilangan tersebut menunjukkan segment:offset. Segment:offset akan dipelajari dalam bagian memori. Di sebelahnya terdapat angka-angka heksadesimal, angka-angka tersebut adalah isi dari memori pada segment:offset.

Perintah diatas digunakan d100, hal ini sama saja. D100 maksudnya yaitu tampilkan alamat pada offset ke 100. Tampilan sefault alamat offset adalah pada offset ke 100. Kita dapa mengubah isi memori tersebut dengan perintah e+nomor offset. Contoh:

-d100

0B0F:0100

E1 74 09 AC 3B F1 72 F5-59 5E EB 0B 3B F1 72 ED

.t

;.r.Y^ ;.r.

0B0F:0110

59 5E 3A 5C FF 74 0E B4-3B CD 21 86 34 00 FE 0A

Y^:\.t ;.!.4

 

0B0F:0120

9B DA E9 C9 D7 E9 C3 D7-89 7E 02 80 46 01 0C B8

F ~

0B0F:0130

3F 2E B9 08 00 F3 AA 86-C4 AA 86 C4 B1 03 F3 AA

?

0B0F:0140

32 C0 AA C3 BE 08 98 BF-CE 92 B4 60 CD 21 BE 77

2 `.!.w

0B0F:0150

92 BF CE 92 E8 CB E3 C3-33 C0 89 3E 32 99 A2 35

3

>2

5

0B0F:0160

99 A2 36 99 8A F8 9C 57-33 C9 88 0E 61 97 AC E8

a W3 6

0B0F:0170

73 E3 75 1D 3C 20 74 F6-3C 09 74 F2 86 06 36 99

s.u.< t.<.t

-e100

0B0F:0100 E1.ab

 

-d100

0B0F:0100

AB 74 09 AC 3B F1 72 F5-59 5E EB 0B 3B F1 72 ED

.t

;.r.Y^ ;.r.

0B0F:0110

59 5E 3A 5C FF 74 0E B4-3B CD 21 86 34 00 FE 0A

Y^:\.t ;.!.4

 

0B0F:0120

9B DA E9 C9 D7 E9 C3 D7-89 7E 02 80 46 01 0C B8

F ~

0B0F:0130

3F 2E B9 08 00 F3 AA 86-C4 AA 86 C4 B1 03 F3 AA

?

0B0F:0140

32 C0 AA C3 BE 08 98 BF-CE 92 B4 60 CD 21 BE 77

2 `.!.w

0B0F:0150

92 BF CE 92 E8 CB E3 C3-33 C0 89 3E 32 99 A2 35

3

>2

5

0B0F:0160

99 A2 36 99 8A F8 9C 57-33 C9 88 0E 61 97 AC E8

a W3 6

0B0F:0170

73 E3 75 1D 3C 20 74 F6-3C 09 74 F2 86 06 36 99

s.u.< t.<.t

-q

Perhatikan bagian yang dicetak tebal, nilai pada memori akan berubah dengan perintah e. Gunakan perintah q untuk keluar dari lingkungan debug.

Catatan:Tampilan diatas tidak menggunakan printscreen, hal ini karena dirasa penggunaan printscreen cukup merepotkan. Tampilan diatas langsung diambil melalui command prompt. Caranya yitu dengan klik kanan pada command prompt, lalu pilih

yitu dengan klik kanan pada command prompt, lalu pilih Gozalli Achmad Irawan – Ilmu Komputer -
yitu dengan klik kanan pada command prompt, lalu pilih Gozalli Achmad Irawan – Ilmu Komputer -

mark, blok bagian yang ingin diambil, lalu enter. Paste kedalam dokumen yang ingin dibuat.

PENGANTAR MENGGUNAKAN PERINTAH ASSEMBLER DALAM DEBUG.

Untuk membuat program dalam debug maka harus di awali dengan perintah -rip,

Setelah itu akan muncul tanda “:”, ketikkan enter lalu ketikkan a

[nomor offset].

Contoh:

C:\Documents and Settings\Gozalli>debug -rip IP 0100

:

-a100

0B0F:0100 mov al,02 0B0F:0102 mov dl,al 0B0F:0104 mov al,dl 0B0F:0106 inc al 0B0F:0108 add dl,al 0B0F:010A mov ah,dl 0B0F:010C dec al 0B0F:010E mov ah,al 0B0F:0110 sub ax,02

0B0F:0113

-t AX=0002 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=0B0F ES=0B0F SS=0B0F CS=0B0F IP=0102

NV UP EI PL NZ NA PO NC

0B0F:0102 88C2

MOV

DL,AL

-t

AX=0002 BX=0000 CX=0000 DX=0002 SP=FFEE BP=0000 SI=0000 DI=0000

DS=0B0F ES=0B0F SS=0B0F CS=0B0F IP=0104

0B0F:0104 88D0

-t AX=0002 BX=0000 CX=0000 DX=0002 SP=FFEE BP=0000 SI=0000 DI=0000

NV UP EI PL NZ NA PO NC

MOV

AL,DL

DS=0B0F

ES=0B0F

SS=0B0F

CS=0B0F

IP=0106

NV UP EI PL NZ NA PO NC

0B0F:0106 FEC0

INC

AL

-t AX=0003 BX=0000 CX=0000 DX=0002 SP=FFEE BP=0000 SI=0000 DI=0000

BX=0000 CX=0000 DX=0002 SP=FFEE BP=0000 SI=0000 DI=0000 Gozalli Achmad Irawan – Ilmu Komputer - Universitas
BX=0000 CX=0000 DX=0002 SP=FFEE BP=0000 SI=0000 DI=0000 Gozalli Achmad Irawan – Ilmu Komputer - Universitas

DS=0B0F ES=0B0F 0B0F:0108 00C2 -t

AX=0003 BX=0000 CX=0000 DX=0005 SP=FFEE BP=0000 SI=0000 DI=0000

DS=0B0F ES=0B0F SS=0B0F CS=0B0F IP=010A

SS=0B0F CS=0B0F IP=0108

ADD

DL,AL

NV UP EI PL NZ NA PE NC

NV UP EI PL NZ NA PE NC

0B0F:010A 88D4

MOV

AH,DL

-t

AX=0503 BX=0000 CX=0000 DX=0005 SP=FFEE BP=0000 SI=0000 DI=0000

DS=0B0F

ES=0B0F

SS=0B0F

CS=0B0F

IP=010C

NV UP EI PL NZ NA PE NC

0B0F:010C FEC8

DEC

AL

-t AX=0502 BX=0000 CX=0000 DX=0005 SP=FFEE BP=0000 SI=0000 DI=0000

DS=0B0F ES=0B0F SS=0B0F CS=0B0F IP=010E

0B0F:010E 88C4

-q C:\Documents and Settings\Gozalli>

NV UP EI PL NZ NA PO NC

MOV

AH,AL

Pada program diatas terdapar perintah MOV, SUB, ADD, DEC, dan INC.

Perintah MOV digunakan untuk mengcopykan suatu nilai kedalam suatu register.

Bentuknya seperti ini:

MOV reg,operand Nilai dari operand akan dimasukkan kedalam reg.

Perintah SUB digunakan untuk mengurangi nilai dari suatu register. Bentuknya:

SUB reg,operand Nilai dari reg akan dikurangi oleh operand. Hasil pengurangan akan disimpan kedalam

reg

Perintah ADD kebalikan dari SUB, yaitu menambahkan nilai kedalam register.

Perintah INC yaitu increment, yaitu menambahkan nilai dengan 1 pada

operandnya.bentuknya:

INC operand Perintah DEC kebalikan dari INC.

Untuk dapat melihat langsung efek dari perintah diatas, maka setelah diketikkan

program seperti contoh, lakukan perintah “t”. perintah ini yaitu trace. Trace digunakan

untuk melihat step demi step jalannya program. Perhatikan pada baris pertama dimana

step jalannya program. Perhatikan pada baris pertama dimana Gozalli Achmad Irawan – Ilmu Komputer - Universitas
step jalannya program. Perhatikan pada baris pertama dimana Gozalli Achmad Irawan – Ilmu Komputer - Universitas

akan dilakukan mov AL,02. Ketika di trace berikutnya nilai AX menjadi 0002. Ingat AX=AH+AL. AH=00 dan AL=02. Jadi AX=0002.

Lalu perhatikan langkan demi langkah berikutnya. Dapat diketahui bahwa perintah perintah diatas akan menyebabkan peeubahan pada nilai register.

diatas akan menyebabkan peeubahan pada nilai register. Gozalli Achmad Irawan – Ilmu Komputer - Universitas
diatas akan menyebabkan peeubahan pada nilai register. Gozalli Achmad Irawan – Ilmu Komputer - Universitas

KESIMPULAN

Bahasa Assembler adalah bahasa tingkat rendah yang menggunakan mnemonic code dalam penulisan code programnya.

Program Debug dapat digunakan untuk menuliskan isi program assembler.

Program debug dijalankan melalui command prompt

Pada debug, fungsi r yaitu untuk menampilkan isi register, dan bila r diikuti dengan nama register, maka berfungsi untuk memasukkan nilai register tersebut. Fungsi rip yaitu digunakan untuk menuliskan program dalam debug. Dan fungsi t yaitu untuk mentrace suatu program.

MOV digunakan untuk mengcopykan nilai kedalam register ADD digunakan untuk menambahkan nilai kedalam suatu register dengan operandnya Fungsi SUB kebalikan dari ADD INC digunakan untuk increment DEC digunakan untuk decrement

INC digunakan untuk increment DEC digunakan untuk decrement Gozalli Achmad Irawan – Ilmu Komputer - Universitas
INC digunakan untuk increment DEC digunakan untuk decrement Gozalli Achmad Irawan – Ilmu Komputer - Universitas