RSS

nice info computer,hacking,business, viruss,n many more

Rave's Blog

PERINTAH DASAR ASSEMBLER


¨             Mov

Perintah untuk mengisi, memindahkan, memperbaharui isi suatu register, variabel ataupun suatu lokasi memori.

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

¨             Int (Interrupt)
Perintah Int (Interrupt) mempunyai cara kerja yang sama dengan perintah GOSUB pada BASIC, hanya pada Int, subrotine yang akan dipaggil sudah tersedia pada memori komputer.
Subrotine yang dipanggil menggunakan perintah Int (interrupt) terdiri dari 2 jenis, yaitu:
1.  Bios Interrupt yaitu Int yang disediakan oleh BIOS (Basic Input Output System). Interrupt yang termasuk dalam Interrupt BIOS adalah Int 0 hingga Int 1F hexa.
2.  DOS Interrupt yaitu Int yang disediakan oleh DOS (Disk Operating System). Interupt yang termasuk dalam Interrupt DOS adalah Interrupt diatas Int 1F hexa. Misal: Interrupt 20 hexa, Interrupt 21 hexa dll.

ü Int 20
Int 20h merupakan salah satu dari DOS Interrupt. Tugas Int 20h adalah memberhentikan proses komputer terhadap suatu program COM. Bila pada semua program Com tidak terdapat Int 20h, maka sudah bisa dipastikan bahwa bila program diproses, maka akan terjadi hanging pada komputer. Hal ini terjadi karena komputer tidak menemukan perintah pemberhentian proses.
ü Int 21h Service 02
Int 21h juga merupakan salah satu dari DOS Interrupt. Int 21h mempunyai banyak tugas, maka tugasnya dibagi-bagi menjadi beberapa bagian. Untuk memanggil bagian-bagian itu, perlu disertakan nomor bagiannya yang disebut Service Number.
Untuk menjalankan fungsi Int 21h service 02 harus dipenuhi beberapa syarat:
-       Register AH, harus berisi service number dari Int 21h yang akan dijalankan (02h)
-       Register DL, harus berisi bilangan hexa dari karakter ASCII yang akan dicetak

¨             Q (Quit)
Bila kita mengetik Q dan menekan Enter, maka akan segera kembali ke DOS Prompt.
Contoh:

A>DEBUG
-Q
A>

¨             H (Hexa)

Perintah yang melaksanakan penjumlahan dan pengurangan terhadap dua bilangan hexa.

Bentuk Umum Instruksi:

H operand1  operand2


Contoh:

-H  2204   2012
4216 01F2

Pada perintah diatas terdapat dua bilangan. Bilangan sebelah kiri adalah penjumlahan kedua bilangan tersebut dan sebelah kanan adalah pengurangan kedua bilangan tersebut.

¨             R (Register)
Perintah ini adalah untuk mengetahui isi masing-masing register pada saat mengetik R dan menekan Enter.
Contoh:

-R
AX=0000 BX=0000 CX=0000 DX=0000 SP=CE2E BP=0000 SI=0000 DI=0000
DS=0FD8 ES=0FD8 CS=0FD8 IP=0100     MV  UP  DI  PL  MZ  MA  PO  NC
0FD8:0100  E603                        OUT   03,AL



¨             A (Assembler)
Perintah ini berguna untuk tempat menulis program Assembler.
Contoh:

-A100
0fD8:100

Pada sebelah kiri bawah huruf A terdapat angka yang merupakan pernyataan segment dan offset dimana anda menempatkan program.

¨             N (Name)
Perintah ini untuk memasukkan nama program setelah program dibuat.
Bentuk Umum Instruksi:

N [Drive]: [nama program]


Contoh:

-N B:COBA.COM

¨             RCX (Register CX)
Perintah untuk mengetahui dan memperbaharui isi register CX yang merupakan tempat penampungan panjang program yang sedang aktif sebelum dijalankan (running).
Contoh:

-RCX
CX  0000
.
.
.

¨             RIP (Register IP)
Peirntah yang memberitahu komputer untuk memulai proses program dari titik tertentu (selalu dimulai dari 100 hexa).
Contoh:

-RIP
IP 0100
.
.

¨             W (Write)
Setelah selesai membuat program dan menentukan RCX dan RIP dari program yang dibuat, adalah menulis program itu dahulu sebelum memprosesnya.


Contoh:

-W
Writing 0008 bytes

¨             G (Go)
Untuk memproses di dalam DEBUG ketik huruf G dan tekan Enter, maka program yang ditulis akan dijalankan.
Contoh:

-G
A
Program terminated normally

¨             T (Trace)
Perintah ini untuk memproses sebaris program saja.
Contoh:

-T

AX=0200 BX=0000 CX=0008 DX=0000 SP=CE2E BP=0000 SI=0000 DI=0000
DS=0FD8 ES=0FD8 SS=0FD8 CS=0FD8 IP=0102 MV UP DI PL NZ NA PO NC
0FD8:0102 B241                        MOV   DI,41

¨             U (Unassemble)
Fungsi ini sama dengan fungsi LIST pada BASIC, yaitu untuk melihat ptogram yang sedang aktif saat itu, maka yang ditampilkan adalah program sepanjang 21h.
Contoh:

-U
0FD8:0102  B241                       MOV               DI,41
0FD8:0104  CD21                       INT                             21
0FD8:0106  CD20                       INT                             20
0FD8:0108  D9B90300              FSTCW         [BX+DI+0003]
0FD8:010C F3                             REPZ
0FD8:010D A4                            MOVSB
0FD8:010E B020                                    MOV                           AL,20
0FD8:0110 AA                             STOSB
0FD8:0111 C3                             RET
0FD8:0112 3C80                                    CMP                           AL,80
0FD8:0114 7214                         JB                               012A
0FD8:0116 2C80                                    SUB                           AL,80
0FD8:0118 1E                             PUSH                         DS
0FD8:0119 53                              PUSH                         DX
0FD8:011A BE1E9142              MOV                           DS:[4291]
0FD8:011E C51E040C              LDS                            BX,[0C04]
Untuk menentukan sendiri panjang program yang ingin dilihat dapat digunakan perintah L (Length) dibelakang U.
Bentuk Umum Instruksi:

U [tempat memulai Unassemble]  L [panjang program]


Contoh:

-U100  L 0D
0FD8:0100  B910000                     MOV               CX,0010
0FD8:0103  B402                            MOV               AH,02
0FD8:0105  B241                            MOV               DL,41
0FD8:0107  CD21                           INT                 21
0FD8:0109  E2F8                            LOOP             0103
0FD8:010B  CD20                           INT                 20



UTILITY ASSEMBLER


Ø   Menjalankan Assembler
Untuk memulai pembuatan program, harus dijalankan DEBUG.COM terlebih dahulu.
Contoh:

A>Debug
-A100
0FD8:0100

Pada saat mengetik A100 berarti bahwa kita memulai sebuah program Assembler dengan byte pertama program yang diletakkan pada posisi 100 hexa.


 sumber : DWI AFGAN
READ MORE - PERINTAH DASAR ASSEMBLER

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

DEBUG

Dalam bab ini akan dijelaskan mengenai pengertian mengenai debug, langkah-langkah mengaktifkan, menggunakan, dan menerapkan perintah-perintah dasar dari DEBUG sebagai pengenalan menggunakan beberapa perintah pokok untuk pemograman assembler.

Oke kita mulai saja pembahasan nya.......:

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 :
a> Debug               (enter)
 -


 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 :
 A:\>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. 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.
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

 Sebagai contoh untuk mengubah nilai register AX dari nilai '0000' ke nilai '1111' :
 A:\>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.

 2. D (Dump)
 Berfungsi untuk melihat isi blok memori.
 Contoh :
 A:\>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 character), mulai dari nilai desimal 33 - 127. Di luar nilai itu, karakter yang ditampilkan hanyalah berupa tanda titik (dot atau period).

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)

3. U (Unassemble)
 Berfungsi untuk menampilkan listring dari suatu program bahasa mesin.
 Contoh :
 A:\>Debug            (enter)
 -U FFFF:0000      (enter)

 Hasil : import dari sidekick ke text !

Beberapa bentuk perintah 'U' :
· U F000:E05B      (enter)

4. E (enter)
 Berfungsi untuk mengisi atau mengubah data dalam memori.
 Contoh :
 A:\>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.
 5. F (Fill)
 Berfungsi untuk mengisi lokasi memori. Perbedaan dengan perintah 'E (Enter)', yang menawarkan modifikasi memori secara satu alamt demi satu alamat, sedang 'F (Fill" untuk mengubah isi alamat memori dalam jumlah besar, sesuai dengan rentang (range) yang dikehendaki.
 Contoh :
 A:\>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)

  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').

6. C (Compare)
 Berfungsi untuk membandingkan isi sebuah blok memori dengan isi blok memori lainnya.
 Format perintah :  C alamat1  panjang  alamat2
 Contoh :
 A:\>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.

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 :
 A:\>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"..

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 :
 A:\>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.


INSTRUKSI-INSTRUKSI MIKROPROSESOR
Untuk dapat mempergunakan serta memanfaatkan sebuah mikroprosesor, kita harus mengenal terlebih dahulu instruksi-instruksi yang bisa dijalankan oleh mikroprosesor yang bersangkutan. Karena pada hakekatnya, seluruh kemampuan yang ada pada mikroprosesor terletak pada kecanggihan perintah-perintah yang terdapat didalamnya. Tanpa adanya instruksi-instruksi yang membentuk sebuah program, mikroprosesor tidak lebih hanya merupakan serpihan tanpa guna.
Setiap mikroprosesor mempunyai perbendaharaan instruksi sendiri-sendiri, yang disebut dengan 'Set Instruksi' atau 'Instruction Set'.

Operasi, Operator dan Operand
Pada dasarnya mikroprosesor mampu melakukan beberapa jenis operasi, antara lain  operasi perhitungan (arithmetic), operasi logika (logical operation), operasi transfer data (data transfer operation), manipulasi string serta kendali prosesor.Masing-masing jenis instruksi tersebut adalah sebagai berikut :
a. Perhitungan
   ADD (penjumlahan), SUB (pengurangan), MUL (perkalian), DIV (pembagian)
b. Logika
   AND (logika DAN), OR (logika OR), XOR (logika Exclusive OR)
c. Transfer Data
   MOV (pindahkan/salin), IN (Input), OUT (Output), dan sebagainya.
d. Transfer Kendali
   JMP (loncat), CALL (panggil), RET (kembali), INT (interupsi), dsb
e. Manipulasi String
   MOVS (pindahkan/salin string), CMPS (bandingkan string), LODS (muatkan byte/word ke register AX), dan sebagainya.
f. Kendali Prosesor
   CLC (hilangkan bawaan/carry), CLI (hilangkan interupsi), dan sebagainya.

Pada instruksi-instruksi komputeri, operator diterapkan sebagai Operation-Code (Op-Code), sedangkan bilangan disebut Operand (adalah obyek dari suatu operasi).

Operasi Transfer Data
1. Pemindahan data dari data register ke register
 Format : MOV register, register
 Contoh :
 -a 0100  (enter)
 xxxx : 0100   mov AX,DX  (enter)
 xxxx : 0102                                         (enter)

2. Pemindahan data dari memori ke register
 Format : MOV register, memori
 Contoh :
 -a 0100  (enter)
 xxxx : 0100   mov BX,[0200]             (enter)
 xxxx : 0104                                         (enter)

3. Memindahkan data langsung ke dalam register
 Format : MOV register, bilangan
 Contoh :
 -a 0100  (enter)
 xxxx : 0100   mov  AX,1111              (enter)
 xxxx : 0103   mov  BX,2222              (enter)
 xxxx : 0106   mov  CX,3333              (enter)
 xxxx : 0109   mov  DX,4444              (enter)
 xxxx : 010C                            (enter)

 -a 0100
 xxxx : 0100   mov AH,FFFF              (enter)
 xxxx : 010C                            (enter)
 Apa yang terjadi ? Beri alasan !

4. Memindahkan data dari register ke memori
 Format : MOV memori, register
 Contoh :
 -a 0100
 xxxx : 0100   mov [0200],AX             (enter)
 xxxx : 0103                             (enter)

5. Pertukaran data antar register
 Format : XCHG register, register
 Contoh :
 -a 0100
 xxxx : 0100   xchg AX,BX (enter)
 xxxx : 0102                             (enter)

Operasi Aritmatik
1. Menjumlahkan dua bilangan dengan perintah ADD
 Format : ADD register,register
2. Mengurangkan dua bilangan dengan perintah SUB
 Format : SUB register,register
3. Perkalian dua bilangan dengan perintah MUL
 Format : MUL register
4. Membagi dua bilangan dengan perintah DIV
 Format : DIV register

Operasi Logika
1. Instruksi logika AND
 Format : AND register,register
2. Instruksi logika OR
 Format : OR register,register
3. Instruksi logika XOR
 Format : XOR register,register


READ MORE - DEBUG

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS