pemrograman assembler 1

27
Pemrograman Assembly

Upload: asdesaa

Post on 19-Jun-2015

279 views

Category:

Documents


11 download

DESCRIPTION

Kuliah 1

TRANSCRIPT

Page 1: Pemrograman Assembler 1

Pemrograman Assembly

Page 2: Pemrograman Assembler 1

Buku Acuan

• S’to. Pemrograman Bahasa Assembly edisi online versi 1.0.

• Brey, Barry B. Mikroprosesor Intel 8086/8088, 80186/80188, 80286, 80386, 80486, Pentium Pro, dan Pentium II : Arsitektur, Pemrograman, Antarmuka. Jakarta : Erlangga.

Page 3: Pemrograman Assembler 1

Materi

• Sistem bilangan • Register• Mode pengalamatan data• Operasi perpindahan data• Operasi aritmatika dan logika• Instruksi kendali• Tipe data• Prosedure dan Fungsi.

Page 4: Pemrograman Assembler 1

Sistem Bilangan

• Bilangan Biner– Digit simbol : 0,1

• Bilangan Desimal – Digit simbol : 0,1,2,3,4,5,6,7,8,9

• Bilangan Oktal – Digit simbol : 0,1,2,3,4,5,6,7

• Bilangan Heksadesimal– Digit simbol : 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F.

Page 5: Pemrograman Assembler 1

Konversi Bilangan

• Biner -> Desimal– 10112 = (1 * 23) + (0 * 22) + (1 * 21) + (1 * 20)

= (8)10 + (0)10 + (2)10 + (1)10

= 1110

• Oktal -> Desimal– 268 = (2 * 81) + (6 * 80)

= (16)10 + (6)10

= 22

Page 6: Pemrograman Assembler 1

Konversi Bilangan

• Heksadesimal -> Desimal– 7D16 = (7 * 161) + (13 * 160)

= 11216 + 1316

= 12516

Page 7: Pemrograman Assembler 1

Konversi Bilangan

• Desimal -> Biner• Desimal -> Oktal• Desimal -> Heksadesimal• Biner -> Oktal• Biner -> Heksadesimal• Oktal -> Biner• Oktal -> Heksadesimal • Heksadesimal -> Biner• Heksadesimal -> Oktal

Page 8: Pemrograman Assembler 1

Register

EAX AH AL Akumulator

EBX BH BL Base Index

ECX CH CL Count

EDX DH DL Data

ESP SP Stack Pointer

EBP BP Base Pointer

EDI DI Destination Index

ESI SI Source Index

Page 9: Pemrograman Assembler 1

Register

EIP IP Instruction Pointer

EFLAGS FLAGS Flag

CS Code Segment

DS Data Segment

ES Extra Segment

SS Stack Segment

FS

GS

Page 10: Pemrograman Assembler 1

Register

1. Register serbaguna :– Register A (accumulator): digunakan utk operasi

aritmatika dan instruksi logika.– Register B: digunakan bersama register a untuk

operasi aritmatika dan dpt digunakan utk menyimpan alamat offset sebuah lokasi memori.

– Register C: digunakan untuk perulangan, pergeseran dan dpt digunakan untuk menyimpan alamat offset data memori.

– Register D: digunakan utk menyimpan hasil perkalian dan menyimpan hasil dari pembagian.

Page 11: Pemrograman Assembler 1

Register

– Register BP: sbg penunjuk lokasi memori yg digunakan utk mentransfer data memori.

– Register DI: sering berfungsi utk mengalamati data tujuan string pd beberapa instruksi string dan berfungsi sbg register serbaguna 32-bit (EDI) atau 16-bit (DI)

– Register SI: sering berfungsi utk mengalamati data sumber string pd beberapa instruksi string dan berfungsi sbg register serbaguna 32-bit (EDI) atau 16-bit (DI)

Page 12: Pemrograman Assembler 1

Register

2. Special Function Register– IP: digunakan sbg penunjuk instruksi

berikutnya yang akan dijalankan yang terdapat pada segmen kode.

– SP: digunakan sbg penunjuk tumpukan.– FLAGS: digunakan untuk menunjukkan

kondisi mikroprosesor dan mengotrol operasinya.

Page 13: Pemrograman Assembler 1

Register

3. Segment Register :– CS (code segment): bag memori yg memuat

kode (program dan prosedur) yg digunakan oleh mikroprosesor.

– DS (data segment): bag memori yg berisi sebagian besar data yg digunakan oleh program.

– ES (extra segment): segmen data tambahan yg digunakan oleh beberapa instruksi string untuk menyimpan data tujuan.

Page 14: Pemrograman Assembler 1

Bit Flags

– SS (stack segment): segmen ini mendefinisikan area memori yg digunakan utk stack.

– Segmen FS & GS: register segmen tambahan yg tersedia pada mikroprosesor 80386, 80486, pentium, pentium pro, yg memungkinkan dua segmen memori dua segmen memori tambahan diakses oleh program yg dijalankan.

Page 15: Pemrograman Assembler 1

Bit Flags

• C (carry): utk menyimpan carry setelah penjumlahan atau borrow setelah pengurangan.

• Paritas: bernilai 0 utk paritas ganjil dan 1 utk paritas genap.

• A (auxiliary): utk menyimpan carry tambahan setelah penjumlahan atau borrow setelah pengurangan.

• Z (zero): utk menunjukkan hasil operasi aritmatika dan logika adalah nol. (Jika 1 -> operasi menghasilkan nol, dan sebaliknya).

Page 16: Pemrograman Assembler 1

Bit Flags

• S (sign): sbg penunjuk bilangan bertanda dan tidak bertanda.

• T (trap): flag ini memungkinkan trapping melalui suatu chip debugging.

• I (interrupt): flag ini mengendalikan operasi dari pin input INTR.

• D (direction): flag arah ini memilih salah sati dari mode penambahan

Page 17: Pemrograman Assembler 1

Bit Flags

• O (overflow): flag ini digunakan utk menunjukkan hasil operasi melebihi kapasitas penampung.

• IOPL (I/O privilege level): digunakan dlm operasi mode terlindungi memilih tingkatan operasi istimewa utk piranti I/O

• NT (Nested task): menandakan bahwa task yg sedang dilaksanakan bersarang dalam task yg lain.

• RF (Resume): flag ini digunakan bersama debugging utk mengotrol kelanjutan eksekusi setelah instruksi berikutnya.

Page 18: Pemrograman Assembler 1

Bit Flags

• VM (virtual mode): bit ini memilih operasi mode virtual dalam suatu sistem mode terlindungi.

• AC (alignment check): bit ini aktif jika suatu word atau doubleword dialamatkan pada batas suatu nonworld atau nondoubleword.

• VIF (virtual interrupt): salinan bit flag interrupt yg digunakan utk proc pentium dan pentium pro.

• VIP (virtual interrupt pending): menyediakan informasi mengenai interrupt mode utk pentium dan pentium pro.

• ID (identification): menunjukkan bahwa processor mendukung instruksi CPUID

Page 19: Pemrograman Assembler 1

Mode Pengalamatan Data

1. Register Addressing

2. Immediate Addressing

3. Direct Addressing

4. Direct Addressing with Displacement

5. Register Indirect Addressing

6. Register Relative Addressing

Page 20: Pemrograman Assembler 1

Mode Pengalamatan Data

7. Base Plus Index Addressing

8. Base Relative Plus Index Addressing

Bentuk Umum: Mov tjn,sbr

Page 21: Pemrograman Assembler 1

1. Register addressingsintaks: mov reg1,reg2contoh: mov AX,BX

mov SI,DI

2. Immediate addressingsintaks: mov reg,datacontoh: mov AL,2Ah

mov CH,’A’

Mode Pengalamatan Data

Page 22: Pemrograman Assembler 1

3. Direct addressing

sintaks: mov reg_A,[alamat]

mov [alamat],reg_A

(reg_A : accumulator)

contoh: mov AL,[0100h]

mov [0200],AX

Mode Pengalamatan Data

Page 23: Pemrograman Assembler 1

3. Direct addressing

sintaks: mov reg,[alamat]

mov [alamat],reg

contoh: mov DL,[0100h]

mov [0200],CX

Mode Pengalamatan Data

Page 24: Pemrograman Assembler 1

4. Register Indirect addressing

sintaks: mov reg,[reg]

mov [reg],reg

mov [reg],[reg]

contoh: mov EAX,[BX]

mov [CX],AX

Mode Pengalamatan Data

Page 25: Pemrograman Assembler 1

5. Register Relative Addressingsintaks: mov reg,[base+disp]

mov reg,[index+disp] mov [base+disp],reg mov [index+disp],reg

contoh: mov AX,[BX+10h]mov CX,[SI+20h]mov [BP+20h],CHmov [DI+40h],DL

Mode Pengalamatan Data

Page 26: Pemrograman Assembler 1

6. Register Plus Index Addressing

sintaks: mov reg,[base+index]

mov [base+index],reg

contoh: mov DX,[BX+SI]

mov [BP+DI],AX

Mode Pengalamatan Data

Page 27: Pemrograman Assembler 1

7. Register Relative Plus Index Addressing

sintaks:

mov reg,[base+index+disp]

mov [base+index+disp],reg

contoh:

mov DX,[BX+SI+10h]

mov [BP+DI+20h],AX

Mode Pengalamatan Data