Mata Kuliah : Bahasa Rakitan Materi ke ke-4 4
Program Bahasa Rakitan dengan DEBUG.COM
Perintah dan Fungsi dalam DEBUG.COM y
DEBUG, menjalankan program DEBUG : A> DEBUG nama file . COM
y
Q (Quit), (Quit) keluar k l d darii program DEBUG : -Q
y
H (Hexa), menjumlahkan dan mengurangkan dua bilangan Heksadesimal
- H 2204 02012 4216 01F2
Hasil pengurangan Hasil penjumlahan 2
Perintah dan Fungsi dalam DEBUG COM (cont.) DEBUG.COM ( t) y
R (Register), (Register) mengetahui isi masing-masing masing masing register -R AX=0000 DS=0FD8
y
BX=0000 ES=0FD8
CX=0000 DX=0000 … SS=0FD8 CS=0FD8…
A (Assembler), perintah untuk masuk ke tempat penulisan program assembler. -A -A100 0AB4 0100 0AB4:0100 0AB4 0100 0AB4:0100
3
Perintah dan Fungsi dalam DEBUG COM (cont.) DEBUG.COM ( ) y
N (Name), (Name) perintah untuk membuat nama program yang telah dibuat. Format : N [drive]:[nama program] -N B:COBA.COM
y
RCX (Register (R CX), CX) perintah h untukk mengetahui h dan memperbaiki isi register cx sebagai tempat penampungan panjang program yang sedang aktif. -RCX CX 0000 :0008 0008 4
Perintah dan Fungsi dalam DEBUG COM (cont.) DEBUG.COM ( ) y
RIP (Register Re ister IP), IP) perintah erintah yang an memberi-tahukan memberi tah kan komputer untuk mulai memroses program dari titik tertentu. Pada program debug selalu dimulai dari 0100 h. - RIP IP 0100 : 0100
y
W (Write), ), pperintah yyangg digunakan g untuk menulis program ke media penyimpanan. -W W i i 0008 bbytes Writing 5
Perintah dan Fungsi dalam DEBUG COM (cont.) DEBUG.COM ( ) y
G (GO), (GO) perintah yang digunakan untuk menjalan menjalan-kan kan
y
U (Unassemble), perintah untuk menampilkan deretan
program. -G A Program terminated normally
program yang sedang aktif sepanjang 21 H.
Format :
U [[tempat p awal unassemble]] L [p [panjang j g
program] -U 100 L 0D
Ctrl+Print Screen, cetak ke printer 6
Perintah dan Fungsi dalam DEBUG COM (cont.) DEBUG.COM ( ) y
T (Trace), perintah untuk memroses sebaris program saja. -A100 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 P Program terminated i d normally ll
-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
7
SET INSTRUKSI 1. 2. 3 3. 4. 5. 6 6.
Intstruksi Transfer Data Instruksi Aritmetika I Instruksi k i LLooping i Instruksi Jump Operasi Stack Operasi Logika
8
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 p 2 : Register g AL Operand 9
Instruksi Transfer Data (Cont.) y
MOV AH,02 ; memasukkan bilangan g 02 ke register AH Operand Ope a 1 : Register eg ste AH Operand 2 : Bilangan 02
10
INSTRUKSI ARITMATIKA y
INC (Increment), operasi pertambahan dengan satu Format : INC [Register/Variabel]
A =A + 1 y
DEC (Decrement), operasi pengurangan dengan satu Format : DEC [Variabel/Register] A =A – 1
11
Instruksi Aritmetika (Cont.) y
O Operasi iP Pertambahan t b h Selain S l i Satu S t Format : ADD [operand-1, operand-2] ; menjumlahkan isi operand 1 dengan operand 2 dan hasil disimpan di operand 1 Operand p 1 : Register, g Variabel Operand 2 : Register,Variabel, Bilangan
AH ………….. 10 AL ………….. 5 + AH …………. 15 12
Instruksi Aritmatika (Cont.) y
Operasi Pengurangan Selain Satu Format : SUB [OPERAND 1, OPERAND 2] mengurangkan isi operand 1 dengan operand 2 dan hasil disimpan p di operand p 1 Operand 1 : Register,Variabel Operand 2 : Register,Variabel, Bilangan
AH …….. AL …….. AH
15 10 5
-
13
Instruksi Aritmatika (Cont.) y
Operasi p Perkalian 8 Bit Format : MUL [Register] mengalikan isi register BL dengan isi register AL dan h l disimpan hasil d di d register AX MUL BL BL ………
04
AL ……… AX ……...
08 x 32
14
Instruksi Aritmatika (Cont.) y
Operasi Perkalian 16 Bit Format : MUL [REGISTER] ; mengalikan g isi register g BX dengan g isi register g AX, hasil disimpan di register AX dan DX MUL BX BX …………… 12900 AX …………… 10000 x DX AX … 129000000 = 7B0 6240 DX
AX
15
Instruksi Aritmatika (Cont.) y
Operasi p Pembagian g 8 Bit Format : DIV [Register] membagi isi register AX dengan isi register BL dan hasil disimpan di register AL dan sisa di register AH DIV BL
hasil
sisa AL AH
BL
AX
16
Instruksi Aritmatika (Cont.) y
Operasi Pembagian 16 Bit Format : DIV [Register] membagi isi register DX :AX dengan isi register BX dan hasil pembagian dimasukkan dalam register DX sedangkan sisa hasil pembagian dimasukkan dalam register g AX DIV BX
hasil BX
sisa DX AX DX:AX
17
INSTRUKSI LOOPING y
LOOP, instruksi Looping Format : LOOP [lokasi memori]
Mengulang instrksi alamat memory * sebanyak 5 kali. Setiap kali pengulangan processor akan mengurangi isi register CX sampai 0. Kemudian proses akan berlanjut ke instruksi di bawah loop. CX = 5 …… …… LOOP * ……..
18
Instruksi Looping p g (Cont.) ( ) y
JMP, instruksi lompatan tak bersyarat Format : JMP[lokasi memori] Melakukan lompatan tanpa syarat ke lokasi memori segment : 0103 JMP 0103
y
CMP, instruksi lompatan bersyarat CMP Format : CMP [operand-1],[operand-2] Operand-1 : variabel variabel, register Operand-2 : variabel, register, lokasi memori, bilangan
19
Instruksi Looping (Cont.) Jenis-jenis Lompatan Bersyarat : ◦ JE (Jump If Equal)
¾ JNS (Jump On Not Sign)
¾ JNE (Jump If Not Equal)
¾ JC (Jump On Carry)
¾ JG (J (Jump p If Greater Than))
¾ JNC (Jump On Not Carry)
¾ JNG (Jump If Not Greater Than)
¾ JCXZ (Jump If CX=0)
¾ JNGE (Jump If Not Greater or Equal)
¾ JB (Jump If Below)
¾ JE (Jump If Less Than)
¾ JBE (Jump If Below or Equal)
¾ JLE (Jump If Less or Equal)
¾ JNBE (Jump If Not Below or Equal)
¾ JNL (Jump If Not Less Than)
¾ JZ (Jump On Zero)
¾ JNLE (Jump If Not Less or Equal)
¾ JNZ (Jump On Not Zero
¾ JA (Jump if Above)
¾ JS (Jump On Sign)
¾ JNA (Jump If Not Above or Equal) ¾ JNAE (Jump If Not Above or Equal)
20
OPERASI STACK – Operasi yang digunakan untuk menyimpan sementara suatu nilai pada alamat offset terakhir pada suatu segment – Stack bersifat LIFO (Last In First Out) – Beberapa contoh perintah yang digunakan dalam operasi stack :
• PUSH [register 16 bit]
Digunakan untuk menyimnpan nilai di register 16 bit ke dalam stack
• POP [[register g 16 bit]]
Digunakan untuk mengambil kembali stack,kemudian disimpan di register 16 bit
• PUSHF
Digunakan gu a a uuntuk tu menyimpan e y pa nilai a flag ag register eg ste kee dalam a a stac stack
• POPF
Digunakan untuk mengambil isi stack, kemudian disimpan di dalam flag register F.
21
OPERASI LOGIKA
Beberapa Operasi Logika yang digunakan : 1 AND 1. AND OR XOR 2. OR 0 0 0 0 0 3 XOR 3. 0 1 0 1 1 1
0
0
1
1
1
1
1
1
0
22