Pemrograman Assembler dengan Debug

dokumen-dokumen yang mirip
Daftar Isi. Daftar Isi Pertemuan 2: Pengenalan Debug dan Interrupt P2.1. Teori Pengenalan DEBUG... 3

MICROPROSESSOR ASEMBLY (REGISTER)

Mata Kuliah : Bahasa Rakitan

PERTEMUAN : 4 EKSPLORASI DEBUG

PROGRAM STUDI TEKNIK KOMPUTER JURUSAN TEKNIK KOMPUTER POLITEKNIK NEGERI SRIWIJAYA PALEMBANG TK Praktikum Bahasa Rakitan Hand On Lab 4

MEMULAI MEMPROGRAM DI DOS. Struktur Assambler. Menggunakan Debug dari DOS

MODUL V STACK dan PENGENALAN PROCEDURE

Bahasa rakitan/assembly Language

Eksplorasi Prosesor 8086 Dengan Program DEBUG

Diktat Kuliah intel 8088

Diktat Kuliah Instruksi dan Segmentasi

MODUL I PENGENALAN ASSEMBLY

Kuis : Bahasa Rakitan (UAS)

LAPORAN PRAKTIKUM ORGANISASI KOMPUTER & BAHASA ASSEMBLY PROGRAM OPERASI ARITMATIKA. Kelas : INF 2B Praktikum 1 Nama : Fernalia NIM : J3C212210

R E G I S T E R. = Code Segment Register = Data Segment Register = Stack Segment Register = Extra Segment Register. 3.

Diktat Kuliah Organisasi dan Interaksi

Materi 3. Komponen Mikrokomputer SYSTEM HARDWARE DAN SOFTWARE DADANG MULYANA

Kuliah 3: 3.1. Debugging dan TASM 3.2. Interrupt

MIKROPROSESOR REGISTER-REGISTER MIKROPROSESOR INTEL

LAPORAN PRAKTIKUM ORGANISASI KOMPUTER & BAHASA ASSEMBLY PROGRAM POINTER OPERASI ARITMATIKA

Sistem Bilangan & Dasar Assembler Dadang Mulyana

REGISTER Register-register yang terdapat pada mikroprosesor, antara lain :

OPERATION SYSTEM. Jenis - Jenis Register Berdasarkan Mikroprosesor 8086/8088

Mikroprosesor. Pertemuan 8. By: Augury

SATUAN ACARA PERKULIAHAN Mata Kuliah: BAHASA RAKITAN Jurusan / Jenjang / Kode / SKS : SI / D3 / KK /2

Mikroprosesor. Bab 3: Arsitektur Mikroprosesor. INTEL 8086 Generasi Awal Prosesor PENTIUM. Arsitektur Mikroprosesor 1

Daftar Isi. Daftar Isi Pertemuan 6: Perintah Masukkan dari Keyboard P6.1. Teori Masukkan dari Keyboard... 3

ORGANISASI DAN ARSITEKTUR KOMPUTER. rsp oak informatika

BAB 3 MODE AKSES MEMORI, PENGGUNAAN VARIABEL DAN STACK

Mode Pengalamatan (Addressing Mode) Keluarga Prosesor 8086

PERTEMUAN : 3. Jurusan Teknik Informatika STT PLN. Riki Ruli S -

Sistem Komputer. Komputer terdiri dari CPU, Memory dan I/O (Arsitektur Von-Neumann) Ada tiga bus dalam sistem komputer

IMPLEMENTASI PENGISIAN REGISITER DATA DAN OPERASI ARITMATIKA MENGGUNAKAN PROGRAM COMMAND PROMPT, BAHASA ASSEMBLER

Mata Kuliah : Bahasa Rakitan Materi ke-3

Bahasa Rakitan PENGERTIAN REGISTER

BAB VIII OPERASI ARITMATIKA

PEMROGRAMAN BAHASA RAKITAN

PETA MEMORI MIKROPROSESOR 8088

0F9C:0000 9A00009E0F CALL 0F9E:0000 0F9C: PUSH BP 0F9C: E5 MOV BP,SP 0F9C: C0 XOR AX,AX 0F9C:000A 9ACD029E0F CALL 0F9E:02CD

MODUL PRAKTIKUM ORGANISASI SISTEM KOMPUTER

Pada pembahasan kali ini, digunakan instruksi MOV untuk menjelaskan mode pengalamatan data. Format penulisannya adalah :

Modul Kuliah Bahasa Rakitan. Harry Witriyono, M.Kom. I. Bahasa Rakitan, Microprocessor dan Bilangan

Dosen : Team (no cheating, no book, no note, no additional paper, no calculator)

Microcontroller: Bahasa Pemrograman Assembly 8051

BAB V MEMULAI DENGAN ASSEMBLY

Operasi Transfer Data

KONFIGURASI PIN-PIN MIKROPROSESOR Z 80. Yoyo somantri Dosen Jurusan Pendidikan Teknik Elektro FPTK Universitas Pendidikan Indonesia

MODUL III FLOW CONTROL INSTRUTIONS

Karakteristik Instruksi Mesin

Instruksi-Instruksi Pemindahan Data. Sistem Komputer Universitas Gunadarma

INTRUKSI-INTRUKSI BAHASA PEMROGRAMAN ASSEMBLY

Mode Pengalamatan. Sistem Komputer Universitas Gunadarma

Memory. Klasifikasi. Hirarki Memory

NAMA : FATIH SILMI MHD NIM : BAHASA MESIN DI DALAM DEBUG.COM

Bahasa Rakitan By Okti Yudhanti Nur K REGISTER

Diktat Kuliah Instruksi Mesin

Memori Semikonduktor

Bab 1. Pemrograman dan Bahasa Rakitan. 1.1 Pendahuluan

BAB I TUGAS MATA KULIAH SISTEM MIKROPROSESOR DOSEN PEMBERI TUGAS : FATAH YASIN, ST, MT.

Pertemuan ke 7 Mode Pengalamatan. Computer Organization Eko Budi Setiawan

MODE PENGALAMATAN PROGRAM MEMORI

Organisasi & Arsitektur Komputer

BAB II LANDASAN TEORI LANDASAN TEORI

INTERRUPT. Cara penggunaan int [no int]

PENGERTIAN REGISTER. Arsitektur Mikroprosesor INTEL 8086 Tinjauan Umum

Diktat Kuliah - Pipeline

Daftar Isi. Daftar Isi Pertemuan 5: Subroutine, Macro, Stack dan Pointer P5.1. Teori Subroutine (Procedure) Macro...

BAB 3 UNIT KONTROL. Universitas Gadjah Mada 1

KALKULATOR ASSEMBLY Lutfi Budi Ilmawan

Bahasa Pemrograman Assembler 8051

DIKTAT BAHASA RAKITAN

BAB III ALGORITMA DAN PERANCANGAN ALGORITMA DAN PERANCANGAN

Membangun Bootloader Prosesor x86 dengan Program Debug.com

BAB I PENDAHULUAN 1.1 LATAR BELAKANG

MODUL PRAKTIKUM SISTEM OPERASI PRAKTIKUM I MODEL PEMROGRAMAN 1

Intermediate Code Form

Pengantar Bahasa Rakitan

Quis. 2. Sistem bilangan yang menggunakan basis 8 adalah: A. Biner D. Hexadesimal B. Oktal E. Sexagesimal C. Desimal

PERTEMUAN BAHASA PEMOGRAMAN DAN FORMAT BILANGAN MIKROKONTROLER

TEORI MIKROPROSESOR 8088

DASAR KOMPUTER. Assembly Language

BAB XXVII TURBO DEBUGGER

intruksi kepada CPU untuk mengakses sistem operasi. BIOS tersimpan pada Read Only

Mikroprosessor & Antarmuka

BAB IV HASIL PENGUKURAN DAN PENGUJIAN ALAT SISTEM PENGONTROL BEBAN DAYA LISTRIK

SISTEM KERJA MIKROPROSESOR

LAPORAN PRAKTIKUM SISTEM MIKROPROSESSOR INSTRUKSI PERCABANGAN DAN LOOP

BAHASA PEMOGRAMAN AT89S/Cxx (assembly)

Simple As Possible (SAP) - 2. Abdul Syukur

LAPORAN PRAKTIKUM MIKROPROSESOR PEMINDAHAN DATA

J. Informatika AMIK-LB Vol.1 No.2 /Mei/2013

Dua komponen yang menjalankan proses dalam komputer, yaitu : Central Processing Unit (CPU) Memory Kedua komponen tersebut terletak pada Motherboard.

BAB IV IMPLEMENTASI DAN PENGUJIAN IMPLEMENTASI DAN PENGUJIAN

BAHASA PEMROGRAMAN MIKROKOMPUTER

Pendahuluan BAB I PENDAHULUAN

BAB 4 STACK AREA, SUBROUTINE dan INSTRUKSI BLOK

Pertemuan ke 6 Set Instruksi. Computer Organization Dosen : Eko Budi Setiawan

DCH1B3 Konfigurasi Perangkat Keras Komputer SAP-2

ORGANISASI KOMPUTER DASAR

BAB II MIKROPROSESOR INTEL 8088

Transkripsi:

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 1. R (Register) Perintah debug 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 register harus nilai heksadesimal. dadang mulyana 2012 7 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' (enter) dadang mulyana 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 programprogram yang sudah dibuat berikut segala dampaknya terhadap sistem dan aplikasi, sedangkan ASSEMBLY diadakan dengan untuk mempermudah seorang programmer dalam menyusun instruksiinstruksi 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) -A100 -xxx : 0100 C:\Windows\Command\debug (enter) - 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) -A100 16D9:0100 MOV cx,005 16D9:0103 mov DL,61 16D9:0105 MOV AH,02 16D9:0107 INT 21 16D9:0109 INC DL 16D9:010B LOOP 0107 16D9:010D INT 20 16D9:010F - Ofset terakhir adalah O10Fh dan program dimulai 0100h, panjang programnya adalah F byte Karena panjangnya F byte maka register BX diisi dengan 0 dan CX dengan F Caranya ketikan RBX (enter) ketik 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 16D9:010B LOOP 0107 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 - Contoh Penulisan program 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 penjumlahan dadang mulyana 2012 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 :0008 dadang mulyana 2012 26 13

Perintah dan Fungsi dalam DEBUG.COM (cont.) RIP (Register IP), perintah yang memberitahukan 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