SlideShare uma empresa Scribd logo
1 de 58
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Pertemuan Ke 1 (Satu)
Tujuan Instruksional Khusus Mengerti dan Memahami Assembler dan Sistem bilangan
Pokok Bahasan Pengenalan Bahasa Rakitan dan Sistem Bilangan
Sub Pokok Bahasan
Pengenalan Bahasa Rakitan
Sistem bilangan biner
- Sistem bilangan oktal
- Sistem bilangan desimal
- Sistem bilangan hexadesimal
Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly, Hartono
Partoharsojo
2. Pemrograman dengan Bahasa Assembly,
Susanto
3. Microprocessor Programmer’s, referensi Intel Co
Apa Itu Bahasa Rakitan (Assembler) ?
Bahasa Rakitan termasuk ke dalam bahasa tingkat rendah dan merupakan bahasa dasar
komputer. Bahasa ini memerlukan logika yang cukup rumit di samping instruksinya yang jauh
berbeda dengan bahasa pemrograman lainnya. Program yang dihasilkan memiliki kecepatan
yang paling baik. Kelebihan dari bahasa rakitan adalah :
1. Memiliki fasilitas fungsi dan makro (ciri khas bahasa pemrograman yang menyebabkan
pemrograman menjadi lebih mudah).
2. Program dapat dibuat secara modular (dipecah dalam modul-modul kecil dan dapat
diintegrasikan kembali).
3. Ukuran program lebih kecil, sehingga lebih menghemat media penyimpan.
4. Lebih dekat ke hardware sehingga seluruh kemampuan komputer dapat dimanfaatkan
secara maksimal.
Apa saja yang diperlukan untuk belajar Bahasa Rakitan atau Assembler ?
Untuk mempelajarai bahasa rakitan / assembler diperlukan :
1. Sistem bilangan antara lain Biner, Oktal, Desimal dan Hexadesimal
2. Pengenalan Microprocessor
3. Sistem Memori dan Pengalamatan Memori
4. Interupt / Interupsi
5. Register
6. Instruksi Assembly atau Mnemonic
7. Mode pengalamatan data
8. Operasi-operasi pada assembler
9. Pembuatan program
Sistem Bilangan
Untuk mempelajari bahasa rakitan kita harus mengenal beberapa sistem bilangan yang sangat
berguna dalam pengaksesan port ataupun menghafal kode ASCII yang penting. Bilangan
Uky Yudatama, S.Si, M.Kom
1
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
desimal sering kita gunakan sehari-hari untuk segala keperluan, sedangkan bilangan lainnya
sangat dibutuhkan dalam pemrograman bahasa rakitan atau assembler, karena bahasa ini
dipakai untuk menjalankan sistem mikroprosessor. Setiap mikroprosesor memiliki bahasa rakitan
sendiri. Adapun sistem bilangan yang dipelajari adalah sebagai berikut :
1. Bilangan Biner
Bilangan ini hanya mengenal angka 0 dan 1 sehingga bilangan ini berdasar 2. Cara
mengkonversi ke bilangan desimal adalah dengan mengalikan dua dengan pangkat N
(suku ke-N) seperti bilangan desimal mengalikan 10 dengan pangkat N
Contoh:
1110 (biner) dikonversi ke desimal menjadi :
(1 * 23
) + (1 * 22
) + (1 * 21
) + (0 * 20) =
8 + 4 + 2 + 0 = 14 (desimal)
- Operasi tambah pada sistem biner :
0 + 0 = 00
1 + 0 = 01
0 + 1 = 01
1 + 1 = 11
Contoh :
1110001 + 1011000 = 11001001 (biner)
desimalnya : 113 + 89 = 201
2. Bilangan Oktal
Bilangan Oktal merupkan bilangan berdasar 8. Jadi bilangan ini hanya terdiri dari angka 0
hingga 7.
Konversi bilangan octal ke desimal mempunyai cara yang sama dengan bilangan biner,
hanya memakai bilangan dasar 8.
Contoh:
355 bilangan octal ke desimal
355 oktal = (3 * 82
) + (5 * 81
) + (5 * 80
)
= 192 + 40 + 5
= 237 desimal
3. Bilangan Desimal
Bilangan ini sudah tidak asing lagi, karena digunakan dalam kehidupan sehari-hari.
Sistem bilangan ini terdiri dari angka 0 sampai 9 dengan menggunakan dasar 10.
Uky Yudatama, S.Si, M.Kom
2
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
4. Bilangan Hexadesimal
Bilangan ini mutlak harus dikuasai, karena dalam bahasa rakitan kita sering menemukan
bilangan ini. Kode ASCII ditulis dalam bilangan hexadesimal yang mewakili huruf, angka,
tanda baca dan karakter unik lainnya sebanyak 255 buah.
Bilangan hexadesimal merupakan bilangan dasar 16 terdiri dari : 0123456789ABCDEF
Cara mengkonversi ke bilangan desimal sama dengan biner dan octal
Contoh:
3A hexa = (3 * 161
) + (10 * 160
)
= 48 + 10
= 58 desimal
• Bahasa Rakitan atau Assembler merupakan bahasa tingkat rendah / low level
language digunakan dalam computer untuk Sistem Operasi, Compiler, penanganan
file dan operasi-operasi mikroprosesor.
• Setiap digit bilangan biner disebut satu bit. Terdiri dari 0 dan 1
• Bilangan Octal merupakan bilangan dasar 8 terdiri dari 0 s/d 7
• Bilangan Desimal merupakan bilangan dasar 10 yang sudah sering dipakai.
• Bilangan Hexadesimal merupakan bilangan dasar 16 terdiri dari 0 – 9ABCDEF dan
dipakai dalam kode ASCII dank ode-kode lainnya.
TUGAS
1. Jelaskan mengenai bahasa rakitan?
2. Apa saja yang diperlukan untuk mempelajari bahasa rakitan/assembler?
3. Buatlah beberapa contoh bilangan dan konversikan sendiri bilangan tersebut menjadi
beberapa sistem bilangan.
Uky Yudatama, S.Si, M.Kom
3
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Pertemuan Ke 2 (Dua)
Tujuan Instruksional Khusus Mengerti dan Memahami konsep memori pada PC
Pokok Bahasan Memori
Sub Pokok Bahasan
- Pengertian Memori PC
- Pembagian Memori PC
- Pengalamatan Memori PC
Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly,
Hartono Partoharsojo
2. Pemrograman dengan Bahasa Assembly,
Susanto
3. Microprocessor Programmer’s, referensi Intel Co
Memori
Pengertian Memori
Merupakan bagian terpenting dalam komputer untuk menyimpan data dan program.
Dalam microprosesor 8088 terdapat 16 saluran alamat (address) dan 8 saluran data secara
multiplex. Saluran alamat lainnya yang tersedia ada 4, khusus untuk menunjuk segmen memori,
dimana tiap segment menjangkau memori sebesar 64 kliobyte. Sehingga dari 16 saluran alamat
dapat menggarap isi memori hingga 1 megabyte dan bekerja dengan data 16 bit.
Ukuran memori 1 kilobyte = 1024 byte, 1 megabyte = 1024 x 1024 byte = 1.048.576 byte. Maka
alamat memori dari 0 sampai 1 megabyte memerlukan penulisan dengan 5 digit angka
hexadesimal dari 00000H sampai FFFFFH.
Sebagai contoh : Memori di PC XT 640 kilobyte terdiri dari alamat 00600H sampai alamat
A0000H.RAM dan ROM merupakan komponen IC yang dapat menyimpan data dan program
yang dapat dialamati terdiri dari jalur alamat (address) dan jalur data. RAM dapat menulis dan
membaca data, sedangkan ROM hanya membaca saja.
Kombinasi saluran/jalur data berupa 8 bit atau 16 bit yang dinyatakan dalam bilangan
hexadesimal. Sedangkan jalur alamat (address) memiliki pola yang sama dengan jalur
data memakai bilangan hexadesimal. Sekarang telah berkembang memori dengan
jumlah saluran 32 bit dan 64 bit.
Tempat menyimpan data ukuran 1 byte di RAM dan ROM harus diberi nomor urut agar mudah
diidentifikasi berupa alamat memori (memori address). Jika ada data berupa 5AH disalurkan
melalui jalur data ke memori dengan alamat memori 0F2B4H, maka berarti di lokasi memori
nomor 0F2B4H terdapat data 5AH.
Memori dengan jalur alamat yang banyak akan memiliki kapasitas simpan yang dinyatakan
dalam byte, kilobyte, megabyte atau gigabyte.
Uky Yudatama, S.Si, M.Kom
4
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Memori berkapasitas 64 KB berarti memiliki kemampuan merekam 64 x 1024 byte data. Suatu
media penyimpan berupa Hard disk 10 M berarti memiliki kapasitas rekam 10 x 1024 x 1024
byte.
Istilah dalam memori yang sangat lazim dan sering ditemui dalam setiap pemrograman bahasa
rakitan adalah :
 Bit adalah singkatan dari binary digit
 Byte adalah 8 bit
 Word adalah 2 byte
Pembagian memori
Diantara register dalam CPU untuk mencatat alamat memori yang dipergunakan terdapat
segment register digabung dengan offset register yang mengatur pembagian memori. Offset
register dapat berupa register lain yang bukan segment register dengan aturan pasangan :
SSSS : OOOO
S = digit hexadesimal pada segment register O
O = digit hexadesimal pada offset register
Satu segment memori berukuran 64 kilobyte terbagi atas beberapa segment offset yang dapat
dialamati oleh offset register. Sedangkan memori (RAM & ROM) pada PC dapat terdiri dari
beberapa/banyak segment memori tergantung kapasitas memori pada PC tersebut.
Pengalamatan Memori
Merupakan suatu cara untuk mencatat atau menunjuk alamat memori sesuai aturan pasangan
SSSS : OOOO artinya penulisan alamat memori menuruti aturan bahwa bobot digit terendah
pada Segment Register adalah 16 pangkat 1 dan bobot tertinggi 16 pangkat 4. Sedangkan pada
Offset Register bobot digit terendah adalah 16 pangkat 0 dan bobot digit tertinggi 16 pangkat 3.
Contoh:
Misalkan: SSSS dipilih 1234H
OOOO dipilih DCBAH
Maka pengalamatan memori dapat dinyatakan 1234:DCBA.
Angka alamat absolutnya dapat dihitung dari :
12340
0DCBA +
1FFFA
Cara penulisan alamat memori 1234:DCBA memberi alamat absolute 1FFFAH.
Penunjukan alamat memori oleh mikroprosesor dilakukan oleh register BX.
Uky Yudatama, S.Si, M.Kom
5
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Jika kita ingin menaruh data dengan pencatatan alamat memori memakai segment register BX
dan offset register DS. Pencatatan alamat dinyatakan dengan rumus DS:BX
Contoh: 0100 : 0234 artinya DS mencatat 0100H, BX mencatat 0234H
Alamat memori 0000 : 0234 dapat dinyatakan dengan :
DS:BX+DI yaitu DS berisi 0000, BX diisi 0200H dan DI diisi 0034H
Penulisan BX+DI disebut offset address terhadap segment address.
• Memori pada dasarnya dapat menyimpan data dan program yang bersifat
sementara..
• Memori memiliki jalur data dan jalur alamat (address) agar dapat diidentifikasi oleh
microprosessor pada saat sedang membaca data dan program.
• Memori memiliki kapasitas dalam satuan byte, kilobyte, megabyte, gigabyte dll.
• Pengalamatan memori diatur berdasarkan pembagian segment dan offset.
• Satu byte data dimemori memiliki satu alamat offset.
• Penunjukkan alamat memori dilakukan oleh CPU dengan memanfaatkan register
BX.
• Pencatatan alamat memori dapat ditulis dengan DS:BX atau DS:BX+DI
TUGAS
1. Jelaskan pengertian memori?
2. Jelaskan perbedaan RAM dan ROM?
3. Bagaimana cara melakukan pembagian memori?
4. Jelaskan cara pengalamatan memori untuk mendapatkan alamat absolute?
5. Apa saja yang diperlukan untuk mempelajari bahasa rakitan/assembler?
6. Buatlah beberapa contoh bilangan dan konversikan sendiri bilangan tersebut menjadi
beberapa sistem bilangan.
Uky Yudatama, S.Si, M.Kom
6
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Pertemuan Ke 3 (Tiga)
Tujuan Instruksional Khusus Mengerti dan Memahami sistem bilangan
Pokok Bahasan Interrupt dan Register
Sub Pokok Bahasan
- Pengertian Interrupt
- Pengertian Register
- Jenis-jenis Register
Daftar Pustaka
1. Tuntunan Praktis Pemrograman Assembly,
Hartono Partoharsojo
2. Pemrograman dengan Bahasa Assembly,
Susanto
3. Microprocessor Programmer’s, referensi Intel Co
Interrupt dan Register
Pengertian Interrupt
Interrupt atau interupsi adalah proses dalam komputer untuk meminta dilayani oleh
mikroprosesor sesuai dengan tingkat prioritasnya yang telah diatur sedemikian rupa oleh
sistem hardware computer.
CPU banyak melaksanakan routin untuk melakukan pelayanan pemrosesan ataupun
koordinasi kepada IC penunjang atau chipset dan peripherals pada saat diperlukan. Sehingga
CPU dapat melakukan operasi dengan 2 cara yaitu :
1. Operasi dengan polling
2. Opreasi dengan interrupt
Operasi dengan polling berarti CPU selalu terus menerus menanyakan/ memantau ke tiap-tiap
komponen penunjang satu persatu meskipun komponen itu sedang tidak memerlukan
pelayanan.
Sedangkan operasi interrupt atau interupsi dilakukan oleh tiap-tiap komponen kepada CPU
bilamana memerlukan pelayanan pemrosesan, sehingga CPU tidak terus-menerus
menanyakan /memantau komponen itu. Setiap interupsi yang datang di kontrol oleh interrupt
controller di luar CPU. Dalam keadaan CPU terkena interupsi, maka CPU untuk sesaat
menghentikan kegiatan pelayanan utama dan beralih melayani komponen yang
menginterupsinya. Setelah selesai dilayani CPU kembali melakukan pelayanan utamanya.
Cara interupsi sangat meningkatkan effisiensi operasi CPU dan melakukan tugasnya dengan
cepat.
Interupsi dapat dilakukan dengan cara hardware dan software, sehingga CPU dapat menerima
3 macam interupsi antara lain :
Uky Yudatama, S.Si, M.Kom
7
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
1. Interupsi software (instruksi INT nH n= bilangan 00H s/d FFH)
2. Non Maskable Interrupt (Interupsi hardware dimana interupsi ini mutlak tidak dapat
dicegah karena berasal dari sistem board atau IC.
3. Maskable Interrupt (berasal dari hardware melalui pin INTR) yang dapat ditutup atau
dicegah dengan instruksi CLI berasal dari interupsi perangkat lunak.
Interupsi software terdiri dari 256 dan diberi nomor 00H hingga FFH. Alamat awal masing-
masing program pelayanan terdiri dari 4 byte, 2 byte untuk Code Segment dan 2 byte untuk
Instruction Pointer.
Dalam pemrograman assembler kita dapat melakukan interupsi secara software dengan
perintah INT yang dapat dilihat dalam tabel interupsi.
Interrupt Software dalam PC terbagi dua yaitu :
1. Interrupt BIOS (Basic Input Output Sistem)
2. Interrupt DOS (Disk Operating Sistem)
Interrupt BIOS diwujudkan dalam bentuk interupsi software berjumlah 32 dan akses
pelayanannya tinggal memerintahkan dengan instruksi INT nH asal parameternya diwajibkan
telah terpenuhi dahulu. INT nH terdiri dari 00H sampai 1FH yang disusun berurutan dan diberi
servis number (nomor pelayanan) tersendiri.
Interrupt DOS merupakan interupsi dari software Sistem Operasi terdiri dari INT 20H untuk
kembali ke DOS dan INT 21H untuk operasi Input/Output.
Pengertian Register
Register tidak dapat dilepaskan dari mikroprosessor, sebab pada mikroprosessor terdapat
register yang berfungsi untuk menyimpan sementara hasil dari tahapan operasi arithmetika dan
logika pada mikroprosessor. Register dalam bahasa rakitan menggunakan real mode memory
yang sesuai dengan mikroprosessor Intel generasi 8088 s/d Pentium.
Register yang terdapat pada mikroprosessor Intel terdiri dari :
1. General purpose register (register serbaguna)
2. Pointer register (register pointer)
3. Index register (register indeks)
4. Segment register (register segment)
5. Flag register (register status).
Semua register di atas lebarnya 32 bit, kecuali register segment (CS, DS, ES, SS, FS dan GS)
hanya 16 bit. Register 32 bit dapat digunakan sebagai register 16 bit, kecuali register General
purpose register dapat dibagi menjadi 8 bit (AL,AH, BL, BH, CL, CH, DL dan DH) yang berasal
dari 16 bit (AX, BX, CX, DX). Register 32 bit diberi kode di depan register dengan E misalnya:
EAX, EBX, ECX dan EDX.
Macam-macam Jenis dan Fungsi Register
Berikut ini jenis dan fungsi dari masing-masing Register yaitu :
1. General Purpose Register (Register Serbaguna)
Uky Yudatama, S.Si, M.Kom
8
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Register untuk keperluan umum yang terdiri atas :
a. Register AX (Accumulator register) berfungsi sebagai tempat:
Sementara hasil suatu operasi arithmetika atau logika (AL, AH, AX dan EAX)
 Memasukkan nomor layanan interupsi,
untuk keperluan pemesanan sebuah layanan interupsi (register AH).
 Menyimpan bilangan yang dikalikan (reg
AL, AX, EAX) dan setengan bagian terkecil (LSB) dari hasil perkalian
(register DX-AX dan EDX-EAX).
 Menyimpan setengah bagian
terkecil(LSB) sebuah bilangan dibagi (DX-AX dan EDX-EAX) dan hasil bagi
(AL, AX, EAX).
b. Register BX (Base Register)
Base register adalah register untuk menyimpan alamat offset data yang terletak
di memori (BL, BH, BX dan EBX)
c. Register CX (Counter Register)
Counter register adalah register serbaguna yang berfungsi sebagai:
 Pencacah untuk operasi loop (CX dan
ECX)
 Pencacah untuk operasi shift dan rotate
(CL)
 Pencacah (counter) untuk operasi string
(CX)
d. Register DX (Data register)
Data register adalah register serbaguna yang berfungsi sebagai :
 Penyimpan hasil perkalian 16 bit (DX-AX) dan 32 bit (EDX-EAX).
 Penyimpan hasil pembagian (DX-AX dan EDX-EAX)
 Penyimpan data hexadesimal (kode ASCII) di reg DL untuk dicetak di layar
monitor.
2. Pointer Register
Register ini untuk menunjukkan alamat sebuah data di lokasi memori, dipakai saat
operasi perpindahan data (dari/ke memori), operasi stack (PUSH/POP) dan
penunjukkan alamat suatu instruksi. Berikut adalah macam-macam pointer
register: SP (Stack Pointer) dan ESP, BP (Base Pointer) dan IP (Instruction
Pointer).
3. Index Register
Sama dengan pointer register, sering digunakan untuk menunjukkan alamat
sebuah data di lokasi memori pada operasi string. Macam-macam register Index
adalah : SI (Source Index), DI (Destination Index).
4. Segment Register
Segment register membentuk alamat memori untuk data. Pada operasi real mode
suatu segment register akan berbeda dengan segment register pada operasi
protected mode. Yang termasuk ke dalam segment register antara lain :
 Code segment -> untuk menunjukkan alamt instruksi berikutnya.
 Data segment -> untuk menunjukkan alamat data pada transfer register
Uky Yudatama, S.Si, M.Kom
9
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
 Extra segment -> register tambahan untuk operasi string
 Stack segment -> dengan SP u/ menunjukkan stack dan memanggil suatu
prosedur (CALL) dan mengarah ke program utama (RET).
 FS dan GS register -> register tambahan u/ segmen memori yang besar.
5. Flag Register
Berfungsi untuk menunjukkan status (keadaan) sesaat dari mikroprosessor.
Bit-bit pada flag akan mengalami perubahan, tergantung proses yang baru saja
berlangsung. Adapun kode bit yaitu sebagai berikut :
 C (carry) -> 1=ada carry out 0= tdk ada carry out
 P (Parity) -> 1=paritas genap 0= paritas ganjil
 A (auxxiliary carry) -> 1=ada carry 0=tdk ada carry
 Z (zero) -> 1=hasilnya nol 0=hasilnya bukan nol
 S (sign) -> 1=hasilnya negatif 0=hasilnya positif
 T (trap) -> bila diset 1 dimungkinkan melakukan debugging.
 I (interrupt) -> 1= pin INTR enable 0=pin INTR disable
 D (direction) -> 1=cacahan turun 0=cacahan naik
 (Overflow) -> menunjukkan adanya kelebihan kapasitas atau tidak
 IOPL (input-output privalege level) -> untuk protected mode
 NT (nested task) -> indikasi dari penggabungan dengan operasi lain.
 RF (resume) -> untuk debugging
 VF (Virtual mode) -> untuk operasi virtual pada protected mode
 AC (alignment check) -> untuk data word dialamati ke memori
• Register merupakan tempat menyimpan data sementara yang berada dalam CPU.
• Register terdiri atas 5 bagian yaitu : General Purpose Register, Pointer Register, Index
Register, Segment Register, Flag Register.
• Fungsi setiap register bermacam-macam sesuai peruntukannya yang telah diatur oleh
pembuat mikroprosesor.
TUGAS
1. Jelaskan pengertian Interupt?
2. Jelaskan cara-cara CPU melakukan operasi routin terhadap komponen pendukung?
3. Sebutkan macam-macam interrupt pada pemrograman bahasa rakitan?
4. Jelaskan pengertian Register dan sebutkan macam-macam register?
5. Jelaskan semua fungsi setiap register ?
6. Mengapa register dipakai dalam pemrograman bahasa rakitan/ assembler?
Uky Yudatama, S.Si, M.Kom
10
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Pertemuan Ke 4 (Empat)
Tujuan Instruksional Khusus Mengerti dan Memahami Pembuatan Program
Pokok Bahasan Perlengkapan Bahasa Rakitan
Sub Pokok Bahasan
- Compiler dan Linker
- Perbedaan Program Com dan Exe
- Label dan Komentar
- Perintah MOV
Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly,
Hartono Partoharsojo
2. Pemrograman dengan Bahasa Assembly,
Susanto
3. Microprocessor Programmer’s, referensi Intel Co
Perlengkapan Bahasa Rakitan
Untuk membuat bahasa rakitan diperlukan perlengkapan yang merupakan software antara lain
dari DOS berupa Debug.COM atau dari Borland International berupa Turbo Assembler atau
program lainnya. Khusus untuk membuat program dengan Turbo Assembler maka
perlengkapannya terdiri dari : Compiler dan Linker yang compatible dengan computer PC
XT/AT/Pentium dan processor Intel, AMD, Cyrix.
Compiler dan Linker
Pada pemrograman assembler dikenal istilah Compiler merupakan suatu program yang dapat
mengubah suatu file berextensi .ASM (assembler) menjadi file Object berekstensi .OBJ.
Compiler ini juga dapat memberitahukan isi suatu program yang akan dikompilasi apakah
mengandung kesalahan (error) per baris atau perintah yang tidak sesuai. Compiler pada
bahasa rakitan khususnya Turbo Assembler menggunakan TASM.EXE. Source program
yang dikompile dengan compiler TASM dibuat dengan teks editor DOS atau Windows dan
disimpan dengan nama file .ASM di directori yang berisi TASM.EXE agar lebih mudah dalam
mengkompilasinya.
Cara mengkompilasi program sumber (source program) menjadi program objek adalah :
TASM (nama file .ASM) (nama file .OBJ)
Contoh:
LATIH1.ASM dikompile dengan TASM.EXE di directory A menjadi :
A>TASM LATIH1.ASM LATIH1.OBJ (enter)
atau
Uky Yudatama, S.Si, M.Kom
11
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
A>TASM LATIH1 (enter)
Maka di layar tampak:
Turbo Assembler Version 2.0 Copyright (c) 1988 by Borland International
Assembling file: LATIH1.ASM
Error messages: None
Warning messages: None
Remaining memory: 16k
Jika kita ingin membuat file objek dari source program assembler disertai dengan nomor
kesalahan yang mungkin terjadi pada baris program (file .LST), maka kita dapat memberi
perintah sebagi berikut:
A>TASM /L nama_file.ASM (enter)
Untuk membuka file .LST kita harus menjalankan teks editor dan membuka file .LST
A>Edit nama_file.LST (enter)
Sedangkan Linker merupakan program yang dapat mengubah file Objek menjadi file COM atau
EXE. Program Linker dapat mengkonversi file objek yang berupa relocatable object code yang
berupa bahasa mesin yang secara relative masih harus ditepatkan kedudukannya dan
disesuaikan dengan aturan DOS.
Program pelayanan Linker pada Turbo Assembler adalah TLINK.EXE
Penggunaan linker TLINK.EXE mernghasilkan file dengan nama file berekstensi COM atau EXE
yang terdiri dari kode bahasa mesin yang telah pasti penempatannya sehingga dapat disimpan di
memori (RAM) untuk melaksanakan program. Semua proses assembly dan semua proses link
harus tidak ada kesalahan artinya error harus 0. Jika masih ada error program harus diedit
dengan membuka source program (file .ASM).
Untuk menjalankan file yang telah dilinker dengan TLINK.EXE, maka langsung dapat dieksekusi
dengan mengetik nama file di depan prompt DOS atau di run melalui Windows.
Cara melakukan linker pada sebuah objek program (.OBJ) menjadi program COM atau EXE
adalah : TLINK /T (nama file .OBJ) -> untuk menjadi file berekstensi OBJ
atau
TLINK (nama file .OBJ) -> untuk menjadi file berekstensi .EXE
Perbedaan file COM dan EXE
Program COM adalah salah satu jenis executable program. Ada beberapa sifat antara COM
dengan EXE. Perbedaan sifat (kelebihan dan kekurangan) masing-masing adalah sebagai
berikut:
- Program COM :
Uky Yudatama, S.Si, M.Kom
12
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
1. Relatif lebih kecil dibanding EXE
2. Lebih cepat dibanding EXE
3. Hanya menggunakan 1 segment
4. Ukuran file maksimal 64 KB
5. Sulit mengakses data/prosedur di segment lain
6. Dapat dibuat dengan Debug
7. Source file tidak boleh menggunakan referensi segment tertentu
8. Source file tidak boleh memakai data segment
9. Source file tidak boleh memakai stack segment
10.Harus diawali dengan ORG 100H, artinya pada Code segment yang dipilih,
executable code ahrus mulai di CS:0100
- Program EXE :
1. Relatif lebih besar dibanding COM
2. Lebih lambat dibanding dengan COM
3. Bisa menggunakan lebih dari 1 segment
4. Ukuran berkas tidak terbatas (sesuai kemampuan memori)
5. Mudah mengakses data/prosedur di segment lain
6. Tidak dapat dibuat dengan Debug dari DOS.
7. Source file boleh memilih memakai segment tertentu.
8. Source file boleh memakai data segment
9. Source file boleh memakai stack segment
10.Tidak perlu menggunakan ORG 100H untuk setiap Code segment.
Dari perbandingan tersebut terlihat bahwa program COM lebih sederhana dibanding program
EXE.
Baris-baris instruksi program dikenal dengan nama Mnemonic, ditulis dan disimpan dalam file
berekstensi .ASM misalnya: Coba1.ASM
Label dan Komentar
Label pada program merupakan address memori yang diberi nama unik misalnya :
Pada alamat 0000:0400 akan diberi nama label Data_BIOS. Maka susunan penulisan Label
dalam pernyataannya adalah :
SEGMENT AT 0000H
ORG 0400H
Data_BIOS LABEL WORD
Atau jika kita ingin memulai suatu program dan diberi Label MULAI maka penulisannya adalah::
Code Segment
Assume CS: Code
ORG 100H
MULAI:
……….…
………….
Label yang dibuat untuk pengarah data (directive) sering digunakan adalah EQU singkatan dari
EQUate. Kegunaannya untuk memberi nama pada angka atau konstanta yang dianggap penting.
Uky Yudatama, S.Si, M.Kom
13
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Contohnya:
ANGKA EQU 0B800H ; 0B800H diberi nama ANGKA
Kolom EQU 80 ; angka 80 diberi nama Kolom
Sedangkan komentar pada program dibuat hanya sebagai catatan atau remark yang tidak berarti
apa-apa dan tidak dieksekusi oleh CPU. Komentar pada program diberi tanda titik koma (;) diberi
kata-kata atau kalimat tentang program. Misalnya:
; Program ini dibuat dengan Turbo Assembler (komentar)
; Author by :
; Date :
Code segment
Assume Cs: Code
Org 100h
Mulai: (merupakan suatu Label)
Perintah MOV
Perintah ini merupakan perintah dasar pemrograman bahasa rakitan untuk memindahkan data
dari lokasi asal ke lokasi tujuan berupa register atau lokasi memori.
Instruksinya (mnemonic) adalah MOV dengan sintaks:
MOV lokasi tujuan, lokasi asal
Contoh:
MOV CX, 05 ; angka 5 disimpan di register CX
MOV AX, 005AH ; angka 005AH disimpan di AX
MOV BX, AX ; isi AX disimpan ke BX
MOV [200], BX ; isi BX disimpan di lokasi memori 200
MOV [BX], [200]; isi data di lokasi memori 200 disim-
pan di alamat BX.
• Untuk membuat program bahasa rakitan /assembler memerlukan perlengkapan berupa
Uky Yudatama, S.Si, M.Kom
14
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
software antara lain: DOS dengan DEBUG.COM atau TURBO ASSEMBLER dengan
TASM.EXE dan TLINK.EXE
• Perlengkapan lainnya adalah Teks Editor berupa EDIT.COM, SK.COM (Side Kick) atau
Notepad pada Windows.
• Membuat program COM dapat menggunakan 2 cara yaitu dengan Debug pada DOS
atau dengan Turbo Assembler.
• Label pada program merupakan nama yang dapat mewakili alamat memori (memory
address), sebagai directive (pengarah), start program, prosedur atau keperluan
lainnya.
• Komentar merupakan tanda titik koma pada program yang tidak akan dieksekusi hanya
keterangan tentang program atau baris program.
• Perintah MOV merupakan perintah dasar dalam bahasa rakitan yang dipakai untuk
mentransfer data angka, register, alamat memori (lokasi memori)
TUGAS
• Cobalah untuk mengenal beberapa perlengkapan bahasa rakitan
• Cobalah untuk membandingkan file COM dengan file EXE dilihat dari isi program dan
kapasitasnya
• Buatlah macam-macam Label dan komentar pada suatu program assembler
Pertemuan Ke 5 (Lima)
Tujuan Instruksional Khusus
Mengerti dan Memahami metode membuat program
COM.
Pokok Bahasan
Membuat program COM
Mencetak Huruf
Sub Pokok Bahasan
- Model Program COM
Pembuatan dengan DEBUG
Pembuatan dengan Turbo Assembler (TASM)
- Mencetak huruf / Membuat kalimat
- Operasi Loop
- Mencetak beberapa karakter
Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly,
Hartono Partoharsojo
2. Pemrograman dengan Bahasa Assembly,
Susanto
3. Microprocessor Programmer’s, referensi Intel Co
Uky Yudatama, S.Si, M.Kom
15
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Membuat Program COM
Model Program COM
Program yang berekstensi COM (Command) merupakan program yang berisi perintah
assembler berupa instruksi mnemonic yang dapat ditulis dengan Debug atau Turbo Assembler.
Struktur model program COM yang dibuat dengan Turbo Assembler bisa dengan 2 model
yaitu:
Model 1:
Title Nama_program ;judul program
Makro MACRO ;nama makro
--------
-------- } isi makro berada (bila ada)
ENDM ;akhir makro
Code SEGMENT ;(nama label segment)
ASSUME CS: Code ;(register CS berisi label segment)
ORG 100h ;(origin 100h menuju ke alamat offset 100h)
MULAI: --------- ;(label mulai)
--------- ; isi program
---------
INT 20h ; berhenti dan kembali ke DOS
Code ENDS ; akhir penulisan program di segment
END MULAI ; akhir dari isi program
Model 2:
Bentuk struktur program di bawah ini lebih ringkas dibanding dengan model 1 yaitu:
.model small
.code
org 100h ;program dimulai pada alamat 100h
MULAI:
--------- ;(label mulai)
--------- ; isi program
---------
INT 20h ; berhenti dan kembali ke DOS
END MULAI ;akhir program
Kita dapat mengganti model 1 dengan model 2 dimana pengetikan isi program sama dengan
model 1 di atas.
Uky Yudatama, S.Si, M.Kom
16
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Pembuatan program dengan Debug
Program yang tersedia dalam PCDOS atau MSDOS berupa Debug.Com atau Debug.Exe,
Pengetikan program dapat langsung ditulis dalam program Debug.
Caranya :
- Ketik Debug di depan prompt C atau A (debug.com ada di directory tersebut)
C> Debug (enter)
-
- Langkah berikutnya adalah memasukkan baris-baris program dengan perintah
A100 (assembly) di depan prompt debug ( _ )
Perintah A100 berarti instruksi pertama akan diletakkan pada alamat offset 100h
pada segment memori tersebut.
-A100 (enter)
xxxx : 0100 _
xxxx: adalah alamat segment dan 0100 adalah alamat offset dimana program
akan ditempatkan mulai alamat tersebut..
Ketiklah isi program bahasa rakitan (assembler) di depan alamat segment offset
xxxx : 0100 misalnya:
xxxx : 0100 MOV DL,61 ;kode ASCII huruf a
: 0103 MOV AH,02 ;nomor pelayanan 02H
: 0105 INT 21 ;cetak di layar
: 0107 INT 20 ;kembali ke DOS
: 0109 _ (enter) ;menuju ke prompt debug
-
Alamat segment offset dari 0100 s/d 0109 akan keluar sendiri setelah kita
mengetik program disertai dengan menekan enter.
Setelah instruksi INT 20 tekan enter 2 kali dan program akan kembali ke prompt
debug ( _ ).
- Menentukan panjang program pada debug dilakukan dengan mengisi register
BX:CX. Terlihat dari mulai alamat offset awal 0100h dan alamat offset akhir
010Fh, sehingga dapat diperoleh panjang programnya adalah (0109h – 0100h) =
9 byte, maka register BX diisi dengan 0 dan register CX dengan 9. Jadi pada
prompt Debug ketik RBX lalu isi 0, dan ketik RCX lalu isi dengan 9.
-RBX (enter)
BX 0000
:0 enter
-RCX (enter)
CX 0000
:9 enter
- Setelah selesai ditik perintah RCX kemudian memberi nama file dengan perintah
N (name). Contoh : -N COBA1.com (enter)
- Untuk menyimpan program ke disket atau harddisk berikan perintah W (write)
lalu enter.
- Menjalankan program harus memberi instruksi G (go) dan lihat hasilnya di layar.
Bila program berjalan dengan benar (tidak ada kesalahan) komputer akan
Uky Yudatama, S.Si, M.Kom
17
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
memberi komentar “Program terminated normally”. Selengkapnya contoh cara
membuat program dengan Debug :
C> debug (enter)
-A100 enter
xxxx : 0100 MOV DL,61
xxxx : 0103 MOV AH,02
xxxx : 0105 INT 21
xxxx : 0107 INT 20
xxxx : 0109
-rbx enter
BX 0000
:0 enter
-rcx enter
CX 0000
:9 enter
-N coba1.com
-W
Writing 000F bytes
-G
a (hasil dari program assembler tampil huruf a di layar)
Program terminated normally
-
Pembuatan dengan Macro Assembler atau Turbo
Assembler.
Adanya keterbatasan pembuatan program dengan Debug, maka kita dapat menggunakan
bantuan assembler compiler dengan Macro assembler atau Turbo Assembler (TASM.EXE dan
TLINK.EXE).
Untuk membuat program assembler dengan Turbo Assembler kita memerlukan source program
yang ditulis dengan teks editor (fasilitas untuk mengetik program). Teks editor dapat memakai
Edit.com, Side Kick (SK.com) pada DOS atau Notepad pada Windows dan lain-lain. Program
assembler dapat membuat file berekstensi COM atau berekstensi EXE
MENCETAK HURUF
Membuat program untuk mencetak huruf dapat dilakukan dengan menyusun kode ASCII satu
persatu yang ditempatkan dalam register DL sebagai tempat menyimpan data yang akan
Uky Yudatama, S.Si, M.Kom
18
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
ditampilkan di layar dengan memanfaatkan nomor pelayanan interupsi INT 21H service 02H yang
disimpan dalam register AH.
Untuk membuat program COBA2.COM dengan Turbo Assembler, maka file harus diberi nama
COBA2.ASM yang diketik dalam teks editor yang ada yaitu :
Coba segment
Assume CS: Coba
Org 100h
MULAI: MOV AH,02H ; isi register AH dengan 02h untuk pelayanan
cetak huruf di layar
MOV DL,41H ; isi register DL dengan 41H kode ASCII
; huruf A
INT 21h ; cetak huruf di layar
INT 20h ; berhenti dan kembali ke DOS
Coba ENDS
END MULAI
- Simpan file tersebut dengan nama COBA2.ASM
- Compile nama coba2.asm dengan TASM.EXE dan di-link mengikuti langkah
pembuatan program selanjutnya sehingga menjadi COBA2.COM.
OPERASI LOOP
Merupakan operasi pengulangan atau iterasi untuk digunakan dalam cacahan atau penampilan
karakter string berulang-ulang. Perintah ini memakai register CX sebagai penentu jumlah
cacahan atau jumlah pengulangan, diakhiri dengan perintah LOOP untuk lompat kembali
melakukan pengulangan.
Contoh program operasi loop dengan DEBUG :
xxxx : 0100 MOV CX,05 (enter) ;loop sebanyak 5 kali
: 0103 MOV DL,61 ;kode ASCII huruf a
: 0105 MOV AH,02 ;nomor pelayanan 02H
: 0107 INT 21 ;cetak di layar
: 0109 INC DL ;tambahkan isi DL dengan 1
: 010B LOOP 0107 ;kembali ke alamat 0107H
: 010D INT 20 ;kembali ke DOS
: 010F _ (enter) ;menuju ke prompt debug
-
Contoh program operasi loop dengan TURBO ASSEMBLER :
Coba segment
Assume CS: Coba
Uky Yudatama, S.Si, M.Kom
19
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Org 100h
MULAI: MOV CX,0005H ; banyaknya loop 5 kali
MOV DL,61H ; isi DL dengan kode ASCII huruf a
ULANG: INT 21h ; cetak huruf di layar
INC DL ; tambahkan isi DL dengan 1
LOOP ULANG ; kembali ke label ULANG
INT 20h ; berhenti dan kembali ke DOS
Coba ENDS
END MULAI
Mencetak beberapa huruf
Mencetak beberapa huruf dapat dilakukan dengan 2 cara yaitu :
 Menyusun beberapa huruf dalam kode ASCII satu persatu yang setiap huruf disimpan di DL
 Menggunakan operasi loop untuk mencetak beberapa huruf memakai instruksi INC untuk
menambah isi register dengan 1 sehingga nilai DL bertambah lagi untuk dicetak.
Contoh pembuatan beberapa huruf yang disusun satu persatu dengan DEBUG
CAssembler> debug (enter)
-A100 enter
xxxx : 0100 MOV AH,02
xxxx : 0103 MOV DL,41
xxxx : 0105 int 21
xxxx : 0107 MOV DL,42
xxxx : 0109 INT 21
xxxx : 010B MOV DL,43
xxxx : 010D INT 21
xxxx : 010F INT 20
xxxx : 0111
-rbx enter
BX 0000
:0 enter
-rcx enter
CX 0000
:11 enter
-N COBA2.COM
-W
Writing 0011 bytes
-G
ABC (tampilan ABC di layar)
Program terminated normally
Untuk membuat beberapa huruf yang disusun satu persatu dengan Turbo Assembler, maka
program harus diketik dalam teks editor yang ada (EDIT atau SK) yaitu :
;Menyusun beberapa huruf kode ASCII
Coba segment
Assume CS: Coba
Org 100h
MULAI: MOV AH,02H ; isi register AH dengan 02h untuk pelayanan
Uky Yudatama, S.Si, M.Kom
20
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
cetak huruf di layar
MOV DL,41H ; isi register DL dengan 41H kode ASCII
; huruf A
INT 21h ; cetak huruf di layar
MOV DL,42H ; isi register DL dengan 42H huruf B
INT 21H ; cetak huruf di layar
MOV DL,43H ; isi register DL dengan 43H huruf C
INT 21h ; cetak huruf di layar
INT 20h ; berhenti dan kembali ke DOS
Coba ENDS
END MULAI
- Simpan file tersebut dengan nama COBA3.ASM
- Compile nama coba2.asm dengan TASM.EXE dan di-link mengikuti langkah pembuatan
program selanjutnya sehingga menjadi COBA3.COM.
Contoh pembuatan beberapa huruf memakai operasi loop dengan DEBUG
CAssembler>debug (enter)
-A100 (enter)
xxxx : 0100 MOV CX,05 (enter) ;loop sebanyak 5 kali
: 0103 MOV DL,61 ;kode ASCII huruf a
: 0105 MOV AH,02 ;nomor pelayanan 02H
: 0107 INT 21 ;cetak di layar
: 0109 INC DL ;tambahkan isi DL dengan 1
: 010B LOOP 0107 ;kembali ke alamat 0107H
: 010D INT 20 ;kembali ke DOS
: 010F _ (enter) ;menuju ke prompt debug
-RCX
:F
-RIP
:100
-N COBA3.COM
-W
Writing 000F bytes
-G
abcde (tampilan ABC di layar)
Program terminated normally
Untuk pembuatan beberapa huruf memakai operasi loop dengan TURBO ASSEMBLER kita
dapat memodifikasi dari program dengan Debug seperti contoh operasi loop di atas.
Langkah-langkah pembuatan program bahasa rakitan dengan Turbo
Assembler sebagai berikut :
1. Buat source program dengan teks editor dan beri nama file berekstensi .ASM
dan simpan didirektory yang berisi TASM.EXE dan TLINK.EXE.
2. Compile source program ASM dengan perintah compiler TASM dari Turbo
Assembler menjadi Objek program (file akan berekstensi OBJ). caranya :
C>TASM KAMPUS>ASM (enter)
Uky Yudatama, S.Si, M.Kom
21
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
3. Compile source program ASM dengan perintah compiler TASM dari Turbo
Assembler menjadi Objek program (file akan berekstensi OBJ). caranya :
C>TASM KAMPUS.ASM (enter)
4. Setelah menjadi coba1.obj, kita harus me-link berkas objek menjadi COM
dengan perintah TLINK. Caranya : C>TLINK /t KAMPUS (enter)
5. Jika pada pengetikan TLINK tidak diberi tanda /t , maka objek program akan
menjadi file berekstensi EXE.
6. Coba1.com dapat langsung dieksekusi dari DOS prompt untuk melihat hasilnya
di layar monitor dengan mengetik C>KAMPUS (enter)
7. Jika terdapat kesalahan, Turbo Assembler akan memberi tahu letak kesalahan
pada baris program dan diedit dengan membuka kembali teks editor dan file
.ASM
8. Perbaiki program yang salah, kemudian dicompile ulang seperti langkah 2 dan 3.
• Membuat program COM dapat dengan Turbo Assembler dapat dilakukan dengan 2
model pilihan yaitu model 1 (Code segment) atau model 2 (Model Small).
• Membuat program dengan debug harus diketik satu persatu, jika ada kesalahan maka
program harus diketik dari awal lagi.
• Membuat program dengan Turbo Assembler jauh lebih baik, karena jika ada kesalahan
kita tidak perlu lagi mengetik ulang tinggal kita perbaiki program yang mengalami
kesalahan tadi melalui teks editor dan dicompile ulang.
• Program mencetak huruf memakai kode ASCII yang disusun satu persatu dengan
memanfaatkan pelayanan interupsi INT 21H servive numer 02H.
• Operasi Loop digunakan untuk melakukan pengulangan atau iterasi dan banyaknya
nilai pengulangan ditentukan oleh nilai register CX sebelumnya.
• Program membuat beberapa huruf dapat disusun satu persatu dengan kode ASCII
atau dengan memanfaatkan operasi loop.
TUGAS
1. Buatlah program mencetak huruf nama sendiri dengan Debug dan Turbo Assembler
dengan menyusun kode ASCII untuk setiap hurufnya minimal 10 huruf.
2. Buatlah juga program mencetak kalimat bio data mahasiswa.
Uky Yudatama, S.Si, M.Kom
22
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Pertemuan Ke 6 (Enam)
Tujuan Instruksional Khusus
Mengerti dan memahami metode operasi arithmetika
dalam program assembler.
Pokok Bahasan Operasi Arithmetika
Sub Pokok Bahasan
- Penambahan (ADD)
- Pengurangan (SUB)
- Pembandingan (CMP)
- Perkalian (MUL)
- Pembagian (DIV)
Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly,
Hartono Partoharsojo
2. Pemrograman dengan Bahasa Assembly,
Susanto
3. Microprocessor Programmer’s, referensi Intel Co
OPERASI ARITMATIKA
Instruksi arithmetika meliputi: penambahan (addition), pengurangan (subtraction), pembandingan
(comparison), perkalian (multiplication), pembagian (division).
Aturan Penulisan Operasi Arithmetika (sintaks)
Penjumlahan (Addition)
a. Instruksi ADD -> ADD reg1, reg2 atau ADD reg, [alamat]
Hasil penjumlahan disimpan di reg1.
Contoh:
ADD AX, BX ;hasilnya disimpan di AX
b. Instruksi INC -> INC reg atau INC [alamat]
Data pada reg atau [alamat] bertambah 1
Contoh:
INC DX ;hasil DX = DX + 1
c. Instruksi ADC -> ADC reg1, reg2 atau ADC reg, [alamat]
Penjumlahan biasa yang hasilnya ditambah dengan bit carry. Hasilnya disimpan di
reg1.
Uky Yudatama, S.Si, M.Kom
23
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Contoh:
ADC AH, AL ;AH=AH + AL + carry
Pengurangan (Subtraction)
a. Instruksi SUB -> SUB reg1, reg2 atau SUB reg, [alamat]
Hasil pengurangan disimpan di reg1.
Contoh:
SUB CX, BX ;hasilnya disimpan di CX
b. Instruksi DEC -> DEC reg atau DEC [alamat]
Data pada reg atau [alamat] akan bertambah 1
Contoh:
DEC CX ;hasil CX = CX + 1
c. Instruksi SBB -> SBB reg1, reg2 atau SUB [alamat], reg
Pengurangan biasa yang hasilnya dikurangi dengan bit carry. Hasilnya disimpan di
reg1 atau [alamat].
Contoh:
SBB AH, AL ;hasil AH= AH – AL – carry
Pembandingan (CMP / Comparison)
Instruksi CMP -> CMP reg1, reg2 atau CMP reg, data
Membandingan isi reg1 dengan reg2 atau data.
Contoh:
CMP DL, BL ;bandingkan isi DL dengan BL
Perkalian (Multiplication)
Instruksi MUL -> MUL reg atau MUL [alamat]
Perkalian antara AL (8 bit) atau AX (16 bit) dengan isi reg atau [alamat],
hasilnya disimpan di AX (8 bit) atau DX-AX (16 bit).
Contoh:
MUL DL ;isi AL (8 bit) dikali dengan DL, hasil di AX.
MUL BX ;isi AX (16 bit) dikali dengan BX, hasil di DX-AX
Uky Yudatama, S.Si, M.Kom
24
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Pembagian (Division)
a. Pembagian 8 bit -> DIV reg atau DIV [alamat]
Pembagian dividen (disimpan di AX) dengan divisor (reg 8 bit) atau data pada
lokasi memori, hasilnya disimpan di AL sisanya di AH.
Contoh:
DIV DL ;isi AX dibagi DL,hasil di AL sisanya di AH.
b. Pembagian 16 bit -> DIV reg (16 bit) atau DIV [alamat]
Pembagian dividen (disimpan di DX-AX) dengan divisor (reg 16 bit) atau data pada
lokasi memori, hasilnya disimpan di AX sisanya di DX.
• Operasi arithmetika dalam bahasa rakitan ditulis dengan mnemonic ADD, SUB, INC,
DEC, MUL, CMP dan DIV.
• Penulisan perintah operasi arithmetika harus mengikuti aturan penulisan (sintaks)
untuk yang bekerja pada kondisi 8 bit dan 16 bit.
• Untuk pembuatan program arithmetika bisa dilakukan dengan mengetik pada debug
diakhiri dengan INT 20. Hasil proses dilihat pada saat kita mengetik perintah T (Trace)
dan D (data alamat) di depan prompt debug (-). Angka-angka yang tertera pada setiap
register dicatat pada tabel AX, BX, CX dan DX.
TUGAS
Buatlah beberapa contoh program penambahan, pengurangan, pembandingan, penambahan
dengan satu, pengurangan dengan satu, perkalian dan pembagian (8 bit dan 16 bit).
Program dibuat dengan debug dan hasilnya dites dan diuji dengan perintah T (trace) pada
setiap prompt debug.
Uky Yudatama, S.Si, M.Kom
25
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Pertemuan Ke 7 (Tujuh)
Tujuan Instruksional Khusus
Mengerti dan Memahami Pointer dan fungsi bit dalam
operasi logika dan pergeseran bit.
Pokok Bahasan Operasi Logika dan Pergeseran Bit
Sub Pokok Bahasan
- Operasi/Gerbang NOT
- Operasi/Gerbang AND
- Operasi/Gerbang OR
- Operasi/Gerbang XOR
- TEST
- SHL & SHR
- ROL & ROR
Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly,
Hartono Partoharsojo
2. Pemrograman dengan Bahasa Assembly,
Susanto
3 Microprocessor Programmer’s, referensi Intel Co
OPERASI LOGIKA DAN PERGESERAN BIT
Operasi NOT dan NEG -> NOT/NEG reg atau NOT/NEG [alamat]
Seluruh bit pada isi register atau [alamat] yang diberi NOT akan di-NOT-kan sedangkan jika
diberi NEG seluruh bit akan menjadi komplemen-2
Contoh:
NOT CL ;isi CL di-NOT-kan
NOT [BP] ;isi di [alamat] BP akan di-NOT-kan
NEG CL ;isi CL di-NEG-kan (komplemen-2)
Operasi AND -> AND reg1, reg2/data atau AND reg, [alamat]
Register 1 akan di-AND-kan dengan register 2 atau data atau [alamat]
Contoh:
AND CL, 45h ;isi CL di-AND-kan dengan 45h
AND AX, BX ;isi AX di-AND-kan dengan BX
AND BL,[250] ;isi BL di-AND-kan dengan isi di lokasi 250h
Uky Yudatama, S.Si, M.Kom
26
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Operasi OR -> OR reg1, reg2/data atau OR reg, [alamat]
Register 1 akan di-OR-kan dengan register 2 atau data/[alamat].
Contoh:
OR DH, 25h ;isi DH di-OR-kan dengan 25h
OR CX, BX ;isi CX di-OR-kan dengan BX
Operasi XOR -> XOR reg1, reg2/data atau XOR reg, [alamat]
Register 1 akan di-XOR-kan dengan register2 atau data/[alamat]
Contoh:
XOR BL, 25h ;isi BL di-XOR-kan dengan 25h
XOR DX, BX ;isi DX di-XOR-kan dengan BX
Operasi TEST -> TEST reg1, reg2/data atau TEST reg, [alamat]
Mirip dengan AND, hanya kedua register tidak berubah, yang berubah hanya bit-bit flag register.
Contoh:
TEST CL, 25h ;isi CL di-AND-kan dengan 25h tanpa mengubah isi CL.
Instruksi SHL (Shift Left) -> SHL reg, CL
Isi register di geser ke kiri sebanyak nilai CL.
Contoh:
MOV CL, 2h
SHL AH, CL ;isi AH digeser ke kiri 2 langkah.
Instruksi SHR (Shift Right) -> SHR reg, CL
Isi register di geser ke kanan sebanyak nilai CL.
Contoh:
MOV CL, 2h
SHR AH, CL ;isi AH digeser ke kanan 2 langkah
Rotasi (Rotate)
Instruksi ini digunakan untuk memutar isi bit pada suatu register ke kiri atau ke kanan sesuai
perintah yang diberikan.
Uky Yudatama, S.Si, M.Kom
27
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Instruksi ROL (Rotate Left) -> ROL reg, CL
Isi register di rotasi ke kiri sebanyak CL
Contoh:
ROL AH, 2h ;isi AH dirotasi ke kiri 2 langkah
Instruksi ROR (Rotate Right) -> ROR reg, CL
Isi register di rotasi ke kanan sebanyak CL
Contoh:
ROR AH, 2h ;isi AH dirotasi ke kiri 2 langkah
• Operasi logika merupakan operasi yang dilakukan oleh CPU pada bagian ALU
antara lain : AND, OR, NOT, XOR dan TEST.
• Selain operasi logika di dalam CPU juga terdapat operasi Pergeseran dan
perputaran bit antara lain : SHL, SHR, ROL dan ROR.
• Operasi ini sangat penting untuk memanipulasi dan mengkonversi bit-bit pada suatu
data.
TUGAS
1. Jelaskan penggunaan operasi NOT, AND, OR, XOR dan TEST.
2. Bagaimana cara memutar isi data hexadesimal dalam suatu register.
3. Buatlah program pendek dengan DEBUG beberapa contoh operasi logika dan
pergeseran bit data.
Uky Yudatama, S.Si, M.Kom
28
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Pertemuan Ke 8 (Delapan)
Tujuan Instruksional Khusus Mengerti dan Memahami Metode Pengalamatan Data.
Pokok Bahasan Mode Pengalamatan Data
Sub Pokok Bahasan
- Register Addressing
- Immediate Addressing
- Direct Addressing
- Direct Addresing with displacement
- Indirect Addressing
- Relative Addressing
- Base Plus Index Addressing
- Base Relative Plus Index Addressing
Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly,
Hartono Partoharsojo
2. Pemrograman dengan Bahasa Assembly,
Susanto
3 Microprocessor Programmer’s, referensi Intel Co
MODE PENGALAMATAN DATA
Pengertian Pengalamatan Data
Pengalamatan data (addressing mode) adalah perpindahan data dari lokasi asal ke lokasi
tujuan.
Lokasi asal berupa register, lokasi memori atau data mentah (kode hexadesimal / bilangan).
Lokasi tujuan berupa register atau lokasi memori. Perintahnya memakai MOV.
Mode Pengalamatan
Beberapa mode pengalamatan antara lain:
> Register Addressing
Merupakan penyalinan data antar register (transfer ergister)
MOV reg1, reg2
Contoh:
MOV AX, BX ; isi BX disalin ke AX
MOV SI, DI ; isi DI disalin ke SI
> Immediate Addressing
Merupakan penyalinan suatu data ke register
Uky Yudatama, S.Si, M.Kom
29
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
MOV reg, data
Contoh:
MOV AH, 02h ;02h disalin ke AH
MOV DL,’A’ ; karakter A disalin ke DL
MOV AX,’AB’ ;karakter AB disalin ke AX
> Direct Addressing
Merupakan penyalinan data dari lokasi memori tertentu ke accumulator (AX, AH atau AL) atau
sebaliknya.
MOV reg, [alamat]
MOV [alamat], reg
Contoh:
MOV AL, [0100h] ;isi data di alamat memori 100h ke AL
MOV [0250h], AX ;isi AX disalin ke alamat 0250h
> Direct Addressing with Displacement
Pada dasarnya sama dengan Direct Addressing, tetapi tidak hanya memakai register AL atau AX.
MOV reg, [alamat]
MOV [alamat], reg
Contoh:
MOV DL, [0100h] ;isi data di alamat memori 100h ke DL
MOV [0250h], DX ;isi DX disalin ke alamat 0250h
> Indirect Addresing
Penyalinan data secara tidak langsung dari lokasi alamat yang ditunjuk oleh BP, BX, DI atau SI
ke suatu register atau sebaliknya.
MOV reg, [reg]
MOV [reg], reg
MOV [reg], [reg]
Contoh:
MOV EAX, [BX] ;isi data di lokasi memori [DSx10h+BX] ke register EAX
MOV [CX], AX ;isi data di AX disalin ke lokasi memori [DSx10h +CX}
Uky Yudatama, S.Si, M.Kom
30
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
> Relative Addressing
Merupakan penyalinan data dari lokasi memori yang ditunjuk oleh BP, BX atau SI dan DI
ditambah displacement ke register tujuan atau sebaliknya.
MOV reg, [base+disp]
MOV [base+disp], reg
Contoh:
MOV AX, [BX+10h]
MOV [BX+20h], CX
MOV [BP+30h], CH
MOV [DI+50h], DL
> Base Plus Index Addressing
Merupakan penyalinan data dari lokasi memori yang ditunjuk oleh BP atau BX ditambah isi index
(SI atau DI) ke register tujuan atau sebaliknya.
MOV reg, [base+index]
MOV [base+index], reg
Contoh:
MOV DX, [BX+SI]
MOV [BP+DI], AX
> Base Relative Plus Index Addressing
Merupakan penyalinan data dari lokasi memori yang ditunjuk oleh BP atau BX ditambah isi index
(SI/DI) + displacement atau sebaliknya.
MOV reg, [base+index+disp]
MOV [base+index+disp], reg
Contoh:
MOV DX, [BX+SI+10h]
MOV [BP+DI+20h], AX
• Pengalamatan data merupakan perpindahan data dari lokasi asal ke lokasi tujuan.
• Setiap lokasi dapat berupa register, lokasi memori.
• Perintah untuk melakukan mode pengalamatan data adalah MOV.
Uky Yudatama, S.Si, M.Kom
31
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
• Penggunaan perintah MOV harus sesuai dengan aturan mode pengalamatan data.
TUGAS
1. Jelaskan pengertian tentang pengalamatan data!
2. Sebutkan macam-macam mode pengalamatan data!
3. Jelaskan pula masing-masing perbedaan mode pengalamatan data antara yang satu
dengan yang lainnya!
4. Buatlah beberapa contoh program pendek yang isinya terdapat beberapa mode
pengalamatan data!
Pertemuan Ke 9 (Sembilan)
Tujuan Instruksional Khusus Mengerti dan Memahami Metode Mencetak kalimat.
Pokok Bahasan Mencetak kalimat dan Operasi string.
Sub Pokok Bahasan
- Mencetak dengan DOS
- Operasi String
- Mencetak Kalimat dengan atributnya
- Pengaturan atribut
Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly,
Hartono Partoharsojo
2. Pemrograman dengan Bahasa Assembly,
Susanto
3 Microprocessor Programmer’s, referensi Intel Co
MENCETAK KALIMAT
Mencetak kalimat dengan DOS
Untuk membuat kalimat, program harus diketik dengan teks editor (EDIT / NOTEPAD atau
SK.COM) dan harus mengikuti model 1 atau model 2 di atas menggunakan pelayanan interupsi
Uky Yudatama, S.Si, M.Kom
32
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
21H nomor servis AH=09H. Mencetak kalimat dalam sistem operasi DOS memerlukan tambahan
misalnya letak posisi kalimat berada pada baris dan kolom tertentu, sehingga kita harus
memakai pelayanan interupsi INT 10H nomor servis AH=02H dan AL=0 yang berfungsi mengatur
posisi kalimat di layar. Nilai baris dan kolom harus dimasukkan ke dalam register DH (baris) dan
register DL (kolom). Total baris di layar adalah 24 dan total kolom di layar adalah 80. Untuk
mencetak kalimat di tengah layar, maka barisnya adalah 12, sedangkan kolomnya disesuaikan
dengan jumlah kalimat yang akan dicetak.
Isi kalimat disimpan dalam label misalnya KALIMAT dengan diberi spesifikasi data berupa DB
(define byte) yang diproses dalam byte diawali dan diakhiri dengan tanda ‘ (petik) dan pada akhir
tulisan diberi tanda dolar $ untuk batas tulisan.
Misalnya kalimat KAMPUS STMIK BANI SALEH BEKASI dicetak di layar, maka kita harus
mengikuti struktur program atau model 1 seperti contoh dibawah ini :
Coba segment
Assume CS: Coba
Org 100h
MULAI: MOV AH,09H ; isi register AH dengan 09h untuk pelayanan
cetak kalimat di layar
MOV DX, OFFSET KALIMAT ; isi register DX dengan LABEL
KALIMAT 16 BIT
INT 21h ; cetak KALIMAT di layar
INT 20h ; berhenti dan kembali ke DOS
KALIMAT DB ’KAMPUS STMIK BANI SALEH BEKASI$’ ;data disimpan di label
Coba ENDS
END MULAI
- Simpan file tersebut dengan nama KAMPUS.ASM
- Setelah file disimpan dengan nama KAMPUS.ASM lalu dicompile dan di-link mengikuti
langkah pembuatan program selanjutnya sehingga menjadi KAMPUS.COM.
Atau dapat juga membuat program kalimat dengan bentuk model 2 yang lebih ringkas berikut ini:
.model small
.code
org 100h ; program dimulai pada alamat 100h
MULAI:
MOV AH,09H ; isi register AH dengan 09h untuk
; pelayanan cetak kalimat di layar
MOV DX, OFFSET KALIMAT ; isi register DX dengan LABEL
; KALIMAT 16 BIT
INT 21h ; cetak KALIMAT di layar
INT 20h ; berhenti dan kembali ke DOS
KALIMAT DB ’KAMPUS STMIK BANI SALEH BEKASI$’ ;data disimpan di label
END MULAI ; akhir program
Contoh 2:
.model small
.code
Uky Yudatama, S.Si, M.Kom
33
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
org 100h
MULAI: ; mencetak kalimat di tengah layar
MOV AH,02H
MOV AL,0
MOV BH,0
MOV DH, 12
MOV DL, 30
INT 10H
MOV AH, 09H
MOV DX, OFFSET KALIMAT
INT 21H
INT 20H
KALIMAT DB ‘STMIK BANI SALEH$’
END MULAI
Tampilan kalimat di layar masih terlihat belum sempurna, karena tulisan yang ada di atas
sebelumnya tidak menggulung ke atas, sehingga layar perlu dibersihkan dengan CLS dari DOS
atau membuat program bersih layar sendiri dengan pelayanan interupsi INT 10H nomor servis
06H. Adapun penambahan program bersih layar sebelum kalimat dicetak di tengah layar adalah
sebagai berikut:
.model small
.code
org 100h
MULAI: ; bersih layar
MOV AH,06H
XOR CX,CX
MOV AL,0
MOV BH,07H ;background layar dasar hitam tulisan putih
MOV DH,24
MOV DL,79
INT 10H
; mencetak kalimat di tengah layar
MOV AH,02H
MOV AL,0
MOV BH,0
MOV DH,12
MOV DL,30
INT 10H
MOV AH,09H
MOV DX, OFFSET KALIMAT
INT 21H
INT 20H
KALIMAT DB ‘STMIK BANI SALEH$’
END MULAI
OPERASI STRING
String adalah jenis data yang terdiri atas kumpulan karakter, angka maupun simbol. Pada operasi
ini register SI dan DI punya peranan khusus.
SI dipakai untuk mencatat alamat dari sumber string, sedangkan DI digunakan untuk mencatat
alamat atau tempat hasil manipulasi string.
Uky Yudatama, S.Si, M.Kom
34
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Perintah yang dipakai:
CLD, STD, CMPS, CMPSB, LODS, LODSB, LODSW, MOVS, MOVSB, MOVSW, REP, REPE,
STOS, STOSB
Pengkopian STRING
MOVS dipakai untuk mengkopi data dari DS:SI menuju ke ES:DI, Hasil yang dicopy dapat dicetak
ke layar.
Contoh:
.model small
.code
org 100h
MULAI: JMP START
KAL DB ‘STMIK BANI SALEH$’
BUFF DB 17 dup(?)
START: LEA SI, KAL ;pindahkan isi KAL ke register SI
LEA DI, BUFF ;pindahkan isi BUFF ke registrer DI
CLD ;Clear Direction Flag menentukan instruksi
;pada register SI dan DI secara otomatis
;bertambah 1 (diincrement)
MOV CX, 18 ;looping sebanyak 18 x
Ulang: MOVS ES:BUFF, KAL ;copy isi string KAL ke BUFF
LOOP Ulang ;kembali ke ulang
MOV AH, 09h
LEA DX, BUFF ;pindahkan isi BUFF ke register DX
INT 21h ;cetak isi DX ke layar
INT 20h
END MULAI
Mencetak kalimat dengan atributnya
Untuk mencetak kalimat dengan atribut terdapt beberapa persyaratan antara lain:
1. Menggunakan fungsi dari BIOS melalui INT 10H
2. Nilai AX = 1300h
3. Nilai register BL merupakan nilai atribut yang ingin ditampilkan
4. Nilai register BH merupakan halaman tampilan
Uky Yudatama, S.Si, M.Kom
35
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
5. Nilai DL adalah posisi kolom layar yang akan dicetak
6. Nilai DH adalah posisi baris layar yang akan dicetak
Fungsi ini tidak mengenal batas tulisan “$” seperti INT 21H nomor service 09H sehingga kita
harus mengisi nilai CX sebanyak karakter dalam kalimat. Sedangkan register ES:BP digunakan
untuk mencatat alamat dari kalimat yang akan dicetak di layar.
Pengaturan atribut
Nilai atribut untuk mencetak kalimat di layar diatur agar mendapatkan hasil sesuai yang
diharapkan misalnya sebagai berikut :
 Nilai atribut tulisan disimpan dalam register BL=10010101B
 Nilai AX= 1300H untuk nomor service AH=13H dan AL=00H
 Nilai BH=0 untuk halaman tampilan 0
 Nilai DL=20 untuk posisi kolom di layar
 Nilai DH=12 untuk posisi baris di layar
 Nilai CX=35 untuk banyaknya kalimat yang dicetak di layar
Nilai di atas, kecuali untuk AX=1300H boleh diubah/dimodifikasi sesuai dengan permintaan
pemakai.
Contoh:
;Program untuk mencetak kalimat dengan atributnya
;Pengaturan atribut pada nilai BL=95H atau BL=10010101B
;halaman 0 pada BH
;baris 12 di layar
;kolom 20 di layar
.model small
.code
org 100h
MULAI: JMP AWAL
KAL DB ‘MENULIS KALIMAT DENGAN ATRIBUTNYA’
AWAL:
MOV AX,1300H ;service 13H subfungsi AL=0
MOV BL,10010101B ;atribut tulisan
MOV BH,00 ;halaman tampilan
MOV DL,20 ;posisi kolom
MOV DH,12 ;posisi baris
Uky Yudatama, S.Si, M.Kom
36
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
MOV CX,35 ;banyak karakter yang akan dicetak
LEA BP, KAL ;ES:BP untuk meletakan alamat string
INT 10H
INT 20H
END MULAI
• Program membuat kalimat menggunakan pelayanan interupsi 21H service number
09H dan menyimpan isi kalimat pada Label DB (Define Byte), DW (Define Word), DD
(Define Double Word), DQ (Define Quad Word).
• Untuk pembuatan program mencetak beberapa kalimat yang berurutan ke bawah,
maka pada setiap label yang diberi tanda $ harus dibubuhkan angka 13, 10 untuk
turun baris dan ditempatkan pada kolom awal ( ,13,10,’$’).
• Mencetak kalimat di layar dapat dilakukan dengan berbagai macam cara.
Penggunaan INT 10H untuk mengatur operasi layar agar mencetak kalimat menjadi
lebih teratur sesuai letak baris dan kolom di layar.
• Operasi string digunakan untuk manipulasi string, peletakan alamat string,
pengcopian string ke buffer atau tempat sementara yang ditentukan oleh kita.
• Salah satu cara mencetak kalimat di layar antara lain dengan atribut memanfaatkan
nomor pelayanan AH=13H INT 10H
• Pengaturan atribut untuk mencetak di layar dipakai untuk menghasilkan tampilan
berupa kalimat yang disimpan dalam byte, word atau double word dengan
meletakkan string pada register ES:BP sebagai pencatat alamat string.
1. Buatlah program tampilan SELAMAT DATANG DI STMIK BANI SALEH di tengah layar.
2. Bagaimana cara melakukan pengkopian string menggunakan perintah MOVSB?
3. Buatlah salah satu contoh program pengkopian string untuk dicetak dua kali!
4. Buatlah program mencetak kalimat dengan atributnya dimana kalimat tersebut harus
disertai warna dasar hitam tulisan merah.
Uky Yudatama, S.Si, M.Kom
37
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Pertemuan Ke 10 (Sepuluh)
Tujuan Instruksional Khusus
Mengerti dan Memahami operasi jump/lompatan dan
operasi stack.
Pokok Bahasan
Operasi Jump (Lompatan)
Operasi Stack.
Sub Pokok Bahasan
- Pengertian operasi jump /lompatan
- Jenis-jenis instruksi jump
- Pengertian operasi stack
- Operasi perpindahan data selain MOV
Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly,
Hartono Partoharsojo
2. Pemrograman dengan Bahasa Assembly,
Susanto
3 Microprocessor Programmer’s, referensi Intel Co
OPERASI JUMP (Lompatan)
Pengertian Operasi Jump
Instruksi lompatan pada suatu program akan menyebabkan program melompati bagian tertentu
dan mengeksekusi instruksi yang dikehendaki. Ada 2 jenis instruksi dalam operasi jump yaitu:
lompat tak bersyarat dan lompat bersyarat.
Lompatan tak bersyarat
Instruksi lompatan ini langsung menuju ke alamat memori yang dituju tanpa syarat apapun,
sehingga program langsung dapat kita arahkan menuju lokasi memori atau label dengan
perintah atau instruksi JMP
Aturan penulisannya : JMP lokasi memori/label
Contoh :
.model small
.code
org 100h
MULAI: MOV AX, 1234H
MOV BX, 4321H
JMP TERUS
TERUS:
ADD AX, BX
SUB AX,3
JMP TERUS2
TERUS2:
INT 20H
END MULAI
Uky Yudatama, S.Si, M.Kom
38
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Ada 3 jenis instruksi lompatan tak bersyarat yaitu:
 Lompatan pendek (short jump) -> JMP SHORT disp yaitu melakukan lompatan
maksimal sejauh 127 byte.
Contoh:
JMP SHORT 04h ;melakukan lompatan sejauh 4 byte
 Lompatan dekat (near jump) -> JMP disp_low disp_high yaitu melakukan lompatan lebih
panjang maksimal 32 Kb.
Contoh:
JMP 0200h ;melakukan lompatan ke lokasi memori 200h
 Lompatan jauh (far jump) -> JMP FAR iplow Cslow Cshigh yaitu melakukan lompatan
ke seluruh daerah memori.
Contoh:
JMP FAR nH ;melakukan lompatan jauh ke lokasi tertentu
Lompatan bersyarat
Yaitu lompatan pendek yang dilakukan ke seluruh daerah memori dalam segmen memori yang
sama dan terjangkau oleh operasi ini. Instruksi ini menggunakan CMP untuk membandingkan
kondisi yang dicek, sehingga akan melompat ke alamat yang dituju sesuai instruksi lompatan
bersyarat, dimana instruksi lompatan bersyarat antara lain :
 JA (Jump if Above) ; lompat bila operand 1 > operand2 (bilangan tak bertanda)
 JAE (Jump if Above or Equal); lompat bila operand 1 >= operand2 (bilangan tak
bertanda)
 JB (Jump if Below) ; lompat bila operand 1 < operand2 (bilangan tak bertanda)
 JBE (Jump if Below or Equal); lompat bila operand 1 <= operand2 (bilangan tak
bertanda)
 JG (Jump if Greater); lompat bila operand 1 > operand2 (bilangan bertanda)
 JGE (Jump if Greater or Equal) ; lompat bila operand 1 >= operand2 (bilangan
bertanda)
 JL (Jump if Less) ; lompat bila operand 1 < operand2 (bilangan bertanda)
 JLE (Jump if Less or Equal) ; lompat bila operand 1 <= operand2 (bilangan bertanda)
 JC (Jump if Carry) ; lompat bila ada bawaan
 JNC (Jump if No Carry) ; lompat bila tidak ada bawaan
 JE atau JZ (Jump if Equal)/(Jump if Zerro) ; lompat bila operand 1 = operand 2
 JNE atau JNZ (Jump if Not Equal)/(Jump if Not Zero); lompat bila operand 1 <>
operand 2
 JO (Jump on Overflow) ; lompat bila terjadi overflow
 JNO (Jump if No Overflow); lompat bila tidak terjadi overflow
 JS (Jump On Sign) ; lompat bila negatif
 JNS (Jump if No Sign) ; lompat bila positif
 JP atau JPE (Jump on Parity)/(Jump if ParityEven) ; lompat bila berparitas genap
 JNP atau JPO (Jump if No Parity)/(Jump if Parity Odd); lompat bila berparitas ganjil
 JCXZ (Jump if CX is Zero) ; lompat bila CX=0
Uky Yudatama, S.Si, M.Kom
39
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
 JECXZ (Jump if Equal CX is Zero); lompat bila ECX=0 (khusus 80486 ke atas)
Penulisan instruksi lompat bersyarat yang diawali dengan instruksi CMP yang berguna untuk
membandingkan isi register untuk dilompati sesuai kondisi.
Contoh 1:
MOV AX, 0010h ;isi AX dengan 10h
MOV BX, 0012h ;isi BX dengan 12h
106: CMP AX,BX ;bandingkan isi AX dengan BX
JE 10D ;bila sama lompat ke alamat 10D
INC AX ;bila tidak tambahkan isi AX dengan 1
JMP 106 ;kembali ke alamat 106
10D: ADD AX,3 ;tambahkan isi AX dengan 3
INT 20h ;kembali ke prompt DOS
Kita tinggal mengganti instruksi lompat sesuai kebutuhan, apakah memenuhi syarat (Y) atau
tidak memenuhi syarat (T).
Contoh 2:
.model small
.code
org 100h
MULAI: MOV BX, 0000H
ULANG3: MOV DL, 41H
ULANG2: MOV CX,0003H
ULANG1: MOV AH,02H
INT 21H
LOOP ULANG1
INC DL
CMP DL,5BH
JNE ULANG2
MOV DL,0DH
MOV AH,02H
INT 21H
MOV DL,0AH
INT 21H
INC BX
CMP BX,000BH
Uky Yudatama, S.Si, M.Kom
40
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
JLE ULANG3
INT 20H
END MULAI
OPERASI STACK
Pengertian Operasi Stack
Stack (tumpukan) adalah bagian memori yang digunakan untuk menyimpan nilai dari register
hanya sementara saja. Pada stack digunakan pasangan SS:SP untuk menunjukkan lokasi dari
stack. Perintah yang digunakan adalah PUSH (menaruh ke dalam stack), dan POP (mengambil
data dari stack).
Instruksi PUSH untuk operasi stack
Merupakan instruksi untuk memasukkan data ke dalam stack (tumpukan). Data berasal dari data
mentah, register atau isi lokasi memori
Sintaks: PUSH reg
PUSH [lokasi memori]
PUSH data
Contoh:
PUSH BX ; menyimpan isi BX ke stack (16 bit)
PUSH EAX ; menyimpan isi EAX ke stack (32 bit)
PUSH [DI] ; menyimpan isi dari lokasi memori beralamat di
[DSx10h+DI] ke stack
PUSH 12h ; menyimpan data 12h ke stack
Instruksi POP
Merupakan instruksi untuk mengambil kembali data dari stack (kebalikan PUSH) ke dalam
register atau lokasi memori
Sintaks: POP reg
POP [alamat]
POPF ;mengambil isi stack dan ditempatkan di reg flag
Contoh:
POP BX ;mengambil isi stack dan ditempatkan di BX
POP [DI] ;mengambil isi stack dan ditempatkan ke alamat DS:DI
Uky Yudatama, S.Si, M.Kom
41
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Berikut ini contoh program lengkap untuk operasi stack:
;Cara kerja stack
.model small
.code
org 100h
MULAI: JMP START
KAL DB ‘STMIK BS$’
TUKAR DB 13,10,’$’
Stacks DW ?
START: LEA DX, KAL
MOV Stacks, DX
MOV AH, 09h
LEA DX, TUKAR
INT 21h
MOV DX,Stacks
INT 21h
INT 20h
END MULAI
Dari contoh program di atas kita modifikasi menjadi:
.model small
.code
org 100h
MULAI: JMP START
KAL DB ‘STMIK BS$’
TUKAR DB 13,10,’$’
START: LEA DX, KAL
PUSH DX
MOV AH,09h
INT 21h
LEA DX, TUKAR
INT 21h
POP DX
INT 21h
INT 20h
END MULAI
Instruksi PUSHF
Merupakan instruksi untuk memasukkan isi register flag ke dalam stack
Sintaks: PUSHF
Perpindahan data selain MOV
Beberapa instruksi perpindahan data selain memakai MOV meliputi: PUSH, POP, XCHG, LEA,
perpindahan data string (LODS, STOS dan MOVS)
Aturan penulisan operasi perpindahan data (sintaks)
Instruksi XCHG (exchange)
Uky Yudatama, S.Si, M.Kom
42
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Berfungsi untuk menukarkan isi register dengan register lain atau isi register dengan isi lokasi
memori. Tidak berlaku untuk antar lokasi memori.
Sintaks: XCHG reg, reg
XCHG reg, [alamat]
Contoh:
XCHG AX, BX ;menukar isi AX dengan BX
XCHG DX, [DI] ;menukar isi DX dengan isi lokasi memori DI
XCHG [SI], CH ;menukar isi lokasi memori dengan CH
Instruksi LEA (Load Effective Address)
Berfungsi untuk mengambil alamat suatu data pada lokasi memori dan meletakkannya di register
16 bit.
Sintaks: LEA reg, [alamat]
LEA reg, variable
Contoh:
LEA BX, [DI] ;isi alamat di reg DI diambil dan disimpan di BX
LEA BX, VAR1 ;isi alamat offset data dengan label VAR1 diambil dan
disimpan di BX
LEA AX, [SI] ;isi data di lokasi memori SI diambil dan disimpan
di AX
Instruksi LODS (Load String)
Berfungsi untuk memindahkan data string pada segment data yang alamat offsetnya ditunjukkan
oleh isi register SI ke accumulator (AL, AX) akan di-increment (+1) atau decrement (-1). Instruksi
ini ditambah dengan B bila memindahkan byte, W (word) atau D (double word).
Contoh:
LODSB ; data byte di lokasi memori SI dipindah ke reg AL
LODSW ; data word di lokasi memori SI dipindah ke reg AX
LODSD ; data doubleword di lokasi SI dipindah ke reg EAX
LODS DAT1 ;data label DAT1 dipindah ke AL (byte)
LODS DAT2 ;data label DAT2 dipindah ke AX (word)
LODS DAT3 ;data label DAT3 dipindah ke EAX (doubleword)
Uky Yudatama, S.Si, M.Kom
43
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Instruksi STOS (Store string)
Berfungsi memindahkan string pada AL, AX, EAX ke ekstra segment yang alamat offsetnya
ditunjukkan oleh isi DI (ES:DI)
Contoh:
STOSB ;isi AL dipindah ke lokasi memori DI
STOSW ;isi AX dipindah ke lokasi memori DI
STOS DAT1 ;isi AL dipindah ke label DAT1 di alamat DI
Instruksi MOVS (Move string)
Memindahkan isi string dari suatu lokasi memori ke lokasi memori yang lain berupa byte, word
atau double word dari data segment beralamat offset SI ke ekstra segment beralamat offset DI.
Contoh:
MOVSB ;isi lokasi memori berisi byte ke lokasi memori lain
MOVSW ;isi lokasi memori berisi word ke lokasi memori lain
MOVSD ;isi lokasi memori berisi double word ke lokasi lain
• JMP (lompatan) merupakan instruksi untuk melompat ke bagian tertentu dan
mengeksekusi instruksi berikutnya.
• Ada dua jenis lompatan yaitu lompatan tanpa syarat dan lompatan dengan syarat.
• Lompatan tanpa syarat terdiri dari 3 yaitu : Short Jump, Near Jump dan Far Jump
• Lompatan dengan syarat merupakan proses pengambilan keputusan atau operasi
percabangan dengan diikuti oleh instruksi CMP dan instruksi Lompat bersyarat, yaitu
melakukan perbandingan terlebih dahulu suatu isi register apabila telah memenuhi
syarat, maka lompatan bila dijalankan.
• Ada 22 jenis lompatan bersyarat yang digabungkan dengan operasi logika.
• Operasi perpindahan data selain MOV menggunakan instruksi antara lain : PUSH,
POP, XCHG, LEA, perpindahan data string (LODS, STOS dan MOVS).
• Operasi stack sangat penting dipakai untuk menaruh isi data (PUSH) yang suatu
saat dapat diambil kembali dari stack (POP).
• Perintah LEA DX, sama dengan perintah MOV DX,OFFSET sehingga merupakan
alternatif yang dapat dipilih untuk mencetak kalimat.
Uky Yudatama, S.Si, M.Kom
44
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
TUGAS
1. Sebutkan 2 jenis operasi Jump dan berikan contohnya masing-masing!
2. Bagaimana cara melakukan lompatan dalam lompatan dengan memakai operasi loop?
3. Buatlah program lompatan bersyarat untuk membandingkan karakter tertentu!
4. Buatlah program mencetak kalimat dengan mengganti perintah MOV DX, OFFSET
dengan LEA DX.
Pertemuan Ke 11 (Sebelas)
Tujuan Instruksional Khusus
Mengerti dan Memahami input data keybord berupada
ASCII atau Extended.
Pokok Bahasan Input data dari Keyboard.
Sub Pokok Bahasan
- Masukan satu karakter
- Mendeteksi penekanan tombol
- Masukan kalimat dari keyboard
Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly,
Hartono Partoharsojo
2. Pemrograman dengan Bahasa Assembly,
Susanto
3 Microprocessor Programmer’s, referensi Intel Co
INPUT DATA DARI KEYBOARD
Masukan satu karakter
Memasukan data/input data 1 karakter dapat kita buat dengan pelayanan interupsi 21H nomor
service 01H dalam register AH. Instruksi yang umum dipakai adalah:
MOV AH, 01H
INT 21H
Uky Yudatama, S.Si, M.Kom
45
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Data yang dimasukkan melalui penekanan tombol keyboard ini akan ditampung di register AL
berupa kode ASCII.
Contoh:
;Program input 1 karakter dari keyboard
.model small
.code
org 100h
MULAI: JMP START
Tanya db ‘Jawablah pertanyaan di bawah ini ! ‘,13,10
db ‘Apakah anda seorang laki-laki? (Y/T)’,13,10
db ‘Jawaban anda : $’
Jawab1 db 13,10,’Anda adalah seorang laki-laki’,13,10,’$’
Jawab2 db 13,10,’Anda adalah seorang wanita’,13,10,’$’
START: MOV AH, 09H
LEA DX, Tanya
INT 21h
ULANG:
MOV AH, 01H ;input dari keyboard 1 huruf
INT 21h
CMP AL, ‘Y’
JE LAKI
CMP AL, ‘y’
JE LAKI
CMP AL, ‘T’
JE WANITA
CMP AL, ‘T’
JE WANITA
JMP ULANG
WANITA:
MOV AH,09H
LEA DX,Jawab2
INT 21H
JMP SELESAI
LAKI:
MOV AH,09H
LEA DX,Jawab1
INT 21H
SELESAI:
INT 20h
END MULAI
Mendeteksi penekanan tombol
Untuk mendeteksi adanya penekanan tombol tertentu dari keyboard digunakan input huruf
without echo. Ada tiga jenis input per huruf without echo yaitu:
 Input without echo yang mengecek Ctrl Break/Ctrl C.
Untuk melakukan input yang mendeteksi Ctrl Break memakai INT 21H service 08H. Adapun
persyaratannya adalah:
Uky Yudatama, S.Si, M.Kom
46
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
 Nilai AH berisi 08H INT 21H
 Nilai AH ini dapat dihentikan dengan Ctrl Break atau Ctrl C selama proses input
 Data yang diinput ditaruh di register AL.
 Input without echo yang tidak mengecek Ctrl Break/Ctrl C.
Untuk melakukan input yang tidak mendeteksi Ctrl Break atau Ctrl C, memakai INT 21H
service 07H di register AH. Cara pemakaiannya sama dengan AH=08H, perbedaannya
hanya pada saat komputer sedang berjalan misalnya penekanan tombol ctrl break akan
dibiarkan dan dianggap sebagai input.
 Input without echo tanpa menunggu
Maksudnya adalah komputer tidak akan menunggu anda untuk menekan keyboard tetapi
input ini akan diambil dari keyboard buffer, dimana keyboard buffer akan diisi ketika komputer
sedang mengerjakan tugas lain. Jika ternyata keyboard buffer kosong, maka input without
echo tanpa menunggu tidak mengerjakan apa-apa. Adapun persyaratannya adalah sebagai
berikut:
 Register AH diisi dengan service 06H INT 21H
 Register DL harus berisi nilai FFH.
 Hasil input akan diletakkan pada register AL.
Contoh:
;Program input 1 karakter without echo tanpa menunggu
.model small
.code
org 100h
MULAI: JMP START
KATA db ‘Kalimat ini akan dicetak terus $’
START: MOV AH, 09H
LEA DX, KATA
INT 21H
MOV AH, 06H
MOV DL,0FFH
XOR AL, AL
INT 21H
CMP AL, ‘0’
JE AKHIR
CMP AL, ‘q’
JNE MULAI
AKHIR: INT 20H
END MULAI
Uky Yudatama, S.Si, M.Kom
47
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Masukan kalimat dari keyboard
Memasukan data/input data 1 kalimat dapat kita buat dengan pelayanan interupsi 21H nomor
service 0AH dalam register AH. Instruksi yang umum dipakai adalah:
MOV AH, 0AH
MOV DX, OFFSET variabel
INT 21H
Instruksi ini berfungsi untuk mengambil data ke dalam variable, data dalam kalimat dibaca satu
persatu oleh register AL dan disalurkan ke alamat/lokasi memori yang ditunjuk oleh register BX.
Hasilnya disimpan dalam register DX melalui sebuah variabel.
Panjang maksimal kalimat yang diinput harus mengikuti aturan pembuatan variable sebagai
batas karakter yang diinput dari keyboard yaitu:
Nama_variable db XX , ? , YY dup (?)
XX= Jumlah karakter yang akan diinput ditambah 1 untuk tombol enter
YY= Jumlah karakter yang dibaca berikut enternya
YY dup(?) berguna untuk menyatakan berapa tempat yang harus disediakan yaitu YY*1 tempat
kosong yang dapat mewakili tanda tanya (?).
DS:DX merupakan lokasi memori yang berisi segment dan offset awal suatu nama variable yang
akan diisi oleh data.
Contoh:
;Program input 1 kalimat
.model small
.code
org 100h
MULAI: JMP START
KATA db ‘Ketik data maksimum 14 karakter :$’
DATA_MASUK db 15,?,15 dup(?)
START: MOV AH, 09H
LEA DX, KATA
INT 21H
MOV AH, 0AH
MOV DX,0FFSET DATA_MASUK
INT 21H
MOV BX,0FFSET DATA_MASUK
INC BX
MOV AL,[BX]
INC BX
XOR AH, AH
ADD BX, AX
MOV AL, 0
MOV [BX], AL
MOV DX, OFFSET DATA_MASUK
Uky Yudatama, S.Si, M.Kom
48
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
INC DX
INC DX
AKHIR: INT 20H
END MULAI
Isi data yang dimasukkan ke dalam register AL (1 karakter) dan register DX (1 word) dapat
ditampilkan ke layar monitor setelah dipindahkan ke register DL yang dibaca satu persatu dari
lokasi memori yang ditunjuk oleh register BX. Pada saat dipindahkan ke DL maka harus
dilengkapi dengan nomor pelayanan INT 21H service 02H.
Contoh:
MOVSB ;isi lokasi memori berisi byte ke lokasi memori lain
MOVSW ;isi lokasi memori berisi word ke lokasi memori lain
MOVSD ;isi lokasi memori berisi double word ke lokasi lain
MOVS DAT1, VAR1 ;isi label DAT1 ke VAR1
• Operasi perpindahan data selain MOV menggunakan instruksi antara lain : PUSH,
POP, XCHG, LEA, perpindahan data string (LODS, STOS dan MOVS).
• Setiap ada perpindahan data harus mengikuti ketentuan aturan penulisannya
(syntax).
• Perintah LEA DX, sama dengan perintah MOV DX,OFFSET sehingga merupakan
alternatif yang dapat dipilih untuk mencetak kalimat.
•
• Properti target mendefinisikan bagaimana halaman target dari sebuah link.
1.
2.
3.
Uky Yudatama, S.Si, M.Kom
49
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Pertemuan Ke 12 (Duabelas)
Tujuan Instruksional Khusus Mengerti dan Memahami metode pembuatan prosedur
dan macro.
Pokok Bahasan Prosedur dan Macro.
Sub Pokok Bahasan - Membuat prosedur
- Membuat macro
- Menggabungkan prosedur & macro
Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly,
Hartono Partoharsojo
2. Pemrograman dengan Bahasa Assembly,
Susanto
3 Microprocessor Programmer’s, referensi Intel Co
PROSEDUR DAN MACRO
Prosedur dan macro adalah fasilitas yang terdapat pada turbo assembler.
Prosedur
Prosedur adalah sekelompok instruksi yang dibangun untuk melakukan tugas-tugas tertentu agar
dapat memperpendek jumlah baris program. Prosedur dapat dipanggil secara berulang-ulang
oleh program utama dengan instruksi CALL.
Penggunaan prosedur dapat mengurangi jumlah alamat memori yang digunakan pada program.
Kerangka Dasar prosedur:
Uky Yudatama, S.Si, M.Kom
50
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Nama_prosedur PROC NEAR/FAR ;nama prosedur
----------
---------- Isi Prosedur
----------
----------
RET ;kembali ke program utama
Nama_prosedur ENDP ;akhir prosedur
PROC = Procedur RET= RETURN
NEAR = Lokasi prosedur dekat dengan program utama
FAR = Lokasi prosedur jauh dari program utama
Contoh:
.model small
.code
org 100h
MULAI: MOV CX,05h ;isi CX dilooping 5 kali
MOV DL,’A’ ;Karakter A disimpan di DL
ULANG: CALL CETAK ;cetak di layar
INC DL ;tambahkan isi DL dengan 1
LOOP ULANG ;kembali ke ULANG
EXIT: INT 20h ;kembali ke DOS
CETAK PROC NEAR ;prosedur CETAK
MOV AH, 02h ;nomor servis 02H
INT 21h ;cetak di layar
RET ;kembali ke program utama
CETAK ENDP ;akhir prosedur
END MULAI
MACRO
Hampir mirip dengan prosedur dan tidak perlu dipanggil dengan CALL dan RET. Hanya
cukup dipanggil dengan mengeksekusi namanya. Macro mengenal parameter yang
bersifat optional (boleh ada atau tidak), tergantung kebutuhan.
Kerangka Umum:
Nama_makro MACRO [P1,P2] ;nama makro
.........
......... Isi makro
.........
ENDM ;akhir makro
[P1,P2] adalah parameter yang digunakan (optional)
Contoh 1:
;Program dengan Makro
CETAK MACRO KAR
MOV DL, KAR
Uky Yudatama, S.Si, M.Kom
51
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
MOV AH, 02h
INT 21h
ENDM
.model small
.code
org 100h
MULAI: CETAK ‘A’
CETAK ‘B’
CETAK ‘C’
CETAK ‘D’
CETAK ‘E’
EXIT: INT 20h
END MULAI
Contoh 2:
;Program Mencetak String (Kalimat)
CETAK MACRO KAL
LEA DX,KAL
MOV AH, 09h
INT 21h
ENDM
.model small
.code
org 100h
MULAI: JMP START
TULIS1 DB ‘Saya sedang belajar Assembler’,13,10
DB ‘Ternyata asyik juga$’
TULIS2 DB ‘Materi sekarang tentang makro$’
START: CETAK TULIS1
CETAK TULIS2
INT 20h
END MULAI
• Link dapat juga mengacu kepada alamat situs, misalnya http://www.google.co.id
• Properti target mendefinisikan bagaimana halaman target dari sebuah link
ditampilkan, apakah _blank (menampilkan pada browser window baru), _parent
(menampilkan pada dokumen tempat frame berada), _self (menampilkan pada
browser aktif), atau _top (menampilkan pada halaman utama).
1.
Uky Yudatama, S.Si, M.Kom
52
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
2.
3.
Pertemuan Ke 13 (Tigabelas)
Tujuan Instruksional Khusus Mengerti dan Memahami mode pengaturan layer.
Pokok Bahasan Operasi pada layar.
Sub Pokok Bahasan - Memori layar
- Tampilan teks pada layar
- Bentuk Kursor
- Mode layar
Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly,
Hartono Partoharsojo
2. Pemrograman dengan Bahasa Assembly,
Susanto
3 Microprocessor Programmer’s, referensi Intel Co
OPERASI PADA LAYAR
MEMORI LAYAR
.model small
.code
org 100h
MULAI: -------
TAMPILAN TEKS PADA LAYAR
.model small
.code
org 100h
Uky Yudatama, S.Si, M.Kom
53
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
MULAI: -------
POSISI KURSOR
.model small
.code
org 100h
MULAI: -------
MODE LAYAR
.model small
.code
org 100h
MULAI: -------
• Link dapat juga mengacu kepada alamat situs, misalnya http://www.google.co.id
• Properti target mendefinisikan bagaimana halaman target dari sebuah link
ditampilkan, apakah _blank (menampilkan pada browser window baru), _parent
(menampilkan pada dokumen tempat frame berada), _self (menampilkan pada
browser aktif), atau _top (menampilkan pada halaman utama).
1.
2.
3.
Uky Yudatama, S.Si, M.Kom
54
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Pertemuan Ke 14 (Empatbelas)
Tujuan Instruksional Khusus
Mengerti dan Memahami pengaksesan port.
Penanganan File.
Pokok Bahasan
Akses Port dan pengaktifan speaker.
Operasi File.
Sub Pokok Bahasan - Macam-macam Port
- Pengaksesan alamat port
- Penanganan File
- Atribut File
Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly,
Hartono Partoharsojo
2. Pemrograman dengan Bahasa Assembly,
Susanto
3 Microprocessor Programmer’s, referensi Intel Co
AKSES PORT
Pengertian Port
Macam-macam Port
Pengaksesan alamat port
Persyaratan untuk
Contoh program
.model small
.code
org 100h
Uky Yudatama, S.Si, M.Kom
55
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
MULAI: -------
Penanganan File
A. Manajemen File
- Membuat Directory/Subdirectory
Persyaratan untuk
Contoh program
.model small
.code
org 100h
MULAI: -------
- Menghapus Directory/Subdirectory
Persyaratan untuk
Contoh program
.model small
.code
org 100h
MULAI: -------
- Mengubah Directory/Subdirectory
Persyaratan untuk
Contoh program
.model small
.code
org 100h
MULAI: -------
B. Hapus File
Persyaratan untuk menghapus file
Uky Yudatama, S.Si, M.Kom
56
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Contoh program
.model small
.code
org 100h
MULAI: -
C. Atribut File
Persyaratan untuk atribut file
Jenis atribut file pada DOS antara lain:
- Read Only
- Hidden
- Sistem
- Archive
- Volume Label
- Nama subdirectory
DOS menyediakan fungsi service number 43h INT 21h untuk mengatur atribut file
dengan mode AL = 00 (melihat atribut file), AL = 01 (untuk mengubah atribut file) dan
jenis atribut ditampung di CX yaitu nomor:
- 0 untuk file read only
- 1 untuk file hidden (sembunyikan file)
- 2 untuk file sistem
- 3 untuk Volume label
- 4 untuk Nama subdirectory
- 5 untuk file archive
Read only
Persyaratan untuk Read only:
Contoh program untuk read only (file yang tidak bisa dihapus)
.model small
.code
org 100h
MULAI: -------
Hidden file
Persyaratan untuk Hidden file:
Contoh program untuk hidden file
.model small
.code
org 100h
MULAI: -------
Archive
Uky Yudatama, S.Si, M.Kom
57
BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)
Persyaratan untuk Archive file:
Contoh program untuk archive (file yang dapat dibaca dan dihapus)
.model small
.code
org 100h
MULAI: -------
• Link dapat juga mengacu kepada alamat situs, misalnya http://www.google.co.id
• Properti target mendefinisikan bagaimana halaman target dari sebuah link
ditampilkan, apakah _blank (menampilkan pada browser window baru), _parent
(menampilkan pada dokumen tempat frame berada), _self (menampilkan pada
browser aktif), atau _top (menampilkan pada halaman utama).
1.
2.
3.
Uky Yudatama, S.Si, M.Kom
58

Mais conteúdo relacionado

Mais procurados

14684664 mikroprosesor
14684664 mikroprosesor14684664 mikroprosesor
14684664 mikroprosesor
Abe Mubarok
 
Mp 4 mode-pengalamatan
Mp 4 mode-pengalamatanMp 4 mode-pengalamatan
Mp 4 mode-pengalamatan
Olbers Letfaar
 

Mais procurados (17)

14684664 mikroprosesor
14684664 mikroprosesor14684664 mikroprosesor
14684664 mikroprosesor
 
Pertemuan 1
Pertemuan 1Pertemuan 1
Pertemuan 1
 
Pertemuan 9 pengalamatan
Pertemuan 9 pengalamatanPertemuan 9 pengalamatan
Pertemuan 9 pengalamatan
 
Pemrograman komputer
Pemrograman komputerPemrograman komputer
Pemrograman komputer
 
Kumpulan catatan Teknik Kompilasi
Kumpulan catatan Teknik KompilasiKumpulan catatan Teknik Kompilasi
Kumpulan catatan Teknik Kompilasi
 
1 adp dasar-dasar algoritma
1   adp dasar-dasar algoritma1   adp dasar-dasar algoritma
1 adp dasar-dasar algoritma
 
Materi mode format pengalamatan
Materi mode format pengalamatanMateri mode format pengalamatan
Materi mode format pengalamatan
 
Mp 4 mode-pengalamatan
Mp 4 mode-pengalamatanMp 4 mode-pengalamatan
Mp 4 mode-pengalamatan
 
1 adp dasar-dasar pemrograman
1   adp dasar-dasar pemrograman1   adp dasar-dasar pemrograman
1 adp dasar-dasar pemrograman
 
Modul algoritma pemrograman-dasar x rpl
Modul algoritma pemrograman-dasar x rplModul algoritma pemrograman-dasar x rpl
Modul algoritma pemrograman-dasar x rpl
 
Dasar pemrograman pascal
Dasar pemrograman pascalDasar pemrograman pascal
Dasar pemrograman pascal
 
Teknik kompilasi
Teknik kompilasiTeknik kompilasi
Teknik kompilasi
 
dasar-dasar pemrograman
dasar-dasar pemrogramandasar-dasar pemrograman
dasar-dasar pemrograman
 
1 ADP Algoritma
1   ADP Algoritma1   ADP Algoritma
1 ADP Algoritma
 
Tutor Tasm2
Tutor Tasm2Tutor Tasm2
Tutor Tasm2
 
penyajian algoritma
penyajian algoritmapenyajian algoritma
penyajian algoritma
 
Teknik kompilasi
Teknik kompilasi Teknik kompilasi
Teknik kompilasi
 

Semelhante a Handout rakitan

Pembelajaran Jaringan [3]
Pembelajaran Jaringan [3]Pembelajaran Jaringan [3]
Pembelajaran Jaringan [3]
walidumar
 
Pembelajaran-3 (Jaringan Komputer) Pengenalan Protocol Jaringan
Pembelajaran-3 (Jaringan Komputer) Pengenalan Protocol JaringanPembelajaran-3 (Jaringan Komputer) Pengenalan Protocol Jaringan
Pembelajaran-3 (Jaringan Komputer) Pengenalan Protocol Jaringan
Kelompok Studi Linux UNG
 
Pengantar sistem teknologi informasi (tugas 1)
Pengantar sistem teknologi informasi (tugas 1)Pengantar sistem teknologi informasi (tugas 1)
Pengantar sistem teknologi informasi (tugas 1)
Yudi WindyatmiKabilly
 

Semelhante a Handout rakitan (20)

Tutorial Emulator 8086.pdf
Tutorial Emulator 8086.pdfTutorial Emulator 8086.pdf
Tutorial Emulator 8086.pdf
 
Mikroprosesor
MikroprosesorMikroprosesor
Mikroprosesor
 
Bahasa rakitan 2
Bahasa rakitan 2Bahasa rakitan 2
Bahasa rakitan 2
 
Arsitektur dan desain set
Arsitektur dan desain setArsitektur dan desain set
Arsitektur dan desain set
 
Bernis Sagita - Konsep Dasar Sistem Komputer
Bernis Sagita - Konsep Dasar Sistem KomputerBernis Sagita - Konsep Dasar Sistem Komputer
Bernis Sagita - Konsep Dasar Sistem Komputer
 
MAKALAH PENGANTAR TEKNOLOGI INFORMASI
MAKALAH PENGANTAR TEKNOLOGI INFORMASIMAKALAH PENGANTAR TEKNOLOGI INFORMASI
MAKALAH PENGANTAR TEKNOLOGI INFORMASI
 
Pert.2 instruksi mesin dan program
Pert.2 instruksi mesin dan programPert.2 instruksi mesin dan program
Pert.2 instruksi mesin dan program
 
Pembelajaran Jaringan [3]
Pembelajaran Jaringan [3]Pembelajaran Jaringan [3]
Pembelajaran Jaringan [3]
 
Pembelajaran-3 (Jaringan Komputer) Pengenalan Protocol Jaringan
Pembelajaran-3 (Jaringan Komputer) Pengenalan Protocol JaringanPembelajaran-3 (Jaringan Komputer) Pengenalan Protocol Jaringan
Pembelajaran-3 (Jaringan Komputer) Pengenalan Protocol Jaringan
 
03 dasar sistem komputer
03 dasar sistem komputer03 dasar sistem komputer
03 dasar sistem komputer
 
Materi 2
Materi 2Materi 2
Materi 2
 
K1
K1K1
K1
 
Cache memory
Cache memoryCache memory
Cache memory
 
2. mengenal bahasa rakitan
2. mengenal bahasa rakitan2. mengenal bahasa rakitan
2. mengenal bahasa rakitan
 
Pengantar teknologi informasi
Pengantar teknologi informasiPengantar teknologi informasi
Pengantar teknologi informasi
 
3. memori jul
3. memori jul3. memori jul
3. memori jul
 
Pertemuan 3 Mikroprosessor dan Mikrokontroler
Pertemuan 3 Mikroprosessor dan MikrokontrolerPertemuan 3 Mikroprosessor dan Mikrokontroler
Pertemuan 3 Mikroprosessor dan Mikrokontroler
 
Tugas b log
Tugas b logTugas b log
Tugas b log
 
Dasar sistem komputer Doc.
Dasar sistem komputer Doc.Dasar sistem komputer Doc.
Dasar sistem komputer Doc.
 
Pengantar sistem teknologi informasi (tugas 1)
Pengantar sistem teknologi informasi (tugas 1)Pengantar sistem teknologi informasi (tugas 1)
Pengantar sistem teknologi informasi (tugas 1)
 

Último

Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptxBab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
ssuser35630b
 

Último (20)

Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptx
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptxKontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptx
Kontribusi Islam Dalam Pengembangan Peradaban Dunia - KELOMPOK 1.pptx
 
DEMONSTRASI KONTEKSTUAL MODUL 1.3 CGP 10.pptx
DEMONSTRASI KONTEKSTUAL MODUL 1.3 CGP 10.pptxDEMONSTRASI KONTEKSTUAL MODUL 1.3 CGP 10.pptx
DEMONSTRASI KONTEKSTUAL MODUL 1.3 CGP 10.pptx
 
MODUL AJAR IPAS KELAS 6 KURIKULUM MERDEKA
MODUL AJAR IPAS KELAS 6 KURIKULUM MERDEKAMODUL AJAR IPAS KELAS 6 KURIKULUM MERDEKA
MODUL AJAR IPAS KELAS 6 KURIKULUM MERDEKA
 
AKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMM
AKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMMAKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMM
AKSI NYATA BERBAGI PRAKTIK BAIK MELALUI PMM
 
Stoikiometri kelas 10 kurikulum Merdeka.ppt
Stoikiometri kelas 10 kurikulum Merdeka.pptStoikiometri kelas 10 kurikulum Merdeka.ppt
Stoikiometri kelas 10 kurikulum Merdeka.ppt
 
LATAR BELAKANG JURNAL DIALOGIS REFLEKTIF.ppt
LATAR BELAKANG JURNAL DIALOGIS REFLEKTIF.pptLATAR BELAKANG JURNAL DIALOGIS REFLEKTIF.ppt
LATAR BELAKANG JURNAL DIALOGIS REFLEKTIF.ppt
 
Integrasi nasional dalam bingkai bhinneka tunggal ika
Integrasi nasional dalam bingkai bhinneka tunggal ikaIntegrasi nasional dalam bingkai bhinneka tunggal ika
Integrasi nasional dalam bingkai bhinneka tunggal ika
 
Prakarsa Perubahan ATAP (Awal - Tantangan - Aksi - Perubahan)
Prakarsa Perubahan ATAP (Awal - Tantangan - Aksi - Perubahan)Prakarsa Perubahan ATAP (Awal - Tantangan - Aksi - Perubahan)
Prakarsa Perubahan ATAP (Awal - Tantangan - Aksi - Perubahan)
 
MATEMATIKA EKONOMI MATERI ANUITAS DAN NILAI ANUITAS
MATEMATIKA EKONOMI MATERI ANUITAS DAN NILAI ANUITASMATEMATIKA EKONOMI MATERI ANUITAS DAN NILAI ANUITAS
MATEMATIKA EKONOMI MATERI ANUITAS DAN NILAI ANUITAS
 
MODUL AJAR BAHASA INDONESIA KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR BAHASA INDONESIA KELAS 6 KURIKULUM MERDEKA.pdfMODUL AJAR BAHASA INDONESIA KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR BAHASA INDONESIA KELAS 6 KURIKULUM MERDEKA.pdf
 
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptxBab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
Bab 7 - Perilaku Ekonomi dan Kesejahteraan Sosial.pptx
 
PPT AKSI NYATA KOMUNITAS BELAJAR .ppt di SD
PPT AKSI NYATA KOMUNITAS BELAJAR .ppt di SDPPT AKSI NYATA KOMUNITAS BELAJAR .ppt di SD
PPT AKSI NYATA KOMUNITAS BELAJAR .ppt di SD
 
Contoh Laporan Observasi Pembelajaran Rekan Sejawat.pdf
Contoh Laporan Observasi Pembelajaran Rekan Sejawat.pdfContoh Laporan Observasi Pembelajaran Rekan Sejawat.pdf
Contoh Laporan Observasi Pembelajaran Rekan Sejawat.pdf
 
MODUL P5 KEWIRAUSAHAAN SMAN 2 SLAWI 2023.pptx
MODUL P5 KEWIRAUSAHAAN SMAN 2 SLAWI 2023.pptxMODUL P5 KEWIRAUSAHAAN SMAN 2 SLAWI 2023.pptx
MODUL P5 KEWIRAUSAHAAN SMAN 2 SLAWI 2023.pptx
 
7.PPT TENTANG TUGAS Keseimbangan-AD-AS .pptx
7.PPT TENTANG TUGAS Keseimbangan-AD-AS .pptx7.PPT TENTANG TUGAS Keseimbangan-AD-AS .pptx
7.PPT TENTANG TUGAS Keseimbangan-AD-AS .pptx
 
vIDEO kelayakan berita untuk mahasiswa.ppsx
vIDEO kelayakan berita untuk mahasiswa.ppsxvIDEO kelayakan berita untuk mahasiswa.ppsx
vIDEO kelayakan berita untuk mahasiswa.ppsx
 
RENCANA & Link2 Materi Pelatihan_ "Teknik Perhitungan TKDN, BMP, Preferensi H...
RENCANA & Link2 Materi Pelatihan_ "Teknik Perhitungan TKDN, BMP, Preferensi H...RENCANA & Link2 Materi Pelatihan_ "Teknik Perhitungan TKDN, BMP, Preferensi H...
RENCANA & Link2 Materi Pelatihan_ "Teknik Perhitungan TKDN, BMP, Preferensi H...
 
Lingkungan bawah airLingkungan bawah air.ppt
Lingkungan bawah airLingkungan bawah air.pptLingkungan bawah airLingkungan bawah air.ppt
Lingkungan bawah airLingkungan bawah air.ppt
 
CAPACITY BUILDING Materi Saat di Lokakarya 7
CAPACITY BUILDING Materi Saat di Lokakarya 7CAPACITY BUILDING Materi Saat di Lokakarya 7
CAPACITY BUILDING Materi Saat di Lokakarya 7
 
KELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKA
KELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKAKELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKA
KELAS 10 PERUBAHAN LINGKUNGAN SMA KURIKULUM MERDEKA
 

Handout rakitan

  • 1. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) Pertemuan Ke 1 (Satu) Tujuan Instruksional Khusus Mengerti dan Memahami Assembler dan Sistem bilangan Pokok Bahasan Pengenalan Bahasa Rakitan dan Sistem Bilangan Sub Pokok Bahasan Pengenalan Bahasa Rakitan Sistem bilangan biner - Sistem bilangan oktal - Sistem bilangan desimal - Sistem bilangan hexadesimal Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly, Hartono Partoharsojo 2. Pemrograman dengan Bahasa Assembly, Susanto 3. Microprocessor Programmer’s, referensi Intel Co Apa Itu Bahasa Rakitan (Assembler) ? Bahasa Rakitan termasuk ke dalam bahasa tingkat rendah dan merupakan bahasa dasar komputer. Bahasa ini memerlukan logika yang cukup rumit di samping instruksinya yang jauh berbeda dengan bahasa pemrograman lainnya. Program yang dihasilkan memiliki kecepatan yang paling baik. Kelebihan dari bahasa rakitan adalah : 1. Memiliki fasilitas fungsi dan makro (ciri khas bahasa pemrograman yang menyebabkan pemrograman menjadi lebih mudah). 2. Program dapat dibuat secara modular (dipecah dalam modul-modul kecil dan dapat diintegrasikan kembali). 3. Ukuran program lebih kecil, sehingga lebih menghemat media penyimpan. 4. Lebih dekat ke hardware sehingga seluruh kemampuan komputer dapat dimanfaatkan secara maksimal. Apa saja yang diperlukan untuk belajar Bahasa Rakitan atau Assembler ? Untuk mempelajarai bahasa rakitan / assembler diperlukan : 1. Sistem bilangan antara lain Biner, Oktal, Desimal dan Hexadesimal 2. Pengenalan Microprocessor 3. Sistem Memori dan Pengalamatan Memori 4. Interupt / Interupsi 5. Register 6. Instruksi Assembly atau Mnemonic 7. Mode pengalamatan data 8. Operasi-operasi pada assembler 9. Pembuatan program Sistem Bilangan Untuk mempelajari bahasa rakitan kita harus mengenal beberapa sistem bilangan yang sangat berguna dalam pengaksesan port ataupun menghafal kode ASCII yang penting. Bilangan Uky Yudatama, S.Si, M.Kom 1
  • 2. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) desimal sering kita gunakan sehari-hari untuk segala keperluan, sedangkan bilangan lainnya sangat dibutuhkan dalam pemrograman bahasa rakitan atau assembler, karena bahasa ini dipakai untuk menjalankan sistem mikroprosessor. Setiap mikroprosesor memiliki bahasa rakitan sendiri. Adapun sistem bilangan yang dipelajari adalah sebagai berikut : 1. Bilangan Biner Bilangan ini hanya mengenal angka 0 dan 1 sehingga bilangan ini berdasar 2. Cara mengkonversi ke bilangan desimal adalah dengan mengalikan dua dengan pangkat N (suku ke-N) seperti bilangan desimal mengalikan 10 dengan pangkat N Contoh: 1110 (biner) dikonversi ke desimal menjadi : (1 * 23 ) + (1 * 22 ) + (1 * 21 ) + (0 * 20) = 8 + 4 + 2 + 0 = 14 (desimal) - Operasi tambah pada sistem biner : 0 + 0 = 00 1 + 0 = 01 0 + 1 = 01 1 + 1 = 11 Contoh : 1110001 + 1011000 = 11001001 (biner) desimalnya : 113 + 89 = 201 2. Bilangan Oktal Bilangan Oktal merupkan bilangan berdasar 8. Jadi bilangan ini hanya terdiri dari angka 0 hingga 7. Konversi bilangan octal ke desimal mempunyai cara yang sama dengan bilangan biner, hanya memakai bilangan dasar 8. Contoh: 355 bilangan octal ke desimal 355 oktal = (3 * 82 ) + (5 * 81 ) + (5 * 80 ) = 192 + 40 + 5 = 237 desimal 3. Bilangan Desimal Bilangan ini sudah tidak asing lagi, karena digunakan dalam kehidupan sehari-hari. Sistem bilangan ini terdiri dari angka 0 sampai 9 dengan menggunakan dasar 10. Uky Yudatama, S.Si, M.Kom 2
  • 3. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) 4. Bilangan Hexadesimal Bilangan ini mutlak harus dikuasai, karena dalam bahasa rakitan kita sering menemukan bilangan ini. Kode ASCII ditulis dalam bilangan hexadesimal yang mewakili huruf, angka, tanda baca dan karakter unik lainnya sebanyak 255 buah. Bilangan hexadesimal merupakan bilangan dasar 16 terdiri dari : 0123456789ABCDEF Cara mengkonversi ke bilangan desimal sama dengan biner dan octal Contoh: 3A hexa = (3 * 161 ) + (10 * 160 ) = 48 + 10 = 58 desimal • Bahasa Rakitan atau Assembler merupakan bahasa tingkat rendah / low level language digunakan dalam computer untuk Sistem Operasi, Compiler, penanganan file dan operasi-operasi mikroprosesor. • Setiap digit bilangan biner disebut satu bit. Terdiri dari 0 dan 1 • Bilangan Octal merupakan bilangan dasar 8 terdiri dari 0 s/d 7 • Bilangan Desimal merupakan bilangan dasar 10 yang sudah sering dipakai. • Bilangan Hexadesimal merupakan bilangan dasar 16 terdiri dari 0 – 9ABCDEF dan dipakai dalam kode ASCII dank ode-kode lainnya. TUGAS 1. Jelaskan mengenai bahasa rakitan? 2. Apa saja yang diperlukan untuk mempelajari bahasa rakitan/assembler? 3. Buatlah beberapa contoh bilangan dan konversikan sendiri bilangan tersebut menjadi beberapa sistem bilangan. Uky Yudatama, S.Si, M.Kom 3
  • 4. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) Pertemuan Ke 2 (Dua) Tujuan Instruksional Khusus Mengerti dan Memahami konsep memori pada PC Pokok Bahasan Memori Sub Pokok Bahasan - Pengertian Memori PC - Pembagian Memori PC - Pengalamatan Memori PC Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly, Hartono Partoharsojo 2. Pemrograman dengan Bahasa Assembly, Susanto 3. Microprocessor Programmer’s, referensi Intel Co Memori Pengertian Memori Merupakan bagian terpenting dalam komputer untuk menyimpan data dan program. Dalam microprosesor 8088 terdapat 16 saluran alamat (address) dan 8 saluran data secara multiplex. Saluran alamat lainnya yang tersedia ada 4, khusus untuk menunjuk segmen memori, dimana tiap segment menjangkau memori sebesar 64 kliobyte. Sehingga dari 16 saluran alamat dapat menggarap isi memori hingga 1 megabyte dan bekerja dengan data 16 bit. Ukuran memori 1 kilobyte = 1024 byte, 1 megabyte = 1024 x 1024 byte = 1.048.576 byte. Maka alamat memori dari 0 sampai 1 megabyte memerlukan penulisan dengan 5 digit angka hexadesimal dari 00000H sampai FFFFFH. Sebagai contoh : Memori di PC XT 640 kilobyte terdiri dari alamat 00600H sampai alamat A0000H.RAM dan ROM merupakan komponen IC yang dapat menyimpan data dan program yang dapat dialamati terdiri dari jalur alamat (address) dan jalur data. RAM dapat menulis dan membaca data, sedangkan ROM hanya membaca saja. Kombinasi saluran/jalur data berupa 8 bit atau 16 bit yang dinyatakan dalam bilangan hexadesimal. Sedangkan jalur alamat (address) memiliki pola yang sama dengan jalur data memakai bilangan hexadesimal. Sekarang telah berkembang memori dengan jumlah saluran 32 bit dan 64 bit. Tempat menyimpan data ukuran 1 byte di RAM dan ROM harus diberi nomor urut agar mudah diidentifikasi berupa alamat memori (memori address). Jika ada data berupa 5AH disalurkan melalui jalur data ke memori dengan alamat memori 0F2B4H, maka berarti di lokasi memori nomor 0F2B4H terdapat data 5AH. Memori dengan jalur alamat yang banyak akan memiliki kapasitas simpan yang dinyatakan dalam byte, kilobyte, megabyte atau gigabyte. Uky Yudatama, S.Si, M.Kom 4
  • 5. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) Memori berkapasitas 64 KB berarti memiliki kemampuan merekam 64 x 1024 byte data. Suatu media penyimpan berupa Hard disk 10 M berarti memiliki kapasitas rekam 10 x 1024 x 1024 byte. Istilah dalam memori yang sangat lazim dan sering ditemui dalam setiap pemrograman bahasa rakitan adalah :  Bit adalah singkatan dari binary digit  Byte adalah 8 bit  Word adalah 2 byte Pembagian memori Diantara register dalam CPU untuk mencatat alamat memori yang dipergunakan terdapat segment register digabung dengan offset register yang mengatur pembagian memori. Offset register dapat berupa register lain yang bukan segment register dengan aturan pasangan : SSSS : OOOO S = digit hexadesimal pada segment register O O = digit hexadesimal pada offset register Satu segment memori berukuran 64 kilobyte terbagi atas beberapa segment offset yang dapat dialamati oleh offset register. Sedangkan memori (RAM & ROM) pada PC dapat terdiri dari beberapa/banyak segment memori tergantung kapasitas memori pada PC tersebut. Pengalamatan Memori Merupakan suatu cara untuk mencatat atau menunjuk alamat memori sesuai aturan pasangan SSSS : OOOO artinya penulisan alamat memori menuruti aturan bahwa bobot digit terendah pada Segment Register adalah 16 pangkat 1 dan bobot tertinggi 16 pangkat 4. Sedangkan pada Offset Register bobot digit terendah adalah 16 pangkat 0 dan bobot digit tertinggi 16 pangkat 3. Contoh: Misalkan: SSSS dipilih 1234H OOOO dipilih DCBAH Maka pengalamatan memori dapat dinyatakan 1234:DCBA. Angka alamat absolutnya dapat dihitung dari : 12340 0DCBA + 1FFFA Cara penulisan alamat memori 1234:DCBA memberi alamat absolute 1FFFAH. Penunjukan alamat memori oleh mikroprosesor dilakukan oleh register BX. Uky Yudatama, S.Si, M.Kom 5
  • 6. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) Jika kita ingin menaruh data dengan pencatatan alamat memori memakai segment register BX dan offset register DS. Pencatatan alamat dinyatakan dengan rumus DS:BX Contoh: 0100 : 0234 artinya DS mencatat 0100H, BX mencatat 0234H Alamat memori 0000 : 0234 dapat dinyatakan dengan : DS:BX+DI yaitu DS berisi 0000, BX diisi 0200H dan DI diisi 0034H Penulisan BX+DI disebut offset address terhadap segment address. • Memori pada dasarnya dapat menyimpan data dan program yang bersifat sementara.. • Memori memiliki jalur data dan jalur alamat (address) agar dapat diidentifikasi oleh microprosessor pada saat sedang membaca data dan program. • Memori memiliki kapasitas dalam satuan byte, kilobyte, megabyte, gigabyte dll. • Pengalamatan memori diatur berdasarkan pembagian segment dan offset. • Satu byte data dimemori memiliki satu alamat offset. • Penunjukkan alamat memori dilakukan oleh CPU dengan memanfaatkan register BX. • Pencatatan alamat memori dapat ditulis dengan DS:BX atau DS:BX+DI TUGAS 1. Jelaskan pengertian memori? 2. Jelaskan perbedaan RAM dan ROM? 3. Bagaimana cara melakukan pembagian memori? 4. Jelaskan cara pengalamatan memori untuk mendapatkan alamat absolute? 5. Apa saja yang diperlukan untuk mempelajari bahasa rakitan/assembler? 6. Buatlah beberapa contoh bilangan dan konversikan sendiri bilangan tersebut menjadi beberapa sistem bilangan. Uky Yudatama, S.Si, M.Kom 6
  • 7. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) Pertemuan Ke 3 (Tiga) Tujuan Instruksional Khusus Mengerti dan Memahami sistem bilangan Pokok Bahasan Interrupt dan Register Sub Pokok Bahasan - Pengertian Interrupt - Pengertian Register - Jenis-jenis Register Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly, Hartono Partoharsojo 2. Pemrograman dengan Bahasa Assembly, Susanto 3. Microprocessor Programmer’s, referensi Intel Co Interrupt dan Register Pengertian Interrupt Interrupt atau interupsi adalah proses dalam komputer untuk meminta dilayani oleh mikroprosesor sesuai dengan tingkat prioritasnya yang telah diatur sedemikian rupa oleh sistem hardware computer. CPU banyak melaksanakan routin untuk melakukan pelayanan pemrosesan ataupun koordinasi kepada IC penunjang atau chipset dan peripherals pada saat diperlukan. Sehingga CPU dapat melakukan operasi dengan 2 cara yaitu : 1. Operasi dengan polling 2. Opreasi dengan interrupt Operasi dengan polling berarti CPU selalu terus menerus menanyakan/ memantau ke tiap-tiap komponen penunjang satu persatu meskipun komponen itu sedang tidak memerlukan pelayanan. Sedangkan operasi interrupt atau interupsi dilakukan oleh tiap-tiap komponen kepada CPU bilamana memerlukan pelayanan pemrosesan, sehingga CPU tidak terus-menerus menanyakan /memantau komponen itu. Setiap interupsi yang datang di kontrol oleh interrupt controller di luar CPU. Dalam keadaan CPU terkena interupsi, maka CPU untuk sesaat menghentikan kegiatan pelayanan utama dan beralih melayani komponen yang menginterupsinya. Setelah selesai dilayani CPU kembali melakukan pelayanan utamanya. Cara interupsi sangat meningkatkan effisiensi operasi CPU dan melakukan tugasnya dengan cepat. Interupsi dapat dilakukan dengan cara hardware dan software, sehingga CPU dapat menerima 3 macam interupsi antara lain : Uky Yudatama, S.Si, M.Kom 7
  • 8. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) 1. Interupsi software (instruksi INT nH n= bilangan 00H s/d FFH) 2. Non Maskable Interrupt (Interupsi hardware dimana interupsi ini mutlak tidak dapat dicegah karena berasal dari sistem board atau IC. 3. Maskable Interrupt (berasal dari hardware melalui pin INTR) yang dapat ditutup atau dicegah dengan instruksi CLI berasal dari interupsi perangkat lunak. Interupsi software terdiri dari 256 dan diberi nomor 00H hingga FFH. Alamat awal masing- masing program pelayanan terdiri dari 4 byte, 2 byte untuk Code Segment dan 2 byte untuk Instruction Pointer. Dalam pemrograman assembler kita dapat melakukan interupsi secara software dengan perintah INT yang dapat dilihat dalam tabel interupsi. Interrupt Software dalam PC terbagi dua yaitu : 1. Interrupt BIOS (Basic Input Output Sistem) 2. Interrupt DOS (Disk Operating Sistem) Interrupt BIOS diwujudkan dalam bentuk interupsi software berjumlah 32 dan akses pelayanannya tinggal memerintahkan dengan instruksi INT nH asal parameternya diwajibkan telah terpenuhi dahulu. INT nH terdiri dari 00H sampai 1FH yang disusun berurutan dan diberi servis number (nomor pelayanan) tersendiri. Interrupt DOS merupakan interupsi dari software Sistem Operasi terdiri dari INT 20H untuk kembali ke DOS dan INT 21H untuk operasi Input/Output. Pengertian Register Register tidak dapat dilepaskan dari mikroprosessor, sebab pada mikroprosessor terdapat register yang berfungsi untuk menyimpan sementara hasil dari tahapan operasi arithmetika dan logika pada mikroprosessor. Register dalam bahasa rakitan menggunakan real mode memory yang sesuai dengan mikroprosessor Intel generasi 8088 s/d Pentium. Register yang terdapat pada mikroprosessor Intel terdiri dari : 1. General purpose register (register serbaguna) 2. Pointer register (register pointer) 3. Index register (register indeks) 4. Segment register (register segment) 5. Flag register (register status). Semua register di atas lebarnya 32 bit, kecuali register segment (CS, DS, ES, SS, FS dan GS) hanya 16 bit. Register 32 bit dapat digunakan sebagai register 16 bit, kecuali register General purpose register dapat dibagi menjadi 8 bit (AL,AH, BL, BH, CL, CH, DL dan DH) yang berasal dari 16 bit (AX, BX, CX, DX). Register 32 bit diberi kode di depan register dengan E misalnya: EAX, EBX, ECX dan EDX. Macam-macam Jenis dan Fungsi Register Berikut ini jenis dan fungsi dari masing-masing Register yaitu : 1. General Purpose Register (Register Serbaguna) Uky Yudatama, S.Si, M.Kom 8
  • 9. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) Register untuk keperluan umum yang terdiri atas : a. Register AX (Accumulator register) berfungsi sebagai tempat: Sementara hasil suatu operasi arithmetika atau logika (AL, AH, AX dan EAX)  Memasukkan nomor layanan interupsi, untuk keperluan pemesanan sebuah layanan interupsi (register AH).  Menyimpan bilangan yang dikalikan (reg AL, AX, EAX) dan setengan bagian terkecil (LSB) dari hasil perkalian (register DX-AX dan EDX-EAX).  Menyimpan setengah bagian terkecil(LSB) sebuah bilangan dibagi (DX-AX dan EDX-EAX) dan hasil bagi (AL, AX, EAX). b. Register BX (Base Register) Base register adalah register untuk menyimpan alamat offset data yang terletak di memori (BL, BH, BX dan EBX) c. Register CX (Counter Register) Counter register adalah register serbaguna yang berfungsi sebagai:  Pencacah untuk operasi loop (CX dan ECX)  Pencacah untuk operasi shift dan rotate (CL)  Pencacah (counter) untuk operasi string (CX) d. Register DX (Data register) Data register adalah register serbaguna yang berfungsi sebagai :  Penyimpan hasil perkalian 16 bit (DX-AX) dan 32 bit (EDX-EAX).  Penyimpan hasil pembagian (DX-AX dan EDX-EAX)  Penyimpan data hexadesimal (kode ASCII) di reg DL untuk dicetak di layar monitor. 2. Pointer Register Register ini untuk menunjukkan alamat sebuah data di lokasi memori, dipakai saat operasi perpindahan data (dari/ke memori), operasi stack (PUSH/POP) dan penunjukkan alamat suatu instruksi. Berikut adalah macam-macam pointer register: SP (Stack Pointer) dan ESP, BP (Base Pointer) dan IP (Instruction Pointer). 3. Index Register Sama dengan pointer register, sering digunakan untuk menunjukkan alamat sebuah data di lokasi memori pada operasi string. Macam-macam register Index adalah : SI (Source Index), DI (Destination Index). 4. Segment Register Segment register membentuk alamat memori untuk data. Pada operasi real mode suatu segment register akan berbeda dengan segment register pada operasi protected mode. Yang termasuk ke dalam segment register antara lain :  Code segment -> untuk menunjukkan alamt instruksi berikutnya.  Data segment -> untuk menunjukkan alamat data pada transfer register Uky Yudatama, S.Si, M.Kom 9
  • 10. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)  Extra segment -> register tambahan untuk operasi string  Stack segment -> dengan SP u/ menunjukkan stack dan memanggil suatu prosedur (CALL) dan mengarah ke program utama (RET).  FS dan GS register -> register tambahan u/ segmen memori yang besar. 5. Flag Register Berfungsi untuk menunjukkan status (keadaan) sesaat dari mikroprosessor. Bit-bit pada flag akan mengalami perubahan, tergantung proses yang baru saja berlangsung. Adapun kode bit yaitu sebagai berikut :  C (carry) -> 1=ada carry out 0= tdk ada carry out  P (Parity) -> 1=paritas genap 0= paritas ganjil  A (auxxiliary carry) -> 1=ada carry 0=tdk ada carry  Z (zero) -> 1=hasilnya nol 0=hasilnya bukan nol  S (sign) -> 1=hasilnya negatif 0=hasilnya positif  T (trap) -> bila diset 1 dimungkinkan melakukan debugging.  I (interrupt) -> 1= pin INTR enable 0=pin INTR disable  D (direction) -> 1=cacahan turun 0=cacahan naik  (Overflow) -> menunjukkan adanya kelebihan kapasitas atau tidak  IOPL (input-output privalege level) -> untuk protected mode  NT (nested task) -> indikasi dari penggabungan dengan operasi lain.  RF (resume) -> untuk debugging  VF (Virtual mode) -> untuk operasi virtual pada protected mode  AC (alignment check) -> untuk data word dialamati ke memori • Register merupakan tempat menyimpan data sementara yang berada dalam CPU. • Register terdiri atas 5 bagian yaitu : General Purpose Register, Pointer Register, Index Register, Segment Register, Flag Register. • Fungsi setiap register bermacam-macam sesuai peruntukannya yang telah diatur oleh pembuat mikroprosesor. TUGAS 1. Jelaskan pengertian Interupt? 2. Jelaskan cara-cara CPU melakukan operasi routin terhadap komponen pendukung? 3. Sebutkan macam-macam interrupt pada pemrograman bahasa rakitan? 4. Jelaskan pengertian Register dan sebutkan macam-macam register? 5. Jelaskan semua fungsi setiap register ? 6. Mengapa register dipakai dalam pemrograman bahasa rakitan/ assembler? Uky Yudatama, S.Si, M.Kom 10
  • 11. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) Pertemuan Ke 4 (Empat) Tujuan Instruksional Khusus Mengerti dan Memahami Pembuatan Program Pokok Bahasan Perlengkapan Bahasa Rakitan Sub Pokok Bahasan - Compiler dan Linker - Perbedaan Program Com dan Exe - Label dan Komentar - Perintah MOV Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly, Hartono Partoharsojo 2. Pemrograman dengan Bahasa Assembly, Susanto 3. Microprocessor Programmer’s, referensi Intel Co Perlengkapan Bahasa Rakitan Untuk membuat bahasa rakitan diperlukan perlengkapan yang merupakan software antara lain dari DOS berupa Debug.COM atau dari Borland International berupa Turbo Assembler atau program lainnya. Khusus untuk membuat program dengan Turbo Assembler maka perlengkapannya terdiri dari : Compiler dan Linker yang compatible dengan computer PC XT/AT/Pentium dan processor Intel, AMD, Cyrix. Compiler dan Linker Pada pemrograman assembler dikenal istilah Compiler merupakan suatu program yang dapat mengubah suatu file berextensi .ASM (assembler) menjadi file Object berekstensi .OBJ. Compiler ini juga dapat memberitahukan isi suatu program yang akan dikompilasi apakah mengandung kesalahan (error) per baris atau perintah yang tidak sesuai. Compiler pada bahasa rakitan khususnya Turbo Assembler menggunakan TASM.EXE. Source program yang dikompile dengan compiler TASM dibuat dengan teks editor DOS atau Windows dan disimpan dengan nama file .ASM di directori yang berisi TASM.EXE agar lebih mudah dalam mengkompilasinya. Cara mengkompilasi program sumber (source program) menjadi program objek adalah : TASM (nama file .ASM) (nama file .OBJ) Contoh: LATIH1.ASM dikompile dengan TASM.EXE di directory A menjadi : A>TASM LATIH1.ASM LATIH1.OBJ (enter) atau Uky Yudatama, S.Si, M.Kom 11
  • 12. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) A>TASM LATIH1 (enter) Maka di layar tampak: Turbo Assembler Version 2.0 Copyright (c) 1988 by Borland International Assembling file: LATIH1.ASM Error messages: None Warning messages: None Remaining memory: 16k Jika kita ingin membuat file objek dari source program assembler disertai dengan nomor kesalahan yang mungkin terjadi pada baris program (file .LST), maka kita dapat memberi perintah sebagi berikut: A>TASM /L nama_file.ASM (enter) Untuk membuka file .LST kita harus menjalankan teks editor dan membuka file .LST A>Edit nama_file.LST (enter) Sedangkan Linker merupakan program yang dapat mengubah file Objek menjadi file COM atau EXE. Program Linker dapat mengkonversi file objek yang berupa relocatable object code yang berupa bahasa mesin yang secara relative masih harus ditepatkan kedudukannya dan disesuaikan dengan aturan DOS. Program pelayanan Linker pada Turbo Assembler adalah TLINK.EXE Penggunaan linker TLINK.EXE mernghasilkan file dengan nama file berekstensi COM atau EXE yang terdiri dari kode bahasa mesin yang telah pasti penempatannya sehingga dapat disimpan di memori (RAM) untuk melaksanakan program. Semua proses assembly dan semua proses link harus tidak ada kesalahan artinya error harus 0. Jika masih ada error program harus diedit dengan membuka source program (file .ASM). Untuk menjalankan file yang telah dilinker dengan TLINK.EXE, maka langsung dapat dieksekusi dengan mengetik nama file di depan prompt DOS atau di run melalui Windows. Cara melakukan linker pada sebuah objek program (.OBJ) menjadi program COM atau EXE adalah : TLINK /T (nama file .OBJ) -> untuk menjadi file berekstensi OBJ atau TLINK (nama file .OBJ) -> untuk menjadi file berekstensi .EXE Perbedaan file COM dan EXE Program COM adalah salah satu jenis executable program. Ada beberapa sifat antara COM dengan EXE. Perbedaan sifat (kelebihan dan kekurangan) masing-masing adalah sebagai berikut: - Program COM : Uky Yudatama, S.Si, M.Kom 12
  • 13. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) 1. Relatif lebih kecil dibanding EXE 2. Lebih cepat dibanding EXE 3. Hanya menggunakan 1 segment 4. Ukuran file maksimal 64 KB 5. Sulit mengakses data/prosedur di segment lain 6. Dapat dibuat dengan Debug 7. Source file tidak boleh menggunakan referensi segment tertentu 8. Source file tidak boleh memakai data segment 9. Source file tidak boleh memakai stack segment 10.Harus diawali dengan ORG 100H, artinya pada Code segment yang dipilih, executable code ahrus mulai di CS:0100 - Program EXE : 1. Relatif lebih besar dibanding COM 2. Lebih lambat dibanding dengan COM 3. Bisa menggunakan lebih dari 1 segment 4. Ukuran berkas tidak terbatas (sesuai kemampuan memori) 5. Mudah mengakses data/prosedur di segment lain 6. Tidak dapat dibuat dengan Debug dari DOS. 7. Source file boleh memilih memakai segment tertentu. 8. Source file boleh memakai data segment 9. Source file boleh memakai stack segment 10.Tidak perlu menggunakan ORG 100H untuk setiap Code segment. Dari perbandingan tersebut terlihat bahwa program COM lebih sederhana dibanding program EXE. Baris-baris instruksi program dikenal dengan nama Mnemonic, ditulis dan disimpan dalam file berekstensi .ASM misalnya: Coba1.ASM Label dan Komentar Label pada program merupakan address memori yang diberi nama unik misalnya : Pada alamat 0000:0400 akan diberi nama label Data_BIOS. Maka susunan penulisan Label dalam pernyataannya adalah : SEGMENT AT 0000H ORG 0400H Data_BIOS LABEL WORD Atau jika kita ingin memulai suatu program dan diberi Label MULAI maka penulisannya adalah:: Code Segment Assume CS: Code ORG 100H MULAI: ……….… …………. Label yang dibuat untuk pengarah data (directive) sering digunakan adalah EQU singkatan dari EQUate. Kegunaannya untuk memberi nama pada angka atau konstanta yang dianggap penting. Uky Yudatama, S.Si, M.Kom 13
  • 14. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) Contohnya: ANGKA EQU 0B800H ; 0B800H diberi nama ANGKA Kolom EQU 80 ; angka 80 diberi nama Kolom Sedangkan komentar pada program dibuat hanya sebagai catatan atau remark yang tidak berarti apa-apa dan tidak dieksekusi oleh CPU. Komentar pada program diberi tanda titik koma (;) diberi kata-kata atau kalimat tentang program. Misalnya: ; Program ini dibuat dengan Turbo Assembler (komentar) ; Author by : ; Date : Code segment Assume Cs: Code Org 100h Mulai: (merupakan suatu Label) Perintah MOV Perintah ini merupakan perintah dasar pemrograman bahasa rakitan untuk memindahkan data dari lokasi asal ke lokasi tujuan berupa register atau lokasi memori. Instruksinya (mnemonic) adalah MOV dengan sintaks: MOV lokasi tujuan, lokasi asal Contoh: MOV CX, 05 ; angka 5 disimpan di register CX MOV AX, 005AH ; angka 005AH disimpan di AX MOV BX, AX ; isi AX disimpan ke BX MOV [200], BX ; isi BX disimpan di lokasi memori 200 MOV [BX], [200]; isi data di lokasi memori 200 disim- pan di alamat BX. • Untuk membuat program bahasa rakitan /assembler memerlukan perlengkapan berupa Uky Yudatama, S.Si, M.Kom 14
  • 15. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) software antara lain: DOS dengan DEBUG.COM atau TURBO ASSEMBLER dengan TASM.EXE dan TLINK.EXE • Perlengkapan lainnya adalah Teks Editor berupa EDIT.COM, SK.COM (Side Kick) atau Notepad pada Windows. • Membuat program COM dapat menggunakan 2 cara yaitu dengan Debug pada DOS atau dengan Turbo Assembler. • Label pada program merupakan nama yang dapat mewakili alamat memori (memory address), sebagai directive (pengarah), start program, prosedur atau keperluan lainnya. • Komentar merupakan tanda titik koma pada program yang tidak akan dieksekusi hanya keterangan tentang program atau baris program. • Perintah MOV merupakan perintah dasar dalam bahasa rakitan yang dipakai untuk mentransfer data angka, register, alamat memori (lokasi memori) TUGAS • Cobalah untuk mengenal beberapa perlengkapan bahasa rakitan • Cobalah untuk membandingkan file COM dengan file EXE dilihat dari isi program dan kapasitasnya • Buatlah macam-macam Label dan komentar pada suatu program assembler Pertemuan Ke 5 (Lima) Tujuan Instruksional Khusus Mengerti dan Memahami metode membuat program COM. Pokok Bahasan Membuat program COM Mencetak Huruf Sub Pokok Bahasan - Model Program COM Pembuatan dengan DEBUG Pembuatan dengan Turbo Assembler (TASM) - Mencetak huruf / Membuat kalimat - Operasi Loop - Mencetak beberapa karakter Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly, Hartono Partoharsojo 2. Pemrograman dengan Bahasa Assembly, Susanto 3. Microprocessor Programmer’s, referensi Intel Co Uky Yudatama, S.Si, M.Kom 15
  • 16. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) Membuat Program COM Model Program COM Program yang berekstensi COM (Command) merupakan program yang berisi perintah assembler berupa instruksi mnemonic yang dapat ditulis dengan Debug atau Turbo Assembler. Struktur model program COM yang dibuat dengan Turbo Assembler bisa dengan 2 model yaitu: Model 1: Title Nama_program ;judul program Makro MACRO ;nama makro -------- -------- } isi makro berada (bila ada) ENDM ;akhir makro Code SEGMENT ;(nama label segment) ASSUME CS: Code ;(register CS berisi label segment) ORG 100h ;(origin 100h menuju ke alamat offset 100h) MULAI: --------- ;(label mulai) --------- ; isi program --------- INT 20h ; berhenti dan kembali ke DOS Code ENDS ; akhir penulisan program di segment END MULAI ; akhir dari isi program Model 2: Bentuk struktur program di bawah ini lebih ringkas dibanding dengan model 1 yaitu: .model small .code org 100h ;program dimulai pada alamat 100h MULAI: --------- ;(label mulai) --------- ; isi program --------- INT 20h ; berhenti dan kembali ke DOS END MULAI ;akhir program Kita dapat mengganti model 1 dengan model 2 dimana pengetikan isi program sama dengan model 1 di atas. Uky Yudatama, S.Si, M.Kom 16
  • 17. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) Pembuatan program dengan Debug Program yang tersedia dalam PCDOS atau MSDOS berupa Debug.Com atau Debug.Exe, Pengetikan program dapat langsung ditulis dalam program Debug. Caranya : - Ketik Debug di depan prompt C atau A (debug.com ada di directory tersebut) C> Debug (enter) - - Langkah berikutnya adalah memasukkan baris-baris program dengan perintah A100 (assembly) di depan prompt debug ( _ ) Perintah A100 berarti instruksi pertama akan diletakkan pada alamat offset 100h pada segment memori tersebut. -A100 (enter) xxxx : 0100 _ xxxx: adalah alamat segment dan 0100 adalah alamat offset dimana program akan ditempatkan mulai alamat tersebut.. Ketiklah isi program bahasa rakitan (assembler) di depan alamat segment offset xxxx : 0100 misalnya: xxxx : 0100 MOV DL,61 ;kode ASCII huruf a : 0103 MOV AH,02 ;nomor pelayanan 02H : 0105 INT 21 ;cetak di layar : 0107 INT 20 ;kembali ke DOS : 0109 _ (enter) ;menuju ke prompt debug - Alamat segment offset dari 0100 s/d 0109 akan keluar sendiri setelah kita mengetik program disertai dengan menekan enter. Setelah instruksi INT 20 tekan enter 2 kali dan program akan kembali ke prompt debug ( _ ). - Menentukan panjang program pada debug dilakukan dengan mengisi register BX:CX. Terlihat dari mulai alamat offset awal 0100h dan alamat offset akhir 010Fh, sehingga dapat diperoleh panjang programnya adalah (0109h – 0100h) = 9 byte, maka register BX diisi dengan 0 dan register CX dengan 9. Jadi pada prompt Debug ketik RBX lalu isi 0, dan ketik RCX lalu isi dengan 9. -RBX (enter) BX 0000 :0 enter -RCX (enter) CX 0000 :9 enter - Setelah selesai ditik perintah RCX kemudian memberi nama file dengan perintah N (name). Contoh : -N COBA1.com (enter) - Untuk menyimpan program ke disket atau harddisk berikan perintah W (write) lalu enter. - Menjalankan program harus memberi instruksi G (go) dan lihat hasilnya di layar. Bila program berjalan dengan benar (tidak ada kesalahan) komputer akan Uky Yudatama, S.Si, M.Kom 17
  • 18. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) memberi komentar “Program terminated normally”. Selengkapnya contoh cara membuat program dengan Debug : C> debug (enter) -A100 enter xxxx : 0100 MOV DL,61 xxxx : 0103 MOV AH,02 xxxx : 0105 INT 21 xxxx : 0107 INT 20 xxxx : 0109 -rbx enter BX 0000 :0 enter -rcx enter CX 0000 :9 enter -N coba1.com -W Writing 000F bytes -G a (hasil dari program assembler tampil huruf a di layar) Program terminated normally - Pembuatan dengan Macro Assembler atau Turbo Assembler. Adanya keterbatasan pembuatan program dengan Debug, maka kita dapat menggunakan bantuan assembler compiler dengan Macro assembler atau Turbo Assembler (TASM.EXE dan TLINK.EXE). Untuk membuat program assembler dengan Turbo Assembler kita memerlukan source program yang ditulis dengan teks editor (fasilitas untuk mengetik program). Teks editor dapat memakai Edit.com, Side Kick (SK.com) pada DOS atau Notepad pada Windows dan lain-lain. Program assembler dapat membuat file berekstensi COM atau berekstensi EXE MENCETAK HURUF Membuat program untuk mencetak huruf dapat dilakukan dengan menyusun kode ASCII satu persatu yang ditempatkan dalam register DL sebagai tempat menyimpan data yang akan Uky Yudatama, S.Si, M.Kom 18
  • 19. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) ditampilkan di layar dengan memanfaatkan nomor pelayanan interupsi INT 21H service 02H yang disimpan dalam register AH. Untuk membuat program COBA2.COM dengan Turbo Assembler, maka file harus diberi nama COBA2.ASM yang diketik dalam teks editor yang ada yaitu : Coba segment Assume CS: Coba Org 100h MULAI: MOV AH,02H ; isi register AH dengan 02h untuk pelayanan cetak huruf di layar MOV DL,41H ; isi register DL dengan 41H kode ASCII ; huruf A INT 21h ; cetak huruf di layar INT 20h ; berhenti dan kembali ke DOS Coba ENDS END MULAI - Simpan file tersebut dengan nama COBA2.ASM - Compile nama coba2.asm dengan TASM.EXE dan di-link mengikuti langkah pembuatan program selanjutnya sehingga menjadi COBA2.COM. OPERASI LOOP Merupakan operasi pengulangan atau iterasi untuk digunakan dalam cacahan atau penampilan karakter string berulang-ulang. Perintah ini memakai register CX sebagai penentu jumlah cacahan atau jumlah pengulangan, diakhiri dengan perintah LOOP untuk lompat kembali melakukan pengulangan. Contoh program operasi loop dengan DEBUG : xxxx : 0100 MOV CX,05 (enter) ;loop sebanyak 5 kali : 0103 MOV DL,61 ;kode ASCII huruf a : 0105 MOV AH,02 ;nomor pelayanan 02H : 0107 INT 21 ;cetak di layar : 0109 INC DL ;tambahkan isi DL dengan 1 : 010B LOOP 0107 ;kembali ke alamat 0107H : 010D INT 20 ;kembali ke DOS : 010F _ (enter) ;menuju ke prompt debug - Contoh program operasi loop dengan TURBO ASSEMBLER : Coba segment Assume CS: Coba Uky Yudatama, S.Si, M.Kom 19
  • 20. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) Org 100h MULAI: MOV CX,0005H ; banyaknya loop 5 kali MOV DL,61H ; isi DL dengan kode ASCII huruf a ULANG: INT 21h ; cetak huruf di layar INC DL ; tambahkan isi DL dengan 1 LOOP ULANG ; kembali ke label ULANG INT 20h ; berhenti dan kembali ke DOS Coba ENDS END MULAI Mencetak beberapa huruf Mencetak beberapa huruf dapat dilakukan dengan 2 cara yaitu :  Menyusun beberapa huruf dalam kode ASCII satu persatu yang setiap huruf disimpan di DL  Menggunakan operasi loop untuk mencetak beberapa huruf memakai instruksi INC untuk menambah isi register dengan 1 sehingga nilai DL bertambah lagi untuk dicetak. Contoh pembuatan beberapa huruf yang disusun satu persatu dengan DEBUG CAssembler> debug (enter) -A100 enter xxxx : 0100 MOV AH,02 xxxx : 0103 MOV DL,41 xxxx : 0105 int 21 xxxx : 0107 MOV DL,42 xxxx : 0109 INT 21 xxxx : 010B MOV DL,43 xxxx : 010D INT 21 xxxx : 010F INT 20 xxxx : 0111 -rbx enter BX 0000 :0 enter -rcx enter CX 0000 :11 enter -N COBA2.COM -W Writing 0011 bytes -G ABC (tampilan ABC di layar) Program terminated normally Untuk membuat beberapa huruf yang disusun satu persatu dengan Turbo Assembler, maka program harus diketik dalam teks editor yang ada (EDIT atau SK) yaitu : ;Menyusun beberapa huruf kode ASCII Coba segment Assume CS: Coba Org 100h MULAI: MOV AH,02H ; isi register AH dengan 02h untuk pelayanan Uky Yudatama, S.Si, M.Kom 20
  • 21. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) cetak huruf di layar MOV DL,41H ; isi register DL dengan 41H kode ASCII ; huruf A INT 21h ; cetak huruf di layar MOV DL,42H ; isi register DL dengan 42H huruf B INT 21H ; cetak huruf di layar MOV DL,43H ; isi register DL dengan 43H huruf C INT 21h ; cetak huruf di layar INT 20h ; berhenti dan kembali ke DOS Coba ENDS END MULAI - Simpan file tersebut dengan nama COBA3.ASM - Compile nama coba2.asm dengan TASM.EXE dan di-link mengikuti langkah pembuatan program selanjutnya sehingga menjadi COBA3.COM. Contoh pembuatan beberapa huruf memakai operasi loop dengan DEBUG CAssembler>debug (enter) -A100 (enter) xxxx : 0100 MOV CX,05 (enter) ;loop sebanyak 5 kali : 0103 MOV DL,61 ;kode ASCII huruf a : 0105 MOV AH,02 ;nomor pelayanan 02H : 0107 INT 21 ;cetak di layar : 0109 INC DL ;tambahkan isi DL dengan 1 : 010B LOOP 0107 ;kembali ke alamat 0107H : 010D INT 20 ;kembali ke DOS : 010F _ (enter) ;menuju ke prompt debug -RCX :F -RIP :100 -N COBA3.COM -W Writing 000F bytes -G abcde (tampilan ABC di layar) Program terminated normally Untuk pembuatan beberapa huruf memakai operasi loop dengan TURBO ASSEMBLER kita dapat memodifikasi dari program dengan Debug seperti contoh operasi loop di atas. Langkah-langkah pembuatan program bahasa rakitan dengan Turbo Assembler sebagai berikut : 1. Buat source program dengan teks editor dan beri nama file berekstensi .ASM dan simpan didirektory yang berisi TASM.EXE dan TLINK.EXE. 2. Compile source program ASM dengan perintah compiler TASM dari Turbo Assembler menjadi Objek program (file akan berekstensi OBJ). caranya : C>TASM KAMPUS>ASM (enter) Uky Yudatama, S.Si, M.Kom 21
  • 22. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) 3. Compile source program ASM dengan perintah compiler TASM dari Turbo Assembler menjadi Objek program (file akan berekstensi OBJ). caranya : C>TASM KAMPUS.ASM (enter) 4. Setelah menjadi coba1.obj, kita harus me-link berkas objek menjadi COM dengan perintah TLINK. Caranya : C>TLINK /t KAMPUS (enter) 5. Jika pada pengetikan TLINK tidak diberi tanda /t , maka objek program akan menjadi file berekstensi EXE. 6. Coba1.com dapat langsung dieksekusi dari DOS prompt untuk melihat hasilnya di layar monitor dengan mengetik C>KAMPUS (enter) 7. Jika terdapat kesalahan, Turbo Assembler akan memberi tahu letak kesalahan pada baris program dan diedit dengan membuka kembali teks editor dan file .ASM 8. Perbaiki program yang salah, kemudian dicompile ulang seperti langkah 2 dan 3. • Membuat program COM dapat dengan Turbo Assembler dapat dilakukan dengan 2 model pilihan yaitu model 1 (Code segment) atau model 2 (Model Small). • Membuat program dengan debug harus diketik satu persatu, jika ada kesalahan maka program harus diketik dari awal lagi. • Membuat program dengan Turbo Assembler jauh lebih baik, karena jika ada kesalahan kita tidak perlu lagi mengetik ulang tinggal kita perbaiki program yang mengalami kesalahan tadi melalui teks editor dan dicompile ulang. • Program mencetak huruf memakai kode ASCII yang disusun satu persatu dengan memanfaatkan pelayanan interupsi INT 21H servive numer 02H. • Operasi Loop digunakan untuk melakukan pengulangan atau iterasi dan banyaknya nilai pengulangan ditentukan oleh nilai register CX sebelumnya. • Program membuat beberapa huruf dapat disusun satu persatu dengan kode ASCII atau dengan memanfaatkan operasi loop. TUGAS 1. Buatlah program mencetak huruf nama sendiri dengan Debug dan Turbo Assembler dengan menyusun kode ASCII untuk setiap hurufnya minimal 10 huruf. 2. Buatlah juga program mencetak kalimat bio data mahasiswa. Uky Yudatama, S.Si, M.Kom 22
  • 23. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) Pertemuan Ke 6 (Enam) Tujuan Instruksional Khusus Mengerti dan memahami metode operasi arithmetika dalam program assembler. Pokok Bahasan Operasi Arithmetika Sub Pokok Bahasan - Penambahan (ADD) - Pengurangan (SUB) - Pembandingan (CMP) - Perkalian (MUL) - Pembagian (DIV) Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly, Hartono Partoharsojo 2. Pemrograman dengan Bahasa Assembly, Susanto 3. Microprocessor Programmer’s, referensi Intel Co OPERASI ARITMATIKA Instruksi arithmetika meliputi: penambahan (addition), pengurangan (subtraction), pembandingan (comparison), perkalian (multiplication), pembagian (division). Aturan Penulisan Operasi Arithmetika (sintaks) Penjumlahan (Addition) a. Instruksi ADD -> ADD reg1, reg2 atau ADD reg, [alamat] Hasil penjumlahan disimpan di reg1. Contoh: ADD AX, BX ;hasilnya disimpan di AX b. Instruksi INC -> INC reg atau INC [alamat] Data pada reg atau [alamat] bertambah 1 Contoh: INC DX ;hasil DX = DX + 1 c. Instruksi ADC -> ADC reg1, reg2 atau ADC reg, [alamat] Penjumlahan biasa yang hasilnya ditambah dengan bit carry. Hasilnya disimpan di reg1. Uky Yudatama, S.Si, M.Kom 23
  • 24. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) Contoh: ADC AH, AL ;AH=AH + AL + carry Pengurangan (Subtraction) a. Instruksi SUB -> SUB reg1, reg2 atau SUB reg, [alamat] Hasil pengurangan disimpan di reg1. Contoh: SUB CX, BX ;hasilnya disimpan di CX b. Instruksi DEC -> DEC reg atau DEC [alamat] Data pada reg atau [alamat] akan bertambah 1 Contoh: DEC CX ;hasil CX = CX + 1 c. Instruksi SBB -> SBB reg1, reg2 atau SUB [alamat], reg Pengurangan biasa yang hasilnya dikurangi dengan bit carry. Hasilnya disimpan di reg1 atau [alamat]. Contoh: SBB AH, AL ;hasil AH= AH – AL – carry Pembandingan (CMP / Comparison) Instruksi CMP -> CMP reg1, reg2 atau CMP reg, data Membandingan isi reg1 dengan reg2 atau data. Contoh: CMP DL, BL ;bandingkan isi DL dengan BL Perkalian (Multiplication) Instruksi MUL -> MUL reg atau MUL [alamat] Perkalian antara AL (8 bit) atau AX (16 bit) dengan isi reg atau [alamat], hasilnya disimpan di AX (8 bit) atau DX-AX (16 bit). Contoh: MUL DL ;isi AL (8 bit) dikali dengan DL, hasil di AX. MUL BX ;isi AX (16 bit) dikali dengan BX, hasil di DX-AX Uky Yudatama, S.Si, M.Kom 24
  • 25. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) Pembagian (Division) a. Pembagian 8 bit -> DIV reg atau DIV [alamat] Pembagian dividen (disimpan di AX) dengan divisor (reg 8 bit) atau data pada lokasi memori, hasilnya disimpan di AL sisanya di AH. Contoh: DIV DL ;isi AX dibagi DL,hasil di AL sisanya di AH. b. Pembagian 16 bit -> DIV reg (16 bit) atau DIV [alamat] Pembagian dividen (disimpan di DX-AX) dengan divisor (reg 16 bit) atau data pada lokasi memori, hasilnya disimpan di AX sisanya di DX. • Operasi arithmetika dalam bahasa rakitan ditulis dengan mnemonic ADD, SUB, INC, DEC, MUL, CMP dan DIV. • Penulisan perintah operasi arithmetika harus mengikuti aturan penulisan (sintaks) untuk yang bekerja pada kondisi 8 bit dan 16 bit. • Untuk pembuatan program arithmetika bisa dilakukan dengan mengetik pada debug diakhiri dengan INT 20. Hasil proses dilihat pada saat kita mengetik perintah T (Trace) dan D (data alamat) di depan prompt debug (-). Angka-angka yang tertera pada setiap register dicatat pada tabel AX, BX, CX dan DX. TUGAS Buatlah beberapa contoh program penambahan, pengurangan, pembandingan, penambahan dengan satu, pengurangan dengan satu, perkalian dan pembagian (8 bit dan 16 bit). Program dibuat dengan debug dan hasilnya dites dan diuji dengan perintah T (trace) pada setiap prompt debug. Uky Yudatama, S.Si, M.Kom 25
  • 26. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) Pertemuan Ke 7 (Tujuh) Tujuan Instruksional Khusus Mengerti dan Memahami Pointer dan fungsi bit dalam operasi logika dan pergeseran bit. Pokok Bahasan Operasi Logika dan Pergeseran Bit Sub Pokok Bahasan - Operasi/Gerbang NOT - Operasi/Gerbang AND - Operasi/Gerbang OR - Operasi/Gerbang XOR - TEST - SHL & SHR - ROL & ROR Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly, Hartono Partoharsojo 2. Pemrograman dengan Bahasa Assembly, Susanto 3 Microprocessor Programmer’s, referensi Intel Co OPERASI LOGIKA DAN PERGESERAN BIT Operasi NOT dan NEG -> NOT/NEG reg atau NOT/NEG [alamat] Seluruh bit pada isi register atau [alamat] yang diberi NOT akan di-NOT-kan sedangkan jika diberi NEG seluruh bit akan menjadi komplemen-2 Contoh: NOT CL ;isi CL di-NOT-kan NOT [BP] ;isi di [alamat] BP akan di-NOT-kan NEG CL ;isi CL di-NEG-kan (komplemen-2) Operasi AND -> AND reg1, reg2/data atau AND reg, [alamat] Register 1 akan di-AND-kan dengan register 2 atau data atau [alamat] Contoh: AND CL, 45h ;isi CL di-AND-kan dengan 45h AND AX, BX ;isi AX di-AND-kan dengan BX AND BL,[250] ;isi BL di-AND-kan dengan isi di lokasi 250h Uky Yudatama, S.Si, M.Kom 26
  • 27. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) Operasi OR -> OR reg1, reg2/data atau OR reg, [alamat] Register 1 akan di-OR-kan dengan register 2 atau data/[alamat]. Contoh: OR DH, 25h ;isi DH di-OR-kan dengan 25h OR CX, BX ;isi CX di-OR-kan dengan BX Operasi XOR -> XOR reg1, reg2/data atau XOR reg, [alamat] Register 1 akan di-XOR-kan dengan register2 atau data/[alamat] Contoh: XOR BL, 25h ;isi BL di-XOR-kan dengan 25h XOR DX, BX ;isi DX di-XOR-kan dengan BX Operasi TEST -> TEST reg1, reg2/data atau TEST reg, [alamat] Mirip dengan AND, hanya kedua register tidak berubah, yang berubah hanya bit-bit flag register. Contoh: TEST CL, 25h ;isi CL di-AND-kan dengan 25h tanpa mengubah isi CL. Instruksi SHL (Shift Left) -> SHL reg, CL Isi register di geser ke kiri sebanyak nilai CL. Contoh: MOV CL, 2h SHL AH, CL ;isi AH digeser ke kiri 2 langkah. Instruksi SHR (Shift Right) -> SHR reg, CL Isi register di geser ke kanan sebanyak nilai CL. Contoh: MOV CL, 2h SHR AH, CL ;isi AH digeser ke kanan 2 langkah Rotasi (Rotate) Instruksi ini digunakan untuk memutar isi bit pada suatu register ke kiri atau ke kanan sesuai perintah yang diberikan. Uky Yudatama, S.Si, M.Kom 27
  • 28. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) Instruksi ROL (Rotate Left) -> ROL reg, CL Isi register di rotasi ke kiri sebanyak CL Contoh: ROL AH, 2h ;isi AH dirotasi ke kiri 2 langkah Instruksi ROR (Rotate Right) -> ROR reg, CL Isi register di rotasi ke kanan sebanyak CL Contoh: ROR AH, 2h ;isi AH dirotasi ke kiri 2 langkah • Operasi logika merupakan operasi yang dilakukan oleh CPU pada bagian ALU antara lain : AND, OR, NOT, XOR dan TEST. • Selain operasi logika di dalam CPU juga terdapat operasi Pergeseran dan perputaran bit antara lain : SHL, SHR, ROL dan ROR. • Operasi ini sangat penting untuk memanipulasi dan mengkonversi bit-bit pada suatu data. TUGAS 1. Jelaskan penggunaan operasi NOT, AND, OR, XOR dan TEST. 2. Bagaimana cara memutar isi data hexadesimal dalam suatu register. 3. Buatlah program pendek dengan DEBUG beberapa contoh operasi logika dan pergeseran bit data. Uky Yudatama, S.Si, M.Kom 28
  • 29. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) Pertemuan Ke 8 (Delapan) Tujuan Instruksional Khusus Mengerti dan Memahami Metode Pengalamatan Data. Pokok Bahasan Mode Pengalamatan Data Sub Pokok Bahasan - Register Addressing - Immediate Addressing - Direct Addressing - Direct Addresing with displacement - Indirect Addressing - Relative Addressing - Base Plus Index Addressing - Base Relative Plus Index Addressing Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly, Hartono Partoharsojo 2. Pemrograman dengan Bahasa Assembly, Susanto 3 Microprocessor Programmer’s, referensi Intel Co MODE PENGALAMATAN DATA Pengertian Pengalamatan Data Pengalamatan data (addressing mode) adalah perpindahan data dari lokasi asal ke lokasi tujuan. Lokasi asal berupa register, lokasi memori atau data mentah (kode hexadesimal / bilangan). Lokasi tujuan berupa register atau lokasi memori. Perintahnya memakai MOV. Mode Pengalamatan Beberapa mode pengalamatan antara lain: > Register Addressing Merupakan penyalinan data antar register (transfer ergister) MOV reg1, reg2 Contoh: MOV AX, BX ; isi BX disalin ke AX MOV SI, DI ; isi DI disalin ke SI > Immediate Addressing Merupakan penyalinan suatu data ke register Uky Yudatama, S.Si, M.Kom 29
  • 30. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) MOV reg, data Contoh: MOV AH, 02h ;02h disalin ke AH MOV DL,’A’ ; karakter A disalin ke DL MOV AX,’AB’ ;karakter AB disalin ke AX > Direct Addressing Merupakan penyalinan data dari lokasi memori tertentu ke accumulator (AX, AH atau AL) atau sebaliknya. MOV reg, [alamat] MOV [alamat], reg Contoh: MOV AL, [0100h] ;isi data di alamat memori 100h ke AL MOV [0250h], AX ;isi AX disalin ke alamat 0250h > Direct Addressing with Displacement Pada dasarnya sama dengan Direct Addressing, tetapi tidak hanya memakai register AL atau AX. MOV reg, [alamat] MOV [alamat], reg Contoh: MOV DL, [0100h] ;isi data di alamat memori 100h ke DL MOV [0250h], DX ;isi DX disalin ke alamat 0250h > Indirect Addresing Penyalinan data secara tidak langsung dari lokasi alamat yang ditunjuk oleh BP, BX, DI atau SI ke suatu register atau sebaliknya. MOV reg, [reg] MOV [reg], reg MOV [reg], [reg] Contoh: MOV EAX, [BX] ;isi data di lokasi memori [DSx10h+BX] ke register EAX MOV [CX], AX ;isi data di AX disalin ke lokasi memori [DSx10h +CX} Uky Yudatama, S.Si, M.Kom 30
  • 31. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) > Relative Addressing Merupakan penyalinan data dari lokasi memori yang ditunjuk oleh BP, BX atau SI dan DI ditambah displacement ke register tujuan atau sebaliknya. MOV reg, [base+disp] MOV [base+disp], reg Contoh: MOV AX, [BX+10h] MOV [BX+20h], CX MOV [BP+30h], CH MOV [DI+50h], DL > Base Plus Index Addressing Merupakan penyalinan data dari lokasi memori yang ditunjuk oleh BP atau BX ditambah isi index (SI atau DI) ke register tujuan atau sebaliknya. MOV reg, [base+index] MOV [base+index], reg Contoh: MOV DX, [BX+SI] MOV [BP+DI], AX > Base Relative Plus Index Addressing Merupakan penyalinan data dari lokasi memori yang ditunjuk oleh BP atau BX ditambah isi index (SI/DI) + displacement atau sebaliknya. MOV reg, [base+index+disp] MOV [base+index+disp], reg Contoh: MOV DX, [BX+SI+10h] MOV [BP+DI+20h], AX • Pengalamatan data merupakan perpindahan data dari lokasi asal ke lokasi tujuan. • Setiap lokasi dapat berupa register, lokasi memori. • Perintah untuk melakukan mode pengalamatan data adalah MOV. Uky Yudatama, S.Si, M.Kom 31
  • 32. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) • Penggunaan perintah MOV harus sesuai dengan aturan mode pengalamatan data. TUGAS 1. Jelaskan pengertian tentang pengalamatan data! 2. Sebutkan macam-macam mode pengalamatan data! 3. Jelaskan pula masing-masing perbedaan mode pengalamatan data antara yang satu dengan yang lainnya! 4. Buatlah beberapa contoh program pendek yang isinya terdapat beberapa mode pengalamatan data! Pertemuan Ke 9 (Sembilan) Tujuan Instruksional Khusus Mengerti dan Memahami Metode Mencetak kalimat. Pokok Bahasan Mencetak kalimat dan Operasi string. Sub Pokok Bahasan - Mencetak dengan DOS - Operasi String - Mencetak Kalimat dengan atributnya - Pengaturan atribut Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly, Hartono Partoharsojo 2. Pemrograman dengan Bahasa Assembly, Susanto 3 Microprocessor Programmer’s, referensi Intel Co MENCETAK KALIMAT Mencetak kalimat dengan DOS Untuk membuat kalimat, program harus diketik dengan teks editor (EDIT / NOTEPAD atau SK.COM) dan harus mengikuti model 1 atau model 2 di atas menggunakan pelayanan interupsi Uky Yudatama, S.Si, M.Kom 32
  • 33. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) 21H nomor servis AH=09H. Mencetak kalimat dalam sistem operasi DOS memerlukan tambahan misalnya letak posisi kalimat berada pada baris dan kolom tertentu, sehingga kita harus memakai pelayanan interupsi INT 10H nomor servis AH=02H dan AL=0 yang berfungsi mengatur posisi kalimat di layar. Nilai baris dan kolom harus dimasukkan ke dalam register DH (baris) dan register DL (kolom). Total baris di layar adalah 24 dan total kolom di layar adalah 80. Untuk mencetak kalimat di tengah layar, maka barisnya adalah 12, sedangkan kolomnya disesuaikan dengan jumlah kalimat yang akan dicetak. Isi kalimat disimpan dalam label misalnya KALIMAT dengan diberi spesifikasi data berupa DB (define byte) yang diproses dalam byte diawali dan diakhiri dengan tanda ‘ (petik) dan pada akhir tulisan diberi tanda dolar $ untuk batas tulisan. Misalnya kalimat KAMPUS STMIK BANI SALEH BEKASI dicetak di layar, maka kita harus mengikuti struktur program atau model 1 seperti contoh dibawah ini : Coba segment Assume CS: Coba Org 100h MULAI: MOV AH,09H ; isi register AH dengan 09h untuk pelayanan cetak kalimat di layar MOV DX, OFFSET KALIMAT ; isi register DX dengan LABEL KALIMAT 16 BIT INT 21h ; cetak KALIMAT di layar INT 20h ; berhenti dan kembali ke DOS KALIMAT DB ’KAMPUS STMIK BANI SALEH BEKASI$’ ;data disimpan di label Coba ENDS END MULAI - Simpan file tersebut dengan nama KAMPUS.ASM - Setelah file disimpan dengan nama KAMPUS.ASM lalu dicompile dan di-link mengikuti langkah pembuatan program selanjutnya sehingga menjadi KAMPUS.COM. Atau dapat juga membuat program kalimat dengan bentuk model 2 yang lebih ringkas berikut ini: .model small .code org 100h ; program dimulai pada alamat 100h MULAI: MOV AH,09H ; isi register AH dengan 09h untuk ; pelayanan cetak kalimat di layar MOV DX, OFFSET KALIMAT ; isi register DX dengan LABEL ; KALIMAT 16 BIT INT 21h ; cetak KALIMAT di layar INT 20h ; berhenti dan kembali ke DOS KALIMAT DB ’KAMPUS STMIK BANI SALEH BEKASI$’ ;data disimpan di label END MULAI ; akhir program Contoh 2: .model small .code Uky Yudatama, S.Si, M.Kom 33
  • 34. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) org 100h MULAI: ; mencetak kalimat di tengah layar MOV AH,02H MOV AL,0 MOV BH,0 MOV DH, 12 MOV DL, 30 INT 10H MOV AH, 09H MOV DX, OFFSET KALIMAT INT 21H INT 20H KALIMAT DB ‘STMIK BANI SALEH$’ END MULAI Tampilan kalimat di layar masih terlihat belum sempurna, karena tulisan yang ada di atas sebelumnya tidak menggulung ke atas, sehingga layar perlu dibersihkan dengan CLS dari DOS atau membuat program bersih layar sendiri dengan pelayanan interupsi INT 10H nomor servis 06H. Adapun penambahan program bersih layar sebelum kalimat dicetak di tengah layar adalah sebagai berikut: .model small .code org 100h MULAI: ; bersih layar MOV AH,06H XOR CX,CX MOV AL,0 MOV BH,07H ;background layar dasar hitam tulisan putih MOV DH,24 MOV DL,79 INT 10H ; mencetak kalimat di tengah layar MOV AH,02H MOV AL,0 MOV BH,0 MOV DH,12 MOV DL,30 INT 10H MOV AH,09H MOV DX, OFFSET KALIMAT INT 21H INT 20H KALIMAT DB ‘STMIK BANI SALEH$’ END MULAI OPERASI STRING String adalah jenis data yang terdiri atas kumpulan karakter, angka maupun simbol. Pada operasi ini register SI dan DI punya peranan khusus. SI dipakai untuk mencatat alamat dari sumber string, sedangkan DI digunakan untuk mencatat alamat atau tempat hasil manipulasi string. Uky Yudatama, S.Si, M.Kom 34
  • 35. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) Perintah yang dipakai: CLD, STD, CMPS, CMPSB, LODS, LODSB, LODSW, MOVS, MOVSB, MOVSW, REP, REPE, STOS, STOSB Pengkopian STRING MOVS dipakai untuk mengkopi data dari DS:SI menuju ke ES:DI, Hasil yang dicopy dapat dicetak ke layar. Contoh: .model small .code org 100h MULAI: JMP START KAL DB ‘STMIK BANI SALEH$’ BUFF DB 17 dup(?) START: LEA SI, KAL ;pindahkan isi KAL ke register SI LEA DI, BUFF ;pindahkan isi BUFF ke registrer DI CLD ;Clear Direction Flag menentukan instruksi ;pada register SI dan DI secara otomatis ;bertambah 1 (diincrement) MOV CX, 18 ;looping sebanyak 18 x Ulang: MOVS ES:BUFF, KAL ;copy isi string KAL ke BUFF LOOP Ulang ;kembali ke ulang MOV AH, 09h LEA DX, BUFF ;pindahkan isi BUFF ke register DX INT 21h ;cetak isi DX ke layar INT 20h END MULAI Mencetak kalimat dengan atributnya Untuk mencetak kalimat dengan atribut terdapt beberapa persyaratan antara lain: 1. Menggunakan fungsi dari BIOS melalui INT 10H 2. Nilai AX = 1300h 3. Nilai register BL merupakan nilai atribut yang ingin ditampilkan 4. Nilai register BH merupakan halaman tampilan Uky Yudatama, S.Si, M.Kom 35
  • 36. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) 5. Nilai DL adalah posisi kolom layar yang akan dicetak 6. Nilai DH adalah posisi baris layar yang akan dicetak Fungsi ini tidak mengenal batas tulisan “$” seperti INT 21H nomor service 09H sehingga kita harus mengisi nilai CX sebanyak karakter dalam kalimat. Sedangkan register ES:BP digunakan untuk mencatat alamat dari kalimat yang akan dicetak di layar. Pengaturan atribut Nilai atribut untuk mencetak kalimat di layar diatur agar mendapatkan hasil sesuai yang diharapkan misalnya sebagai berikut :  Nilai atribut tulisan disimpan dalam register BL=10010101B  Nilai AX= 1300H untuk nomor service AH=13H dan AL=00H  Nilai BH=0 untuk halaman tampilan 0  Nilai DL=20 untuk posisi kolom di layar  Nilai DH=12 untuk posisi baris di layar  Nilai CX=35 untuk banyaknya kalimat yang dicetak di layar Nilai di atas, kecuali untuk AX=1300H boleh diubah/dimodifikasi sesuai dengan permintaan pemakai. Contoh: ;Program untuk mencetak kalimat dengan atributnya ;Pengaturan atribut pada nilai BL=95H atau BL=10010101B ;halaman 0 pada BH ;baris 12 di layar ;kolom 20 di layar .model small .code org 100h MULAI: JMP AWAL KAL DB ‘MENULIS KALIMAT DENGAN ATRIBUTNYA’ AWAL: MOV AX,1300H ;service 13H subfungsi AL=0 MOV BL,10010101B ;atribut tulisan MOV BH,00 ;halaman tampilan MOV DL,20 ;posisi kolom MOV DH,12 ;posisi baris Uky Yudatama, S.Si, M.Kom 36
  • 37. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) MOV CX,35 ;banyak karakter yang akan dicetak LEA BP, KAL ;ES:BP untuk meletakan alamat string INT 10H INT 20H END MULAI • Program membuat kalimat menggunakan pelayanan interupsi 21H service number 09H dan menyimpan isi kalimat pada Label DB (Define Byte), DW (Define Word), DD (Define Double Word), DQ (Define Quad Word). • Untuk pembuatan program mencetak beberapa kalimat yang berurutan ke bawah, maka pada setiap label yang diberi tanda $ harus dibubuhkan angka 13, 10 untuk turun baris dan ditempatkan pada kolom awal ( ,13,10,’$’). • Mencetak kalimat di layar dapat dilakukan dengan berbagai macam cara. Penggunaan INT 10H untuk mengatur operasi layar agar mencetak kalimat menjadi lebih teratur sesuai letak baris dan kolom di layar. • Operasi string digunakan untuk manipulasi string, peletakan alamat string, pengcopian string ke buffer atau tempat sementara yang ditentukan oleh kita. • Salah satu cara mencetak kalimat di layar antara lain dengan atribut memanfaatkan nomor pelayanan AH=13H INT 10H • Pengaturan atribut untuk mencetak di layar dipakai untuk menghasilkan tampilan berupa kalimat yang disimpan dalam byte, word atau double word dengan meletakkan string pada register ES:BP sebagai pencatat alamat string. 1. Buatlah program tampilan SELAMAT DATANG DI STMIK BANI SALEH di tengah layar. 2. Bagaimana cara melakukan pengkopian string menggunakan perintah MOVSB? 3. Buatlah salah satu contoh program pengkopian string untuk dicetak dua kali! 4. Buatlah program mencetak kalimat dengan atributnya dimana kalimat tersebut harus disertai warna dasar hitam tulisan merah. Uky Yudatama, S.Si, M.Kom 37
  • 38. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) Pertemuan Ke 10 (Sepuluh) Tujuan Instruksional Khusus Mengerti dan Memahami operasi jump/lompatan dan operasi stack. Pokok Bahasan Operasi Jump (Lompatan) Operasi Stack. Sub Pokok Bahasan - Pengertian operasi jump /lompatan - Jenis-jenis instruksi jump - Pengertian operasi stack - Operasi perpindahan data selain MOV Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly, Hartono Partoharsojo 2. Pemrograman dengan Bahasa Assembly, Susanto 3 Microprocessor Programmer’s, referensi Intel Co OPERASI JUMP (Lompatan) Pengertian Operasi Jump Instruksi lompatan pada suatu program akan menyebabkan program melompati bagian tertentu dan mengeksekusi instruksi yang dikehendaki. Ada 2 jenis instruksi dalam operasi jump yaitu: lompat tak bersyarat dan lompat bersyarat. Lompatan tak bersyarat Instruksi lompatan ini langsung menuju ke alamat memori yang dituju tanpa syarat apapun, sehingga program langsung dapat kita arahkan menuju lokasi memori atau label dengan perintah atau instruksi JMP Aturan penulisannya : JMP lokasi memori/label Contoh : .model small .code org 100h MULAI: MOV AX, 1234H MOV BX, 4321H JMP TERUS TERUS: ADD AX, BX SUB AX,3 JMP TERUS2 TERUS2: INT 20H END MULAI Uky Yudatama, S.Si, M.Kom 38
  • 39. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) Ada 3 jenis instruksi lompatan tak bersyarat yaitu:  Lompatan pendek (short jump) -> JMP SHORT disp yaitu melakukan lompatan maksimal sejauh 127 byte. Contoh: JMP SHORT 04h ;melakukan lompatan sejauh 4 byte  Lompatan dekat (near jump) -> JMP disp_low disp_high yaitu melakukan lompatan lebih panjang maksimal 32 Kb. Contoh: JMP 0200h ;melakukan lompatan ke lokasi memori 200h  Lompatan jauh (far jump) -> JMP FAR iplow Cslow Cshigh yaitu melakukan lompatan ke seluruh daerah memori. Contoh: JMP FAR nH ;melakukan lompatan jauh ke lokasi tertentu Lompatan bersyarat Yaitu lompatan pendek yang dilakukan ke seluruh daerah memori dalam segmen memori yang sama dan terjangkau oleh operasi ini. Instruksi ini menggunakan CMP untuk membandingkan kondisi yang dicek, sehingga akan melompat ke alamat yang dituju sesuai instruksi lompatan bersyarat, dimana instruksi lompatan bersyarat antara lain :  JA (Jump if Above) ; lompat bila operand 1 > operand2 (bilangan tak bertanda)  JAE (Jump if Above or Equal); lompat bila operand 1 >= operand2 (bilangan tak bertanda)  JB (Jump if Below) ; lompat bila operand 1 < operand2 (bilangan tak bertanda)  JBE (Jump if Below or Equal); lompat bila operand 1 <= operand2 (bilangan tak bertanda)  JG (Jump if Greater); lompat bila operand 1 > operand2 (bilangan bertanda)  JGE (Jump if Greater or Equal) ; lompat bila operand 1 >= operand2 (bilangan bertanda)  JL (Jump if Less) ; lompat bila operand 1 < operand2 (bilangan bertanda)  JLE (Jump if Less or Equal) ; lompat bila operand 1 <= operand2 (bilangan bertanda)  JC (Jump if Carry) ; lompat bila ada bawaan  JNC (Jump if No Carry) ; lompat bila tidak ada bawaan  JE atau JZ (Jump if Equal)/(Jump if Zerro) ; lompat bila operand 1 = operand 2  JNE atau JNZ (Jump if Not Equal)/(Jump if Not Zero); lompat bila operand 1 <> operand 2  JO (Jump on Overflow) ; lompat bila terjadi overflow  JNO (Jump if No Overflow); lompat bila tidak terjadi overflow  JS (Jump On Sign) ; lompat bila negatif  JNS (Jump if No Sign) ; lompat bila positif  JP atau JPE (Jump on Parity)/(Jump if ParityEven) ; lompat bila berparitas genap  JNP atau JPO (Jump if No Parity)/(Jump if Parity Odd); lompat bila berparitas ganjil  JCXZ (Jump if CX is Zero) ; lompat bila CX=0 Uky Yudatama, S.Si, M.Kom 39
  • 40. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)  JECXZ (Jump if Equal CX is Zero); lompat bila ECX=0 (khusus 80486 ke atas) Penulisan instruksi lompat bersyarat yang diawali dengan instruksi CMP yang berguna untuk membandingkan isi register untuk dilompati sesuai kondisi. Contoh 1: MOV AX, 0010h ;isi AX dengan 10h MOV BX, 0012h ;isi BX dengan 12h 106: CMP AX,BX ;bandingkan isi AX dengan BX JE 10D ;bila sama lompat ke alamat 10D INC AX ;bila tidak tambahkan isi AX dengan 1 JMP 106 ;kembali ke alamat 106 10D: ADD AX,3 ;tambahkan isi AX dengan 3 INT 20h ;kembali ke prompt DOS Kita tinggal mengganti instruksi lompat sesuai kebutuhan, apakah memenuhi syarat (Y) atau tidak memenuhi syarat (T). Contoh 2: .model small .code org 100h MULAI: MOV BX, 0000H ULANG3: MOV DL, 41H ULANG2: MOV CX,0003H ULANG1: MOV AH,02H INT 21H LOOP ULANG1 INC DL CMP DL,5BH JNE ULANG2 MOV DL,0DH MOV AH,02H INT 21H MOV DL,0AH INT 21H INC BX CMP BX,000BH Uky Yudatama, S.Si, M.Kom 40
  • 41. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) JLE ULANG3 INT 20H END MULAI OPERASI STACK Pengertian Operasi Stack Stack (tumpukan) adalah bagian memori yang digunakan untuk menyimpan nilai dari register hanya sementara saja. Pada stack digunakan pasangan SS:SP untuk menunjukkan lokasi dari stack. Perintah yang digunakan adalah PUSH (menaruh ke dalam stack), dan POP (mengambil data dari stack). Instruksi PUSH untuk operasi stack Merupakan instruksi untuk memasukkan data ke dalam stack (tumpukan). Data berasal dari data mentah, register atau isi lokasi memori Sintaks: PUSH reg PUSH [lokasi memori] PUSH data Contoh: PUSH BX ; menyimpan isi BX ke stack (16 bit) PUSH EAX ; menyimpan isi EAX ke stack (32 bit) PUSH [DI] ; menyimpan isi dari lokasi memori beralamat di [DSx10h+DI] ke stack PUSH 12h ; menyimpan data 12h ke stack Instruksi POP Merupakan instruksi untuk mengambil kembali data dari stack (kebalikan PUSH) ke dalam register atau lokasi memori Sintaks: POP reg POP [alamat] POPF ;mengambil isi stack dan ditempatkan di reg flag Contoh: POP BX ;mengambil isi stack dan ditempatkan di BX POP [DI] ;mengambil isi stack dan ditempatkan ke alamat DS:DI Uky Yudatama, S.Si, M.Kom 41
  • 42. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) Berikut ini contoh program lengkap untuk operasi stack: ;Cara kerja stack .model small .code org 100h MULAI: JMP START KAL DB ‘STMIK BS$’ TUKAR DB 13,10,’$’ Stacks DW ? START: LEA DX, KAL MOV Stacks, DX MOV AH, 09h LEA DX, TUKAR INT 21h MOV DX,Stacks INT 21h INT 20h END MULAI Dari contoh program di atas kita modifikasi menjadi: .model small .code org 100h MULAI: JMP START KAL DB ‘STMIK BS$’ TUKAR DB 13,10,’$’ START: LEA DX, KAL PUSH DX MOV AH,09h INT 21h LEA DX, TUKAR INT 21h POP DX INT 21h INT 20h END MULAI Instruksi PUSHF Merupakan instruksi untuk memasukkan isi register flag ke dalam stack Sintaks: PUSHF Perpindahan data selain MOV Beberapa instruksi perpindahan data selain memakai MOV meliputi: PUSH, POP, XCHG, LEA, perpindahan data string (LODS, STOS dan MOVS) Aturan penulisan operasi perpindahan data (sintaks) Instruksi XCHG (exchange) Uky Yudatama, S.Si, M.Kom 42
  • 43. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) Berfungsi untuk menukarkan isi register dengan register lain atau isi register dengan isi lokasi memori. Tidak berlaku untuk antar lokasi memori. Sintaks: XCHG reg, reg XCHG reg, [alamat] Contoh: XCHG AX, BX ;menukar isi AX dengan BX XCHG DX, [DI] ;menukar isi DX dengan isi lokasi memori DI XCHG [SI], CH ;menukar isi lokasi memori dengan CH Instruksi LEA (Load Effective Address) Berfungsi untuk mengambil alamat suatu data pada lokasi memori dan meletakkannya di register 16 bit. Sintaks: LEA reg, [alamat] LEA reg, variable Contoh: LEA BX, [DI] ;isi alamat di reg DI diambil dan disimpan di BX LEA BX, VAR1 ;isi alamat offset data dengan label VAR1 diambil dan disimpan di BX LEA AX, [SI] ;isi data di lokasi memori SI diambil dan disimpan di AX Instruksi LODS (Load String) Berfungsi untuk memindahkan data string pada segment data yang alamat offsetnya ditunjukkan oleh isi register SI ke accumulator (AL, AX) akan di-increment (+1) atau decrement (-1). Instruksi ini ditambah dengan B bila memindahkan byte, W (word) atau D (double word). Contoh: LODSB ; data byte di lokasi memori SI dipindah ke reg AL LODSW ; data word di lokasi memori SI dipindah ke reg AX LODSD ; data doubleword di lokasi SI dipindah ke reg EAX LODS DAT1 ;data label DAT1 dipindah ke AL (byte) LODS DAT2 ;data label DAT2 dipindah ke AX (word) LODS DAT3 ;data label DAT3 dipindah ke EAX (doubleword) Uky Yudatama, S.Si, M.Kom 43
  • 44. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) Instruksi STOS (Store string) Berfungsi memindahkan string pada AL, AX, EAX ke ekstra segment yang alamat offsetnya ditunjukkan oleh isi DI (ES:DI) Contoh: STOSB ;isi AL dipindah ke lokasi memori DI STOSW ;isi AX dipindah ke lokasi memori DI STOS DAT1 ;isi AL dipindah ke label DAT1 di alamat DI Instruksi MOVS (Move string) Memindahkan isi string dari suatu lokasi memori ke lokasi memori yang lain berupa byte, word atau double word dari data segment beralamat offset SI ke ekstra segment beralamat offset DI. Contoh: MOVSB ;isi lokasi memori berisi byte ke lokasi memori lain MOVSW ;isi lokasi memori berisi word ke lokasi memori lain MOVSD ;isi lokasi memori berisi double word ke lokasi lain • JMP (lompatan) merupakan instruksi untuk melompat ke bagian tertentu dan mengeksekusi instruksi berikutnya. • Ada dua jenis lompatan yaitu lompatan tanpa syarat dan lompatan dengan syarat. • Lompatan tanpa syarat terdiri dari 3 yaitu : Short Jump, Near Jump dan Far Jump • Lompatan dengan syarat merupakan proses pengambilan keputusan atau operasi percabangan dengan diikuti oleh instruksi CMP dan instruksi Lompat bersyarat, yaitu melakukan perbandingan terlebih dahulu suatu isi register apabila telah memenuhi syarat, maka lompatan bila dijalankan. • Ada 22 jenis lompatan bersyarat yang digabungkan dengan operasi logika. • Operasi perpindahan data selain MOV menggunakan instruksi antara lain : PUSH, POP, XCHG, LEA, perpindahan data string (LODS, STOS dan MOVS). • Operasi stack sangat penting dipakai untuk menaruh isi data (PUSH) yang suatu saat dapat diambil kembali dari stack (POP). • Perintah LEA DX, sama dengan perintah MOV DX,OFFSET sehingga merupakan alternatif yang dapat dipilih untuk mencetak kalimat. Uky Yudatama, S.Si, M.Kom 44
  • 45. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) TUGAS 1. Sebutkan 2 jenis operasi Jump dan berikan contohnya masing-masing! 2. Bagaimana cara melakukan lompatan dalam lompatan dengan memakai operasi loop? 3. Buatlah program lompatan bersyarat untuk membandingkan karakter tertentu! 4. Buatlah program mencetak kalimat dengan mengganti perintah MOV DX, OFFSET dengan LEA DX. Pertemuan Ke 11 (Sebelas) Tujuan Instruksional Khusus Mengerti dan Memahami input data keybord berupada ASCII atau Extended. Pokok Bahasan Input data dari Keyboard. Sub Pokok Bahasan - Masukan satu karakter - Mendeteksi penekanan tombol - Masukan kalimat dari keyboard Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly, Hartono Partoharsojo 2. Pemrograman dengan Bahasa Assembly, Susanto 3 Microprocessor Programmer’s, referensi Intel Co INPUT DATA DARI KEYBOARD Masukan satu karakter Memasukan data/input data 1 karakter dapat kita buat dengan pelayanan interupsi 21H nomor service 01H dalam register AH. Instruksi yang umum dipakai adalah: MOV AH, 01H INT 21H Uky Yudatama, S.Si, M.Kom 45
  • 46. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) Data yang dimasukkan melalui penekanan tombol keyboard ini akan ditampung di register AL berupa kode ASCII. Contoh: ;Program input 1 karakter dari keyboard .model small .code org 100h MULAI: JMP START Tanya db ‘Jawablah pertanyaan di bawah ini ! ‘,13,10 db ‘Apakah anda seorang laki-laki? (Y/T)’,13,10 db ‘Jawaban anda : $’ Jawab1 db 13,10,’Anda adalah seorang laki-laki’,13,10,’$’ Jawab2 db 13,10,’Anda adalah seorang wanita’,13,10,’$’ START: MOV AH, 09H LEA DX, Tanya INT 21h ULANG: MOV AH, 01H ;input dari keyboard 1 huruf INT 21h CMP AL, ‘Y’ JE LAKI CMP AL, ‘y’ JE LAKI CMP AL, ‘T’ JE WANITA CMP AL, ‘T’ JE WANITA JMP ULANG WANITA: MOV AH,09H LEA DX,Jawab2 INT 21H JMP SELESAI LAKI: MOV AH,09H LEA DX,Jawab1 INT 21H SELESAI: INT 20h END MULAI Mendeteksi penekanan tombol Untuk mendeteksi adanya penekanan tombol tertentu dari keyboard digunakan input huruf without echo. Ada tiga jenis input per huruf without echo yaitu:  Input without echo yang mengecek Ctrl Break/Ctrl C. Untuk melakukan input yang mendeteksi Ctrl Break memakai INT 21H service 08H. Adapun persyaratannya adalah: Uky Yudatama, S.Si, M.Kom 46
  • 47. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER)  Nilai AH berisi 08H INT 21H  Nilai AH ini dapat dihentikan dengan Ctrl Break atau Ctrl C selama proses input  Data yang diinput ditaruh di register AL.  Input without echo yang tidak mengecek Ctrl Break/Ctrl C. Untuk melakukan input yang tidak mendeteksi Ctrl Break atau Ctrl C, memakai INT 21H service 07H di register AH. Cara pemakaiannya sama dengan AH=08H, perbedaannya hanya pada saat komputer sedang berjalan misalnya penekanan tombol ctrl break akan dibiarkan dan dianggap sebagai input.  Input without echo tanpa menunggu Maksudnya adalah komputer tidak akan menunggu anda untuk menekan keyboard tetapi input ini akan diambil dari keyboard buffer, dimana keyboard buffer akan diisi ketika komputer sedang mengerjakan tugas lain. Jika ternyata keyboard buffer kosong, maka input without echo tanpa menunggu tidak mengerjakan apa-apa. Adapun persyaratannya adalah sebagai berikut:  Register AH diisi dengan service 06H INT 21H  Register DL harus berisi nilai FFH.  Hasil input akan diletakkan pada register AL. Contoh: ;Program input 1 karakter without echo tanpa menunggu .model small .code org 100h MULAI: JMP START KATA db ‘Kalimat ini akan dicetak terus $’ START: MOV AH, 09H LEA DX, KATA INT 21H MOV AH, 06H MOV DL,0FFH XOR AL, AL INT 21H CMP AL, ‘0’ JE AKHIR CMP AL, ‘q’ JNE MULAI AKHIR: INT 20H END MULAI Uky Yudatama, S.Si, M.Kom 47
  • 48. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) Masukan kalimat dari keyboard Memasukan data/input data 1 kalimat dapat kita buat dengan pelayanan interupsi 21H nomor service 0AH dalam register AH. Instruksi yang umum dipakai adalah: MOV AH, 0AH MOV DX, OFFSET variabel INT 21H Instruksi ini berfungsi untuk mengambil data ke dalam variable, data dalam kalimat dibaca satu persatu oleh register AL dan disalurkan ke alamat/lokasi memori yang ditunjuk oleh register BX. Hasilnya disimpan dalam register DX melalui sebuah variabel. Panjang maksimal kalimat yang diinput harus mengikuti aturan pembuatan variable sebagai batas karakter yang diinput dari keyboard yaitu: Nama_variable db XX , ? , YY dup (?) XX= Jumlah karakter yang akan diinput ditambah 1 untuk tombol enter YY= Jumlah karakter yang dibaca berikut enternya YY dup(?) berguna untuk menyatakan berapa tempat yang harus disediakan yaitu YY*1 tempat kosong yang dapat mewakili tanda tanya (?). DS:DX merupakan lokasi memori yang berisi segment dan offset awal suatu nama variable yang akan diisi oleh data. Contoh: ;Program input 1 kalimat .model small .code org 100h MULAI: JMP START KATA db ‘Ketik data maksimum 14 karakter :$’ DATA_MASUK db 15,?,15 dup(?) START: MOV AH, 09H LEA DX, KATA INT 21H MOV AH, 0AH MOV DX,0FFSET DATA_MASUK INT 21H MOV BX,0FFSET DATA_MASUK INC BX MOV AL,[BX] INC BX XOR AH, AH ADD BX, AX MOV AL, 0 MOV [BX], AL MOV DX, OFFSET DATA_MASUK Uky Yudatama, S.Si, M.Kom 48
  • 49. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) INC DX INC DX AKHIR: INT 20H END MULAI Isi data yang dimasukkan ke dalam register AL (1 karakter) dan register DX (1 word) dapat ditampilkan ke layar monitor setelah dipindahkan ke register DL yang dibaca satu persatu dari lokasi memori yang ditunjuk oleh register BX. Pada saat dipindahkan ke DL maka harus dilengkapi dengan nomor pelayanan INT 21H service 02H. Contoh: MOVSB ;isi lokasi memori berisi byte ke lokasi memori lain MOVSW ;isi lokasi memori berisi word ke lokasi memori lain MOVSD ;isi lokasi memori berisi double word ke lokasi lain MOVS DAT1, VAR1 ;isi label DAT1 ke VAR1 • Operasi perpindahan data selain MOV menggunakan instruksi antara lain : PUSH, POP, XCHG, LEA, perpindahan data string (LODS, STOS dan MOVS). • Setiap ada perpindahan data harus mengikuti ketentuan aturan penulisannya (syntax). • Perintah LEA DX, sama dengan perintah MOV DX,OFFSET sehingga merupakan alternatif yang dapat dipilih untuk mencetak kalimat. • • Properti target mendefinisikan bagaimana halaman target dari sebuah link. 1. 2. 3. Uky Yudatama, S.Si, M.Kom 49
  • 50. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) Pertemuan Ke 12 (Duabelas) Tujuan Instruksional Khusus Mengerti dan Memahami metode pembuatan prosedur dan macro. Pokok Bahasan Prosedur dan Macro. Sub Pokok Bahasan - Membuat prosedur - Membuat macro - Menggabungkan prosedur & macro Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly, Hartono Partoharsojo 2. Pemrograman dengan Bahasa Assembly, Susanto 3 Microprocessor Programmer’s, referensi Intel Co PROSEDUR DAN MACRO Prosedur dan macro adalah fasilitas yang terdapat pada turbo assembler. Prosedur Prosedur adalah sekelompok instruksi yang dibangun untuk melakukan tugas-tugas tertentu agar dapat memperpendek jumlah baris program. Prosedur dapat dipanggil secara berulang-ulang oleh program utama dengan instruksi CALL. Penggunaan prosedur dapat mengurangi jumlah alamat memori yang digunakan pada program. Kerangka Dasar prosedur: Uky Yudatama, S.Si, M.Kom 50
  • 51. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) Nama_prosedur PROC NEAR/FAR ;nama prosedur ---------- ---------- Isi Prosedur ---------- ---------- RET ;kembali ke program utama Nama_prosedur ENDP ;akhir prosedur PROC = Procedur RET= RETURN NEAR = Lokasi prosedur dekat dengan program utama FAR = Lokasi prosedur jauh dari program utama Contoh: .model small .code org 100h MULAI: MOV CX,05h ;isi CX dilooping 5 kali MOV DL,’A’ ;Karakter A disimpan di DL ULANG: CALL CETAK ;cetak di layar INC DL ;tambahkan isi DL dengan 1 LOOP ULANG ;kembali ke ULANG EXIT: INT 20h ;kembali ke DOS CETAK PROC NEAR ;prosedur CETAK MOV AH, 02h ;nomor servis 02H INT 21h ;cetak di layar RET ;kembali ke program utama CETAK ENDP ;akhir prosedur END MULAI MACRO Hampir mirip dengan prosedur dan tidak perlu dipanggil dengan CALL dan RET. Hanya cukup dipanggil dengan mengeksekusi namanya. Macro mengenal parameter yang bersifat optional (boleh ada atau tidak), tergantung kebutuhan. Kerangka Umum: Nama_makro MACRO [P1,P2] ;nama makro ......... ......... Isi makro ......... ENDM ;akhir makro [P1,P2] adalah parameter yang digunakan (optional) Contoh 1: ;Program dengan Makro CETAK MACRO KAR MOV DL, KAR Uky Yudatama, S.Si, M.Kom 51
  • 52. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) MOV AH, 02h INT 21h ENDM .model small .code org 100h MULAI: CETAK ‘A’ CETAK ‘B’ CETAK ‘C’ CETAK ‘D’ CETAK ‘E’ EXIT: INT 20h END MULAI Contoh 2: ;Program Mencetak String (Kalimat) CETAK MACRO KAL LEA DX,KAL MOV AH, 09h INT 21h ENDM .model small .code org 100h MULAI: JMP START TULIS1 DB ‘Saya sedang belajar Assembler’,13,10 DB ‘Ternyata asyik juga$’ TULIS2 DB ‘Materi sekarang tentang makro$’ START: CETAK TULIS1 CETAK TULIS2 INT 20h END MULAI • Link dapat juga mengacu kepada alamat situs, misalnya http://www.google.co.id • Properti target mendefinisikan bagaimana halaman target dari sebuah link ditampilkan, apakah _blank (menampilkan pada browser window baru), _parent (menampilkan pada dokumen tempat frame berada), _self (menampilkan pada browser aktif), atau _top (menampilkan pada halaman utama). 1. Uky Yudatama, S.Si, M.Kom 52
  • 53. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) 2. 3. Pertemuan Ke 13 (Tigabelas) Tujuan Instruksional Khusus Mengerti dan Memahami mode pengaturan layer. Pokok Bahasan Operasi pada layar. Sub Pokok Bahasan - Memori layar - Tampilan teks pada layar - Bentuk Kursor - Mode layar Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly, Hartono Partoharsojo 2. Pemrograman dengan Bahasa Assembly, Susanto 3 Microprocessor Programmer’s, referensi Intel Co OPERASI PADA LAYAR MEMORI LAYAR .model small .code org 100h MULAI: ------- TAMPILAN TEKS PADA LAYAR .model small .code org 100h Uky Yudatama, S.Si, M.Kom 53
  • 54. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) MULAI: ------- POSISI KURSOR .model small .code org 100h MULAI: ------- MODE LAYAR .model small .code org 100h MULAI: ------- • Link dapat juga mengacu kepada alamat situs, misalnya http://www.google.co.id • Properti target mendefinisikan bagaimana halaman target dari sebuah link ditampilkan, apakah _blank (menampilkan pada browser window baru), _parent (menampilkan pada dokumen tempat frame berada), _self (menampilkan pada browser aktif), atau _top (menampilkan pada halaman utama). 1. 2. 3. Uky Yudatama, S.Si, M.Kom 54
  • 55. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) Pertemuan Ke 14 (Empatbelas) Tujuan Instruksional Khusus Mengerti dan Memahami pengaksesan port. Penanganan File. Pokok Bahasan Akses Port dan pengaktifan speaker. Operasi File. Sub Pokok Bahasan - Macam-macam Port - Pengaksesan alamat port - Penanganan File - Atribut File Daftar Pustaka 1. Tuntunan Praktis Pemrograman Assembly, Hartono Partoharsojo 2. Pemrograman dengan Bahasa Assembly, Susanto 3 Microprocessor Programmer’s, referensi Intel Co AKSES PORT Pengertian Port Macam-macam Port Pengaksesan alamat port Persyaratan untuk Contoh program .model small .code org 100h Uky Yudatama, S.Si, M.Kom 55
  • 56. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) MULAI: ------- Penanganan File A. Manajemen File - Membuat Directory/Subdirectory Persyaratan untuk Contoh program .model small .code org 100h MULAI: ------- - Menghapus Directory/Subdirectory Persyaratan untuk Contoh program .model small .code org 100h MULAI: ------- - Mengubah Directory/Subdirectory Persyaratan untuk Contoh program .model small .code org 100h MULAI: ------- B. Hapus File Persyaratan untuk menghapus file Uky Yudatama, S.Si, M.Kom 56
  • 57. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) Contoh program .model small .code org 100h MULAI: - C. Atribut File Persyaratan untuk atribut file Jenis atribut file pada DOS antara lain: - Read Only - Hidden - Sistem - Archive - Volume Label - Nama subdirectory DOS menyediakan fungsi service number 43h INT 21h untuk mengatur atribut file dengan mode AL = 00 (melihat atribut file), AL = 01 (untuk mengubah atribut file) dan jenis atribut ditampung di CX yaitu nomor: - 0 untuk file read only - 1 untuk file hidden (sembunyikan file) - 2 untuk file sistem - 3 untuk Volume label - 4 untuk Nama subdirectory - 5 untuk file archive Read only Persyaratan untuk Read only: Contoh program untuk read only (file yang tidak bisa dihapus) .model small .code org 100h MULAI: ------- Hidden file Persyaratan untuk Hidden file: Contoh program untuk hidden file .model small .code org 100h MULAI: ------- Archive Uky Yudatama, S.Si, M.Kom 57
  • 58. BAHASA RAKITAN (PEMROGRAMAN ASSEMBLER) Persyaratan untuk Archive file: Contoh program untuk archive (file yang dapat dibaca dan dihapus) .model small .code org 100h MULAI: ------- • Link dapat juga mengacu kepada alamat situs, misalnya http://www.google.co.id • Properti target mendefinisikan bagaimana halaman target dari sebuah link ditampilkan, apakah _blank (menampilkan pada browser window baru), _parent (menampilkan pada dokumen tempat frame berada), _self (menampilkan pada browser aktif), atau _top (menampilkan pada halaman utama). 1. 2. 3. Uky Yudatama, S.Si, M.Kom 58