Anda di halaman 1dari 16

Pemrograman Assembler

dengan Debug

dadang mulyana 2012 1

Implementasi bahasa assembly bisa


menggunakan 2 cara:
1. Menggunakan Debug
2. Pemrograman dengan Software
Assembler

dadang mulyana 2012 2

1
Debug
• DEBUG adalah alat bantu dalam perancangan peralatan berbasis
mikro- prosesor, karena daoat mencapai tingkat perangkat keras
yang paling dalam dari suatu komputer, misal menulis informasi ke
dalam boot sector, direktori, FAT, menjalankan interupsi BIOS atau
DOS.
• Hal-hal penting dalam Debug : · Hanya mengenal dan selalu
bekerja dengan bilangan-bilangan heksadesimal ·
• Bekerja dengan penunjukan ke alamat-alamat memori memakai
format segment : offset. · Kemampuan mengakses daerah "very low
level access" (software / hardware). Setiap jenis komputer
(mainframe, minicomputer, microcomputer) memiliki sarana
debugging berbeda.

• Langkah mengaktifkan DEBUG.EXE / DEBUG.COM :


• c> Debug (enter) -dadang mulyana 2012 3

Perintah debug
1. R (Register)
• Untuk menampilkan informasi komposisi register-register di dalam
mikroprosesor, alamat memori, serta isi dari alamat memori tersebut
yang mungkin berupa instruksi yang akan dilaksanakan oleh
komputer, atau data.
Contoh : c:\>DEBUG (enter)
r (enter)
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=29E7 ES=29E7 SS=29E7 CS=29E7 IP=0100 NV UP EI PL NZ NA PO NC
29E7:0100 0114 ADD[SI],DX DS:0000=20CD
AX, BX, CX, DX, SP, BP, SI, DI, DS, ES, SS, CS, dan IP adalah
register internal mikroprosesor yang dipakai dalam CPU. NV, UP,
EI, PL, NZ, NA, PO, dan NC adalah output dari sebuah register
yang disebut register status atau register flag.
dadang mulyana 2012 4

2
• Angka 29E7:0100 adalah alamat lokasi memori
dengan format segment:offset. Kedua nilai
tersebut merupakan kombinas antara register
CS (Code Segment) dengan IP (Instruction
Pointer).
• 0114 adalah isi alamat memori bersangkutan,
byte ke-1 berisi nilai '01', dan byte ke-2 berisi
nilai '14'. Karena setiap alamat memori berisi
satu byte, tentunya nilai 01 itulah yang berdiam
pada alamat offset 0100, sedangkan nilai 14 ada
di alamat 0101 ADD[SI],DX adalah terjemahan
intruksi dari alamat memori bersangkutan.

dadang mulyana 2012 5

Untuk mengubah nilai-nilai register internal dapat menggunakan


perintah : ·
• RAX = mengubah nilai register AX ·
• RBX = mengubah nilai register BX ·
• RCX = mengubah nilai register CX ·
• RDX = mengubah nilai register DX ·
• RSP = mengubah nilai register SP ·
• RBP = mengubah nilai register BP ·
• RSI = mengubah nilai register SI ·
• RDI = mengubah nilai register DI ·
• RDS = mengubah nilai register DS ·
• RES = mengubah nilai register ES ·
• RSS = mengubah nilai register SS ·
• RCS = mengubah nilai register CS ·
• RIP = mengubah nilai register IP

dadang mulyana 2012 6

3
Sebagai contoh untuk mengubah nilai
register AX dari nilai '0000' ke nilai '1111' :

c:\>Debug (enter)
-RAX (enter)
AX 0000 : 1111 (diisi setelah ':' dan enter)

Contoh diatas juga berlaku untuk register


internal lainnya dan untuk diperhatikan
bahwa angka-angka yang dimasukkan
kedalam registerdadang
harus nilai heksadesimal.7
mulyana 2012

2. dump
Berfungsi untuk melihat isi blok memori. Contoh :
c:\>Debug (enter)
-d 0100 (enter)

Hasil yang diperoleh : (import dari sidekick ke text !)


Dari tampilan tersebut, terbagi menjadi 3 bagian, yaitu :
· Bagian kiri : menampilkan alamat-alamat memori dengan
format segment:offset ·
Bagian tengah : menampilkan angka-angka dalam heksadesimal
sebagai isi dari alamat-alamat memori ·
Bagian kanan : menampilkan kode-kode karakter ASCII sebagai
terjemahan dari angka heksadesimal tersebut Debug hanya
akan memperlihatkan 96 jenis karakter ASCII tercetak
(printable

dadang mulyana 2012 8

4
Beberapa parameter yang dapat digunakan :
· L (length / panjang)
Memiliki arti menampilkan data sepanjang 2 byte, bila parameter 'L'
tidak diberikan, maka otomatis akan ditampilkan 128 byte data.
-D 0100 L 2 (enter)

· Alamat awal - alamat akhir


-D 0100 01FF (enter)

· Alamat segment:offset
-D FFFF:0000 (enter)

· Alamat segment:offset sampai segment:offset


-D F000:E000 F000:E000 (enter)
dadang mulyana 2012 9

3. U (unassemble)
Berfungsi untuk menampilkan listring dari
suatu program bahasa mesin.

Contoh :
c:\>Debug (enter)
-U FFFF:0000 (enter)
Hasil : import dari sidekick ke text !

dadang mulyana 2012 10

5
4. E (enter)
Berfungsi untuk mengisi atau mengubah data dalam
memori. Contoh :
c:\>Debug (enter)
-E 0100 (enter)
Hasil :
-E 0100 29E7:0100 01.

Setelah angka 01, dapat dimasukkan nilai untuk mengganti


angkat tersebut langsung di belakangnya yang diakhir
dengan menekan ENTER atau menekan SPACE BAR
untuk berpindah ke alamat berikutnya atau menekan
tanda '-' (Hyphen) untuk mundur ke lokasi sebelumnya.
dadang mulyana 2012 11

5. F (fill).
Berfungsi untuk mengisi lokasi memori. Perbedaan
dengan perintah 'E (Enter)', yang menawarkan
modifikasi memori secara satu alamat demi satu
alamat, sedang 'F (Fill" untuk mengubah isi
alamat memori dalam jumlah besar, sesuai
dengan rentang (range) yang dikehendaki.

Contoh :
c:\>Debug (enter)
-F 0100 017F 58 (enter)

Berarti isilah mulai alamat offset 0100 sampai offset


017F dengan nilai heksa 58 (karakter ASCII 'x').
atau - F F 0100 017F 'x'mulyana
dadang (enter)2012 12

6
Beberapa bentuk perintah 'F' :

· F 0100 L 1 41 (enter)

Arti : mulai offset 0100 sebanyak 1 byte diisi


dengan nilai heksa 41 (karakter ASCII 'A').

dadang mulyana 2012 13

6. C (Compare)
Berfungsi untuk membandingkan isi sebuah blok memori
dengan isi blok memori lainnya.
Format perintah :
C alamat1 panjang alamat2

Contoh :
c:\>Debug (enter)
-C 0100 L 10 0200 (enter)

Berarti mulai offset 0100 sebanyak 16 byte (10 heksa)


bandingkan dengan offset 0200. Hasil yang dimunculkan
hanyalah nilai-nilai yang berbeda setiap alamat. Apabila
dilayar tidak memberikan reaksi apapun selain kembali
ke prompt '-' atau hyphen, berarti kedua blok memori
persis sama.
dadang mulyana 2012 14

7
7. S (Search)
Berfungsi untuk mencari data baik yang berupa karakter maupun
untaian karakter (string) di dalam suatu blok memori tertentu.
Apabila dalam pencarian, data yang dicari diketemukan, maka akan
ditampilkan semua alamat dari data tersebut lengkap dengan nilai
segment dan offsetnya, sebaliknya bila tidak diketemukan akan
kembali ke prompt '-'.

Format perintah : S alamat awal panjang alamat akhir


Contoh :

c:\>Debug (enter)
-S F000:E000 L FF "IBM" (enter)
Berarti mulai alamat F000:E000 sebanyak FFh byte cari string "IBM".

-S F000:E000 L FF "A" (enter)


Berarti mulai alamat F000:E000 sebanyak FFh byte cari string "A"..

dadang mulyana 2012 15

8. M (Move)
Berfungsi untuk memindahkan atau menyalin data yang ada di suatu
lokasi memori ke alamat memori lainnya.
Format perintah : M alamat asal panjang alamat tujuan

Contoh :
c:\>Debug (enter)
-M 0100 L 7F 0200 (enter)
Berarti mulai alamat offset 0100 sebanyak 7Fh byte isi memorinya
pindahkan atau kopikan ke offset 0200.

Dari pembahasan perintah-perintah DEBUG dapat disimpulkan bahwa


DEBUG dibuat dengan tujuan untuk dapat mengeksplorasi program-
program yang sudah dibuat berikut segala dampaknya terhadap
sistem dan aplikasi, sedangkan ASSEMBLY diadakan dengan untuk
mempermudah seorang programmer dalam menyusun instruksi-
instruksi pada sebuah program yang sedang dibuat.

dadang mulyana 2012 16

8
Instruksi Transfer Data (Cont.)

• MOV AH,02 ; memasukkan bilangan 02 ke


register AH
Operand 1 : Register AH
Operand 2 : Bilangan 02

dadang mulyana 2012 17

dadang mulyana 2012 18

9
Memulai Debug
Ketikan langsung debug dalam prompt dos
C:\Dos\Debug (enter) C:\Windows\Command\debug (enter)
-A100 -
-xxx : 0100

Prompt hypen (-), menunjukan debug telah aktif.


Perintah A (assemble) berfungsi untuk meminta pada CPU
untuk mempersiapkan lokasi memori disegmen memori
terdekat untuk menampung beris-baris instruksi program
yang akan diberikan.
Perintah A100 berarti instruksi pertama akan diletakan
pada alamat offset 100h pada segmen memori tersebut,
sedangkan xxx adalah alamat segmen
Ahiri program dengan INT 20. Untuk mengahiri program
tekan enter 1 kali lagi hingga hilang tanda prompt hypen
dadang mulyana 2012 19

1. Menentukan panjang program


 Dilakukan dengan cara mengisi register BX:CX
C:\windows\command\debug (enter) Ofset terakhir adalah O10Fh dan
-A100
program dimulai 0100h, panjang
16D9:0100 MOV cx,005
16D9:0103 mov DL,61 programnya adalah F byte
16D9:0105 MOV AH,02 Karena panjangnya F byte maka
16D9:0107 INT 21 register BX diisi dengan 0 dan CX
16D9:0109 INC DL
dengan F
16D9:010B LOOP 0107
16D9:010D INT 20 Caranya ketikan RBX (enter) ketik
16D9:010F - 0 dan RCX(enter) ketik F

dadang mulyana 2012 20

10
2. Memberi nama program
Berikan perintah N (name)
3. Menuliskan program ke media
Perintah W (write) (enter)
4. MEnjalankan Program
Perintah G (go) (enter)

Bila program tidak ada salah, akan tampil


pesan “ Program terminate normally”

dadang mulyana 2012 21

C:\windows\command\debug (enter)
-A100
16D9:0100 MOV cx,005
16D9:0103 mov DL,61
16D9:0105 MOV AH,02
16D9:0107 INT 21
16D9:0109 INC DL Contoh Penulisan
16D9:010B LOOP 0107 program
16D9:010D INT 20
16D9:010F -
-RBX
BX 0000
:0
-RCX
CX 0000
:F
-N coba1.com
-W
Writing 000f bytes
-G
Abcde
Program terminated normally
-
dadang mulyana 2012 22

11
Perintah Lain Dalam Debug

dadang mulyana 2012 23

Perintah dan Fungsi dalam


DEBUG.COM
• DEBUG, menjalankan program DEBUG :
A> DEBUG nama file . COM

• Q (Quit), keluar dari program DEBUG :


-Q
• H (Hexa), menjumlahkan dan mengurangkan
dua bilangan Heksadesimal
- H 2204 02012
4216 01F2 Hasil pengurangan
Hasil
dadang mulyana 2012 penjumlahan 24

12
Perintah dan Fungsi dalam
DEBUG.COM (cont.)
• R (Register), mengetahui isi masing-masing
register
-R
AX=0000 BX=0000 CX=0000 DX=0000 …
DS=0FD8 ES=0FD8 SS=0FD8 CS=0FD8…

• A (Assembler), perintah untuk masuk ke tempat


penulisan program assembler.
-A -A100
0AB4:0100 0AB4:0100
dadang mulyana 2012 25

Perintah dan Fungsi dalam


DEBUG.COM (cont.)
• N (Name), perintah untuk membuat nama
program yang telah dibuat.
Format : N [drive]:[nama program]
-N B:COBA.COM

• RCX (Register CX), perintah untuk mengetahui


dan memperbaiki isi register cx sebagai tempat
penampungan panjang program yang sedang
aktif.
-RCX
CX 0000 dadang mulyana 2012 26

:0008

13
Perintah dan Fungsi dalam
DEBUG.COM (cont.)
• RIP (Register IP), perintah yang memberi-
tahukan komputer untuk mulai memroses
program dari titik tertentu. Pada program debug
selalu dimulai dari 0100 h.
- RIP
IP 0100
: 0100

• W (Write), perintah yang digunakan untuk


menulis program ke media penyimpanan.
-W
Writing 0008 bytes dadang mulyana 2012 27

Perintah dan Fungsi dalam


DEBUG.COM (cont.)
• G (GO), perintah yang digunakan untuk menjalan-kan
program.
-G
A
Program terminated normally

• U (Unassemble), perintah untuk menampilkan deretan


program yang sedang aktif sepanjang 21 H.
Format :
U [tempat awal unassemble] L [panjang
program]
-U 100 L 0D

dadang mulyana 2012 28


Ctrl+Print Screen, cetak ke printer

14
Perintah dan Fungsi dalam
DEBUG.COM (cont.)
• T (Trace), perintah untuk memroses sebaris program
saja.
-A100
0AD2 : 0100 MOV DL,41
0AD2 : 0102 INT 21
0AD2 : 0104 INT 20
0AD2 : 0106
-RCX
CX 0000
:06
-RIP
IP 0100
:
-G
A
Program terminated normally
-T
AX=0000 BX=0000 CX=0006 DX=0041 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0AD2 ES=0AD2 SS=0AD2 CS=0AD2 IP=0102 NV UP EI PL NZ NA PO NC
0AD2 : 0102 CD21 INT 21
dadang mulyana 2012 29

SET INSTRUKSI

1. Intstruksi Transfer Data


2. Instruksi Aritmetika
3. Instruksi Looping
4. Instruksi Jump
5. Operasi Stack
6. Operasi Logika
dadang mulyana 2012 30

15
INSTRUKSI TRANSFER DATA

• MOV
Format : MOV [operarand-1],[operand-2]
Operand 1 : Register, Variabel, Lokasi Memory
Operand 2 : Register, Variabel, Lokasi Memory,
Bilangan

• MOV AH,AL ; menduplikatkan isi register AL ke


register AH.
Operand 1 : Register AH
Operand 2 : Register AL
dadang mulyana 2012 31

Tugas Latihan 5
1. Buatlah program dengan nama latihan5a.com
untuk menampilkan tulisan “ghijklmn”
2. Buatlah program dengan nama latihan5b.com
untuk menampilkan tulisan “nmlkji”

• Listing program dibuat dalam notepad


• Setiap langkah dan baris program dijelaskan
• Hasil program dan tampilan di print screen
• Satukan dalam 1 folder, nama folder latihan5
• Kirim ke dadangstmik@gmail.com
dadang mulyana 2012 32

16

Anda mungkin juga menyukai