Anda di halaman 1dari 27

Pemrograman Assembly

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.
Materi
• Sistem bilangan
• Register
• Mode pengalamatan data
• Operasi perpindahan data
• Operasi aritmatika dan logika
• Instruksi kendali
• Tipe data
• Prosedure dan Fungsi.
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.
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
Konversi Bilangan
• Heksadesimal -> Desimal
– 7D16 = (7 * 161) + (13 * 160)
= 11216 + 1316
= 12516
Konversi Bilangan
• Desimal -> Biner
• Desimal -> Oktal
• Desimal -> Heksadesimal
• Biner -> Oktal
• Biner -> Heksadesimal
• Oktal -> Biner
• Oktal -> Heksadesimal
• Heksadesimal -> Biner
• Heksadesimal -> Oktal
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
Register
EIP Instruction
IP Pointer
EFLAGS Flag
FLAGS
Code
CS Segment
Data Segment
DS
Extra
ES Segment
Stack
SS Segment

FS
GS
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.
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)
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.
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.
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.
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).
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
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.
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
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
Mode Pengalamatan Data
7. Base Plus Index Addressing
8. Base Relative Plus Index Addressing

Bentuk Umum: Mov tjn,sbr


Mode Pengalamatan Data
1. Register addressing
sintaks: mov reg1,reg2
contoh: mov AX,BX
mov SI,DI

2. Immediate addressing
sintaks: mov reg,data
contoh: mov AL,2Ah
mov CH,’A’
Mode Pengalamatan Data
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
3. Direct addressing
sintaks: mov reg,[alamat]
mov [alamat],reg

contoh: mov DL,[0100h]


mov [0200],CX
Mode Pengalamatan Data
4. Register Indirect addressing
sintaks: mov reg,[reg]
mov [reg],reg
mov [reg],[reg]

contoh: mov EAX,[BX]


mov [CX],AX
Mode Pengalamatan Data
5. Register Relative Addressing
sintaks: 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],CH
mov [DI+40h],DL
Mode Pengalamatan Data
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
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

Anda mungkin juga menyukai