Bahasa Rakitan

35
1 | Bahasa Rakitan ||| Rolis Afrian, S.Kom 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

Transcript of Bahasa Rakitan

Page 1: Bahasa Rakitan

1 | B a h a s a R a k i t a n | | | R o l i s A f r i a n , S . K o m

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

Page 2: Bahasa Rakitan

2 | B a h a s a R a k i t a n | | | R o l i s A f r i a n , S . K o m

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 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 merupakan 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

Page 3: Bahasa Rakitan

3 | B a h a s a R a k i t a n | | | R o l i s A f r i a n , S . K o m

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.

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

Page 4: Bahasa Rakitan

4 | B a h a s a R a k i t a n | | | R o l i s A f r i a n , S . K o m

MEMORI Pengertian Memori

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.

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

Page 5: Bahasa Rakitan

5 | B a h a s a R a k i t a n | | | R o l i s A f r i a n , S . K o m

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

Page 6: Bahasa Rakitan

6 | B a h a s a R a k i t a n | | | R o l i s A f r i a n , S . K o m

Cara penulisan alamat memori 1234:DCBA memberi alamat absolute 1FFFAH.

Penunjukan alamat memori oleh mikroprosesor dilakukan oleh register BX.

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

Page 7: Bahasa Rakitan

7 | B a h a s a R a k i t a n | | | R o l i s A f r i a n , S . K o m

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 :

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

Page 8: Bahasa Rakitan

8 | B a h a s a R a k i t a n | | | R o l i s A f r i a n , S . K o m

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.

Page 9: Bahasa Rakitan

9 | B a h a s a R a k i t a n | | | R o l i s A f r i a n , S . K o m

Macam-macam Jenis dan Fungsi Register

Berikut ini jenis dan fungsi dari masing-masing Register yaitu :

1. General Purpose Register (Register Serbaguna)

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)

o Memasukkan nomor layanan interupsi, untuk keperluan pemesanan sebuah

layanan interupsi (register AH).

o Menyimpan bilangan yang dikalikan (reg AL, AX, EAX) dan setengan

bagian terkecil (LSB) dari hasil perkalian (register DX-AX dan EDX-EAX).

o 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:

o Pencacah untuk operasi loop (CX dan ECX)

o Pencacah untuk operasi shift dan rotate (CL)

o Pencacah (counter) untuk operasi string (CX)

d. Register DX (Data register)

Data register adalah register serbaguna yang berfungsi sebagai :

o Penyimpan hasil perkalian 16 bit (DX-AX) dan 32 bit (EDX-EAX).

o Penyimpan hasil pembagian (DX-AX dan EDX-EAX)

o 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

Page 10: Bahasa Rakitan

10 | B a h a s a R a k i t a n | | | R o l i s A f r i a n , S . K o m

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

Extra segment -> register tambahan untuk operasi string

Stack segment -> dengan SP untuk menunjukkan stack dan memanggil suatu

prosedur (CALL) dan mengarah ke program utama (RET).

FS dan GS register -> register tambahan untuk 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.

Page 11: Bahasa Rakitan

11 | B a h a s a R a k i t a n | | | R o l i s A f r i a n , S . K o m

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.

Page 12: Bahasa Rakitan

12 | B a h a s a R a k i t a n | | | R o l i s A f r i a n , S . K o m

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 : C:\>TASM

LATIH1.ASM LATIH1.OBJ (enter) atau

C:\>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

Page 13: Bahasa Rakitan

13 | B a h a s a R a k i t a n | | | R o l i s A f r i a n , S . K o m

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:

C:\>TASM /L nama_file.ASM (enter)

Untuk membuka file .LST kita harus menjalankan teks editor dan membuka file .LST

C:\>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 :

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

Page 14: Bahasa Rakitan

14 | B a h a s a R a k i t a n | | | R o l i s A f r i a n , S . K o m

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

Page 15: Bahasa Rakitan

15 | B a h a s a R a k i t a n | | | R o l i s A f r i a n , S . K o m

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.

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.

Page 16: Bahasa Rakitan

16 | B a h a s a R a k i t a n | | | R o l i s A f r i a n , S . K o m

Untuk membuat program bahasa rakitan /assembler memerlukan perlengkapan berupa

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)

Page 17: Bahasa Rakitan

17 | B a h a s a R a k i t a n | | | R o l i s A f r i a n , S . K o m

DEBUG.COM DEBUG.COM adalah alat bantu dalam perancangan peralatan berbasis mikro-

prosesor, karena dapat mencapai tingkat perangkat keras yang paling dalam dari suatu

komputer, misal menulis informasi ke dalam boot sector, direktori, FAT, menjalankan

interupsi BIOS atau DOS. Hal-hal penting dalam Debug :

Hanya mengenal dan selalu bekerja dengan bilangan-bilangan heksadesimal

Bekerja dengan penunjukan ke alamat-alamat memori memakai format segment :

offset.

Kemampuan mengakses daerah "very low level access" (software / hardware).

Setiap jenis komputer (mainframe, minicomputer, microcomputer) memiliki sarana

debugging berbeda. Langkah mengaktifkan DEBUG.EXE / DEBUG.COM :

C:\> Debug (enter)

-

Perintah DEBUG.COM

1. R (Register)

Untuk menampilkan informasi komposisi register-register di dalam mikroprosesor,

alamat memori, serta isi dari alamat memori tersebut yang mungkin berupa instruksi yang

akan dilaksanakan oleh komputer, atau data.

Contoh :

C:\>DEBUG (enter)

r (enter)

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000

DS=29E7 ES=29E7 SS=29E7 CS=29E7 IP=0100 NV UP EI PL NZ NA PO NC

29E7:0100 0114 ADD[SI],DX DS:0000=20CD

AX, BX, CX, DX, SP, BP, SI, DI, DS, ES, SS, CS, dan IP adalah register internal

mikroprosesor yang dipakai dalam CPU.

NV, UP, EI, PL, NZ, NA, PO, dan NC adalah output dari sebuah register yang disebut

register status atau register flag.

Page 18: Bahasa Rakitan

18 | B a h a s a R a k i t a n | | | R o l i s A f r i a n , S . K o m

Angka 29E7:0100 adalah alamat lokasi memori dengan format segment:offset. Kedua

nilai tersebut merupakan kombinas antara register CS (Code Segment) dengan IP

(Instruction Pointer).

0114 adalah isi alamat memori bersangkutan, byte ke-1 berisi nilai '01', dan byte ke-2

berisi nilai '14'. Karena setiap alamat memori berisi satu byte, tentunya nilai 01 itulah

yang berdiam pada alamat offset 0100, sedangkan nilai 14 ada di alamat 0101

ADD[SI],DX adalah terjemahan intruksi dari alamat memori bersangkutan.

Untuk mengubah nilai-nilai register internal dapat menggunakan perintah :

RAX = mengubah nilai register AX

RBX = mengubah nilai register BX

RCX = mengubah nilai register CX

RDX = mengubah nilai register DX

RSP = mengubah nilai register SP

RBP = mengubah nilai register BP

RSI = mengubah nilai register SI

RDI = mengubah nilai register DI

RDS = mengubah nilai register DS

RES = mengubah nilai register ES

RSS = mengubah nilai register SS

RCS = mengubah nilai register CS

RIP = mengubah nilai register IP

Sebagai contoh untuk mengubah nilai register AX dari nilai '0000' ke nilai '1111' :

C:\>Debug (enter)

-RAX (enter)

AX 0000 : 1111 (diisi setelah ':' dan enter)

Contoh diatas juga berlaku untuk register internal lainnya dan untuk diperhatikan bahwa

angka-angka yang dimasukkan kedalam register harus nilai heksadesimal.

Page 19: Bahasa Rakitan

19 | B a h a s a R a k i t a n | | | R o l i s A f r i a n , S . K o m

2. D (Dump)

Berfungsi untuk melihat isi blok memori.

Contoh :

C:\>Debug (enter)

-d 0100 (enter)

Hasil yang diperoleh : (import dari sidekick ke text !)

Dari tampilan tersebut, terbagi menjadi 3 bagian, yaitu :

Bagian kiri : menampilkan alamat-alamat memori dengan format segment:offset

Bagian tengah : menampilkan angka-angka dalam heksadesimal sebagai isi dari

alamat-alamat memori

Bagian kanan : menampilkan kode-kode karakter ASCII sebagai terjemahan dari

angka heksadesimal tersebut.

Debug hanya akan memperlihatkan 96 jenis karakter ASCII tercetak (printable

character), mulai dari nilai desimal 33 - 127. Di luar nilai itu, karakter yang ditampilkan

hanyalah berupa tanda titik (dot atau period).

Beberapa parameter yang dapat digunakan :

L (length / panjang)

Memiliki arti menampilkan data sepanjang 2 byte, bila parameter 'L' tidak

diberikan, maka otomatis akan ditampilkan 128 byte data.

D 0100 L 2 (enter)

Alamat awal - alamat akhir

-D 0100 01FF (enter)

Alamat segment:offset

-D FFFF:0000 (enter)

Alamat segment:offset sampai segment:offset

-D F000:E000 F000:E000 (enter)

Page 20: Bahasa Rakitan

20 | B a h a s a R a k i t a n | | | R o l i s A f r i a n , S . K o m

3. U (Unassemble)

Berfungsi untuk menampilkan listring dari suatu program bahasa mesin.

Contoh :

C:\>Debug (enter)

-U FFFF:0000 (enter)

Hasil : import dari sidekick ke text !

Beberapa bentuk perintah 'U' :

· U F000:E05B (enter)

4. E (enter)

Berfungsi untuk mengisi atau mengubah data dalam memori.

Contoh :

C:\>Debug (enter)

-E 0100 (enter)

Hasil :

-E 0100

29E7:0100 01.

Setelah angka 01, dapat dimasukkan nilai untuk mengganti angkat tersebut langsung

di belakangnya yang diakhir dengan menekan ENTER atau menekan SPACE BAR untuk

berpindah ke alamat berikutnya atau menekan tanda '-' (Hyphen) untuk mundur ke lokasi

sebelumnya.

5. F (Fill)

Berfungsi untuk mengisi lokasi memori. Perbedaan dengan perintah 'E (Enter)', yang

menawarkan modifikasi memori secara satu alamt demi satu alamat, sedang 'F (Fill"

untuk mengubah isi alamat memori dalam jumlah besar, sesuai dengan rentang (range)

yang dikehendaki.

Contoh :

C:\>Debug (enter)

-F 0100 017F 58 (enter)

Page 21: Bahasa Rakitan

21 | B a h a s a R a k i t a n | | | R o l i s A f r i a n , S . K o m

Berarti isilah mulai alamat offset 0100 sampai offset 017F dengan nilai heksa 58

(karakter ASCII 'x').

atau

- F F 0100 017F 'x' (enter)

Beberapa bentuk perintah 'F' :

· F 0100 L 1 41 (enter)

Arti : mulai offset 0100 sebanyak 1 byte diisi dengan nilai heksa 41 (karakter ASCII

‘A’)

6. C (Compare)

Berfungsi untuk membandingkan isi sebuah blok memori dengan isi blok memori

lainnya. Format perintah : C alamat1 panjang alamat2

Contoh :

C:\>Debug (enter)

-C 0100 L 10 0200 (enter)

Berarti mulai offset 0100 sebanyak 16 byte (10 heksa) bandingkan dengan offset

0200. Hasil yang dimunculkan hanyalah nilai-nilai yang berbeda setiap alamat. Apabila

dilayar tidak memberikan reaksi apapun selain kembali ke prompt '-' atau hyphen, berarti

kedua blok memori persis sama.

7. S (Search)

Berfungsi untuk mencari data baik yang berupa karakter maupun untaian karakter

(string) di dalam suatu blok memori tertentu. Apabila dalam pencarian, data yang dicari

diketemukan, maka akan ditampilkan semua alamat dari data tersebut lengkap dengan

nilai segment dan offsetnya, sebaliknya bila tidak diketemukan akan kembali ke

prompt '-'.

Format perintah : S alamat awal panjang alamat akhir

Contoh :

C:\>Debug (enter)

-S F000:E000 L FF "IBM" (enter)

Berarti mulai alamat F000:E000 sebanyak FFh byte cari string "IBM".

-S F000:E000 L FF "A" (enter)

Berarti mulai alamat F000:E000 sebanyak FFh byte cari string "A"..

Page 22: Bahasa Rakitan

22 | B a h a s a R a k i t a n | | | R o l i s A f r i a n , S . K o m

8. M (Move)

Berfungsi untuk memindahkan atau menyalin data yang ada di suatu lokasi memori

ke alamat memori lainnya.

Format perintah : M alamat asal panjang alamat tujuan

Contoh :

C:\>Debug (enter)

-M 0100 L 7F 0200 (enter)

Berarti mulai alamat offset 0100 sebanyak 7Fh byte isi memorinya pindahkan atau

kopikan ke offset 0200.

9. A (Address)

Memulai program pada Address alamat offset memori.

Contoh: -A100 ; memulai program pada offset 100

10. G (Go)

Untuk menjalankan/mengeksekusi kode program.

Contoh: -G ; menjalankan/mengeksekusi program

11. W (Write)

Untuk menyimpan program yang telah ditulis ke media penyimpan.

12. Q (Quit)

Untuk keluar dari program DEBUG.com

Selain perintah-perintah yang disebutkan diatas masih banyak perintah DEBUG yang

lainnya, dari pembahasan perintah-perintah DEBUG.com dapat disimpulkan bahwa

DEBUG.com dibuat dengan tujuan untuk dapat mengeksplorasi program-program yang

sudah dibuat berikut segala dampaknya terhadap sistem dan aplikasi, sedangkan

ASSEMBLY diadakan dengan untuk mempermudah seorang programmer dalam

menyusun instruksi-instruksi pada sebuah program yang sedang dibuat.

Page 23: Bahasa Rakitan

23 | B a h a s a R a k i t a n | | | R o l i s A f r i a n , S . K o m

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

Page 24: Bahasa Rakitan

24 | B a h a s a R a k i t a n | | | R o l i s A f r i a n , S . K o m

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.

Pembuatan program dengan Debug

Program yang tersedia dalam PCDOS atau MSDOS berupa Debug.Com,

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 ( _ )

Page 25: Bahasa Rakitan

25 | B a h a s a R a k i t a n | | | R o l i s A f r i a n , S . K o m

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)

Page 26: Bahasa Rakitan

26 | B a h a s a R a k i t a n | | | R o l i s A f r i a n , S . K o m

- 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

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

-

Page 27: Bahasa Rakitan

27 | B a h a s a R a k i t a n | | | R o l i s A f r i a n , S . K o m

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 ditampilkan di layar dengan memanfaatkan nomor pelayanan interupsi INT

21H service 02H yang disimpan dalam register AH.

Contoh menggunakan DEBUG.COM

Untuk membuat program COBA2.COM dengan Turbo Assembler, maka file harus

diberi nama COBA2.ASM yang diketik dalam teks editor yang ada yaitu :

Contoh menggunakan TASM:

Coba segment

Assume CS: Coba

Org 100h

Page 28: Bahasa Rakitan

28 | B a h a s a R a k i t a n | | | R o l i s A f r i a n , S . K o m

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 loop menggunakan DEBUG.COM

Page 29: Bahasa Rakitan

29 | B a h a s a R a k i t a n | | | R o l i s A f r i a n , S . K o m

A100 ;mulai program pada offset 100h

MOV AH,02 ;service tampilan mode text

MOV CX,1A ;mengisi register CX dengan nilai 26

MOV DL,41 ;mengisi register DL dengan huruf A

INT 21 ;mencetak ke layar

INC DL ;menambah nilai DL dengan 1

LOOP 0107 ;perulangan dimulai offset 0107

;sejumlah register CX (26 kali)

INT 20 ;akhir program

G ;jalankan program

Contoh program loop bersarang/bertingkat menggunakan DEBUG.COM

-A100 ;mulai offset 100

Page 30: Bahasa Rakitan

30 | B a h a s a R a k i t a n | | | R o l i s A f r i a n , S . K o m

MOV AH,02 ;mode text

MOV CX,0D ;isi register counter CX dengan angka 0D

MOV DL,41 ;isi register data dengan karakter A (hex:41)

PUSH CX ;simpan isi register CX

MOV CX,04 ;isi register counter CX dengan angka 04

INT 21 ;tampilkan ke layar

LOOP 010B ;lakukan perulangan

POP CX ;ambil kembali isi register CX

INC DL ;naikkan nilai isi register data

INT 21 ;tampilkan dilayar

INC DL ;naikkan nilai isi register data

LOOP 0107 ;lakukan perulangan

INT 20 ;akhir program

-G ;eksekusi

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 menampilkan NAMA dan NIM menggunakan DEBUG.COM

A100 ;mulai program pada offset 100h

MOV AH,02 ;service tampilan mode text

Page 31: Bahasa Rakitan

31 | B a h a s a R a k i t a n | | | R o l i s A f r i a n , S . K o m

MOV DL,53 ;mengisi register DL dengan huruf S

INT 21 ;mencetak ke layar

MOV DL,55 ;mengisi register DL dengan huruf U

INT 21 ;mencetak ke layar

MOV DL,4B ;mengisi register DL dengan huruf K

INT 21 ;mencetak ke layar

MOV DL,49 ;mengisi register DL dengan huruf I

INT 21 ;mencetak ke layar

MOV DL,4F ;mengisi register DL dengan huruf O

INT 21 ;mencetak ke layar

MOV DL,4E ;mengisi register DL dengan huruf N

INT 21 ;mencetak ke layar

MOV DL,4F ;mengisi register DL dengan huruf O

INT 21 ;mencetak ke layar

MOV DL,20 ;mengisi register DL dengan spasi

INT 21 ;mencetak ke layar

MOV DL,2D ;mengisi register DL dengan karakter –

INT 21 ;mencetak ke layar

MOV DL,20 ;mengisi register DL dengan spasi

INT 21 ;mencetak ke layar

MOV DL,32 ;mengisi register DL dengan huruf 2

INT 21 ;mencetak ke layar

MOV DL,30 ;mengisi register DL dengan huruf 0

INT 21 ;mencetak ke layar

MOV DL,31 ;mengisi register DL dengan huruf 1

INT 21 ;mencetak ke layar

MOV DL,30 ;mengisi register DL dengan huruf 0

INT 21 ;mencetak ke layar

MOV DL,32 ;mengisi register DL dengan huruf 2

INT 21 ;mencetak ke layar

MOV DL,32 ;mengisi register DL dengan huruf 2

INT 21 ;mencetak ke layar

MOV DL,30 ;mengisi register DL dengan huruf 0

INT 21 ;mencetak ke layar

Page 32: Bahasa Rakitan

32 | B a h a s a R a k i t a n | | | R o l i s A f r i a n , S . K o m

MOV DL,39 ;mengisi register DL dengan huruf 9

INT 21 ;mencetak ke layar

MOV DL,31 ;mengisi register DL dengan huruf 1

INT 21 ;mencetak ke layar

INT 20 ;akhir program

G ;jalankan program

Output yang dihasilkan:

Untuk membuat beberapa huruf yang disusun satu persatu dengan Turbo

Assembler, maka program harus diketik dalam teks editor yaitu :

;Menyusun beberapa huruf kode ASCII

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

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

Page 33: Bahasa Rakitan

33 | B a h a s a R a k i t a n | | | R o l i s A f r i a n , S . K o m

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

C\Assembler>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

Page 34: Bahasa Rakitan

34 | B a h a s a R a k i t a n | | | R o l i s A f r i a n , S . K o m

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

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

Page 35: Bahasa Rakitan

35 | B a h a s a R a k i t a n | | | R o l i s A f r i a n , S . K o m

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.