Assembler merupakan program yang digunakan untuk menterjemahkan program aplikasi yang ditulis dengan bahasa perakit (assembly language) atau bahasa pe
Gambar oleh Thanks for your Like • donations welcome dari Pixabay |
Language Software - Assembler - Assembler merupakan program yang digunakan untuk menterjemahkan program aplikasi yang ditulis dengan bahasa perakit (assembly language) atau bahasa pemrograman simbolik (symbolic programming language) menjadi bahasa mesin. Dengan bahasa simbolik, masing-masing op-code dalam bahasa mesin tidak ditulis dengan bentuk bilangan binari, tetapi dengan suatu kode simbolik singkatan tertentu yang disebut dengan mnemonic. Instruksi program yang ditulis dengna mnemonic akan diterjemahkan ke dalam bentuk bilangan binari bahasa mesin dengna menggunakan assembler. Program yang ditulis dengan bahasa simbolik tersebut disebut dengan source program (program sumber) dan hasil penterjemahan ke dalam bahasa mesin disebut dengan object program (program obyek).
Berikut ini akan diberikan suatu contoh program dalam bahasa assembly yang sederhana untuk menunjukkan bagaimanakah suatu program assembly tersebut ditulis. Program ini dimaksudkan untuk mencetak suatu teks atau tulisan karakter string SAYA KOMPUTER di layar terminal, menggunakan Microsoft Macro Asembler pada komputer IBM PC, sebagai berikut:
COMMENT *
Cetak tulisan SAYA KOMPUTER di layar
dengan nama executable program CONTOH1.COM *
kode SEGMENT
ASSUME CS : kode, DS : kode
mulai:
;tampilkan tulisan
MOV AH, 9;fungsi DOS
MOV DX, OFFSET tulisan ; isi tulisan di DX
INT 21h
20h ; selesai
tulisan DB 'saya komputer$'
kode ENDS
END mulai
Struktur dari source program dalam bahasa assembly seperti tampak pada program diatas adalah tiap-tiap instruksi program dapat dibentuk dalam urutan 4 kolom sebagai berikut:
label operasi operand komentar
Label merupakan suatu simbol, dapat berupa suatu tanda yang menunjukkan nama dari segment, offset atau type. label juga dapat digunakan untuk arah loncatan dari suatu instruksi. Nama dari label ini bebas dan boleh ada serta boleh tidak ada dalam suatu instruksi.
Operasi merupakan suatu simbol mnemonic yang dapat berupa suatu kode dari operasi instruksi assembler (disebut dengan operation code atau op-code) atau dapat berupa suatu pseudo operation (pseudo-op atau assembler directivei). Operasi ini harus ada.
Operand merupakan satu atau lebih operand yang membentuk suatu ekspresi penyedia informasi yang dibutuhkan oleh operasi untuk melakukan fungsinya. Operand bisa ada dan bisa tidak ada tergantung dari instruksinya.
Komentar digunakan untuk memperjelas atau untuk memberi keterangan pada instruksi-instruksi program. Komentar ini didahului dengna tanda semicolon (;). Komentar boleh ada dan boleh tidak ada.
Penulisan label, operasi, operand atau pun komentar bebas disegala posisi kolom dari program, tidak terikat di kolom tertentu.
Pada contoh program:
- COMMENT merupakan suatu pseudo-op yang dapat digunakan untuk memberi keterangan atau komentar dari program.
Format dari pseudo-op COMMENT adalah sebagai berikut:COMMENT pembatas komentar pembatas
Pembatas dapat digunakan karakter apa pun (dalam contoh digunakan karakter *) dan komentar ditulis diantara pembatas.
COMMENT (pseudo-op) * (pembatas awal)
Cetak tulisan SAYA KOMPUTER di layar
dengan nama executable program CONTOH1.COM (komentar) * (pembatas akhir)
- SEGMENT merupakan pseudo-op yang menunjukkan segment main memory letak dari instruksi dan data program assembly.
SEGMENT didahului dengan label yang menunjukkan nama dari segmentnya.
nama segmen SEGMENT
nama-segment ENDS
Pada contoh program, nama dari segment adalah kode (tidak harus kode, tetapi bisa nama yang lainnya, karena merupakan suatu label). - ASSUME merupakan pseudo-op yang menunjukkan kepada assembler letak dari segment untuk segment register. Pada contoh program, segment register yang dipergunakan adalah CS dan DS. Register CS (code segment) menunjukkan segment letak dari kode instruksi, sedang register DS (Data segment) menunjukkan segment letak dari data.
Bentuk instruksi dari contoh program sebagai berikut:
ASSUME CS : kode, DS : kode
menunjukkan instruksi dan terletak pada segment yang sama.
- ORG merupakan pseudo-op yang menunjukkan letak awal dari alamat memori dalam suatu segment. Bentuk instruksi sebagai berikut:
ORG 100h
menunjukkan instruksi akan diletakkan mulai dari alamat memori 100 hexadesimal (125 desimal) pada segment kode. Hal ini perlu untuk executable program yang mempunyai extension .COM, yang umumnya diletakkan pada alamat memori 100h di segment. Sebenarnya, hasil dari executable program dapat berbentuk extension .COM ataupun .EXE. Executable program dengan extension M lebih kecil dan dapat diambil lebih cepat dibandingkan dengan extension . EXE, sehingga contoh pada artikel ini digunakan yang ber-extension .COM. Executable progrma dengan extension .COM selain mempunyai keuntungan dibandingkan dengan yang ber-extension .EXE, tetapi juga mempunyai kelemahan, yaitu maksimal sebesar 64 KB, sehingga hanya dapat menggunakan sebuah segment saja (karena satu segment untuk IBM PC sebesar 64 KB). Oleh karena itu, isntruksi dan data tidak dapat diletakkan pada segment yang terpisah (akan lebih besar dari 64 KB), harus dalam satu segment yang sama (ditunjukkan pada pseudco-op ASSUME). - MULAI: merupakan label yang menunjukkan awal dari instruksi-instruksi yang akan diproses.
- MOV merupakan op-code yang digunakan untuk memindahkan suatu nilai ke suatu lokasi. Format dari op-code MOV adalah sebagai berikut:
MOV tujuan,sumber
Bentuk instruksi sebagai berikut:
MOV AH,9 ;fungsi DOS
berarti register AH diisi dengan nilai data 9. Mengapa register AH harus diisi dengan nilai tersebut? Tentunya hal ini mempunyai maksud yang tertentu. Untuk menampilkan suatu bentuk karakter string di layar terminal, assembler tidak menyediakan suatu instruksi yang khusus, tetapi dapat dilakukan dengan menggunakan fasilitas dari DOS. Fasilitas dari DOS dapat diaktifkan dengan menggunakan op-code INT (interrupt). Salah satu interrupt DOS yang pentung adalah dengan memberikan nilai 21 hexadesimal, yang menyediakan beberapa fungsi operasi yang sangat berguna. Untuk menggunakan fungsi ini, suatu nilai fungsi tertentu harus diletakkan di register AH. Adapun nilai-nilai fungsi tersebut adalah tampak pada tabel berikut ini:Tabel Fungsi dari Interrupt DOS 21 Hexadesimal
Nilai Register AH Fungsi yang diberikan 1 input dari keyboard 2 menampilkan karakter 3 input dari serial-port 4 output ke serial-port 5 output ke printer 6 input atau output langsung 7 input ditampilkan tanpa pengecekan Ctrl-Break 8 input dari keyboard tanpa ditampilkan 9 menampilkan karakter string A buffer keyboard B status dari input 25 mnengganti vektor interrupt 2A mengambil tanggal sistem 2B merubah tanggal sistem 2C mengambil jam sistem 2D merubah jam sistem 30 mengambil nomor versi DOS 31 menghentikan proses program, tetapi masih di memori 35 mengambil vektor interrupt 36 mengambil parameter disk 3C membuat file 3D membuka file 3E menutup file 3F membaca file atau peralatan lain 40 menulis di file atau peralatan lain 41 menghapus file 43 attribut dari file 4A merubah alokasi memori 4B mengambil dan memproses program dari disk 4C menghentikan proses program 4D menentukan kode kesalahan 56 mengganti nama file 57 mengambil dan merubah tanggal dan jam file
Tampak pada tabel, untuk menampilkan di layar terminal suatu karakter string, maka nilai fungsi 9 harus diletakkan di register AH. Sebelum dilakukan interupt terhadap DOS, maka register DX (data register) diisi terlebih dahulu dengan data karakter string yang akan ditampilkan, dilakukan dengan op-code sebagai berikut:
MOV DX, OFFSET tuliskan ;isi tulisan di DX
Instruksi tersebut menunjukkan register DX akan diisi dengan nilai yang ada di label yan ditunjukkan oleh operator OFFSET, yaitu nilai di nama label tulisan. Pada baris di nama label tulisan, terdapat pseudo-op DB (Define Byte) yang digunakan untuk mendefinisikan suatu nilai. Kalau nilai yang didefinisikan berupa string, maka diakhiri dengan tanda dollar ($), sebagai berikut:
tulisan DB 'SAYA KOMPUTER$' - INT merupakan op-code yang digunakan untuk melakukan iterupt terhadap DOS atau BIOS untuk melakukan operasi yang tertentu. Interupt terhadap DOS dengan nilai 21 hexadesimal akan menyebabkan DOS melakukan suatu operasi tergantung dari nilai yang ada di register AH. Register AH bernilai 9, maka dengan instruksi:
INT 21h
akan menyebabkan DOS menampilkan karakter string yang ada di register DX. Sedang interupt DOS 20 hexadesimal digunakan untuk menghentikan executable program yang terbentuk extension .COM. Bila executable program menggunakan extension .EXE, maka untuk menghentikan proses program dapat dilakuakn dengan mengisi register AH dengan nilai 4C dan dilakukan interupt DOS 21 hexadesimal (lihat tabel).
Langka-langkah berikut ini menjelaskan cara pembuatan source program dalam bahasa assembly sampai menjadi executable program dengan extension .COM, sebagai berikut:
- Membuat source program.
Source program dibuat dengan menggunakan service yang disediakan oleh OS, yaitu text editor atau dapat menggunakan program paket pengolah kata. Pada komputer IBM PC dengan operating sistem PC-DOS atau MS-DOS, text editor disimpan di disk dengan nama filenya EDLIN.COM. Pertama kali dalam bentuk prompt A> (dalam keadaan sistem operasi MS-DOS atau PC-DOS), anda tuliskan nama dari text editor yang akan dipergunakan, yaitu EDLIN (.COM tidak perlu dituliskan), diikuti oleh nama file source program dan penekanan tombol RETURN sebagai berikut:
A>edlin b:contoh1.asm
Anda ketik dan tekan tombol RETURN untuk menggunakan text editor EDLIN.COM guna membuat source program dengan nama file CONTOH1.ASM (extension .ASM menunjukkan file berisi source program assembly) di drive B:
Berikutnya akan tampak di layar:
New file
*
Bentuk ini menunjukkan belum pernah ada file dengan nama CONTOH1.ASM di drive B:. Kalau sudah pernah ada filenya, maka berarti akan memodifikasi isi dari file tersebut. Tanda * menunjukkan EDLIN siap menerima perintah. Anda ingin menulis teks baris per baris, maka tekan tombol 1 diikuti dengan penekanan tombol RETURN.
A>edlin b:contoh1.asm
New file
*i
Tekan tombol I dan tombol RETURN untuk memulai menulis teks.1:*Tanda 1:* Menunjukkan teks baris pertama siap ditulis. Setiap barus teks yang sudah ditulis, diakhiri dengan penekanan tombol RETURN. Jadi bila teks baris pertama telah selesai ditulis dan telah ditekan tombol RETURN, maka teks baris ke 2 siap untuk ditulis.A>edlin b:contoh1.asm
New file
*i
1: *COMMENT *Teks baris pertama yang sudah ditulis, diakhiri dengan penekanan tombol RETURN.2:*Teks baris kedua siap untuk ditulis.
Anda ketik source program assembly tersebut barus demi baris dengan menggunakan EDLIN, sampai baris yang terakhir sebagai berikut:
1:*COMMENT *
2:* Cetak tulisan SAYA KOMPUTER di layar
3:* dengan nama executable program CONTOH1.COM *
4:*
5:*kode SEGMENT
6:* ASSUME CS:kod, DS:kode
7:* ORG 199h
8:*
9:*mulai:
10: ;tampilkan tulisan
11:* MOV AH,9 ;fungsi DOS
12:* MOVE DX, OFFSET tulisan ;isi tulisan di DX
13:* INT 21h
14:* INT 20h ;selesai
15:*
16:*tulisan DB 'SAYA KOMPUTER$'
17:*
18:*kode ENDS mulai
19:*
20:*^C
Penekanan tombol CTRL dan tombol C (^C atau CTRL-C) atau CTRL-Z berarti mengakhiri penulisan teks.
*e Perintah e (penekanan tombol e diikuti oleh penekanan tombol RETURN) berarti end, selesai menggunakan EDLIN, merekam teks ke fule dan kembali ke prompt.
A>
Hasil penulisan source program ini akan direkam di file CONTOH1.ASM di drive B: - Membuat source program menjadi object program.
Source program perlu diterjamahkan ke bahasa mesin menjadi object program. Untuk keperluan ini, maka dapat dipergunakan program assembler, sebagai berikut:
Disamping akan dihasilkan object program, pada proses ini bila terjadi kesalahan di dalam penulisan source program, juga akan ditampilkan daftar dari kesalahan-kesalahannya. Dari daftar kesalahan yang terjadi, source program harus dibetulkan terlebih dahulu, dapat menggunakan text editor EDLIN dan proses ini diulangi kembali sampai source program bebas dari kesalahan-kesalahan. Proses ini dapat dilakukan dengan cara ketiklah MASM atau ASM diikuti dengna penekanan tombol RETURN pada keadaan promp A> sebagai berikut:
A>MASM
mengambil assembler yang ada di disk (dengan nama MASM.EXE) ke main memory untuk dipergunakan.
Maka akan tampak:
Microsoft (R) Macro Assembler Version 4.00
Copyright (C) Microsoft Corp 1981, 1983, 1984, 1985. All rights reserved
Source filename [.ASM] : b:contoh1
nama dari source progrma (anda ketikkan)
Object filename [CONTOH.OBJ]: B:contoh1
nama dari object program yang diinginkan (anda ketikkan)
Source listing [NUL.LST]:
nama dari listing program yang diinginkan (kalau tidak dibutuhkan langsung tekan tombol RETURN)
Cross-reference [NUL.CRF]
nama dari cross reference file yan diinginkan (kalau tidak dibutuhkan langsung tekan tombol RETURN)
50986 Bytes symbol space free
0 Warning Errors
tidak ada kesalahan yang fatal dari source program
0 Severe Errors
tidak ada kesalahan yang ringan dari source program
Hasil dari proses ini didapatkan object program yang disimpan di drive B: dengan nama file CONTOH1.OBJ. - Membuat object program menjadi executable program.
Object program masih belum dapat dijalankan. Supaya dapat dijalankan harus berupa executable program. Untuk membuat menjadi executable program dari object program dapat digunakan program service yang disediakan oleh OS, yaitu linkage editor atau linker, sebagai berikut:
Pada PC-DOS atau MS-DOS, program linker ini disimpan di disk dengna nama file LINK.EXE, sehingga untuk menggunakannya, dapat dipanggil dalam keadaan promp A> sebagai berikut:
A>LINK
memanggil progrma linker (dengan nama filenya LINK.EXE) dari disk ke main memory untuk dipergunakan.
Dan akan tampak:Microsoft (R) Macro Assembler Version 4.00
Copyright (C) Microsoft Corp 1981, 1983, 1984, 1985. All rights reserved
Object Modules [.OBJ] : b:contoh1
nama dari object program (anda ketikkan)
Run File [CONTOH1.EXE] : b:contoh1
nama dari executable program yang diinginkan (anda ketikkan)
List File [NUL.MAP] :
nama dari file map yang diinginkan (kalau tidak dibutuhkan langsung tekan tombol RETURN)
Libraries [.LIB] :
nama dari file pustaka yang akan dipergunakan (kalau tidak dipergunakan langsung tekan tombol RETURN)
Warning: no stack segment
A>
Hasil dari proses ini akan didapatkan executable progrma yang disimpan di file dengan nama CONTOH1.EXE di drive B:. Karena program assembly ini harus berbentuk extension .COM, maka harus dirubah dari extension .EXE menjadi extension.COM dengan program service dari OS dengan nama programnya EXE2BIN.EXE, sebagai berikut:
A.EXE2BIN B:CONTOH1.EXE B:CONTOH1.COM
Hasil dari proses ini akan didapatkan executable program yang disimpan di file dengan nama CONTOH1.COM di drive B: - Menjalankan executable program.
Executable program dapat langsung dijalankan dengan menuliskan nama filenya pada keadaan promp A> sebagai berikut:
A>b:contoh1
SAYA KOMPUTER
nama dari executable program CONOTH1.COM (.COM tidak perlu ditulis) yang berada di drive B: dan tekan tombol RETURN
Pada program assembly, setiap instruksi merupakan sebuah instruksi di bahasa mesin. Kemungkinan sekumpulan instruksi yang sama di program assembly akan ditulis secara berulang-ulang untuk maksud yang sama. Hal ini menimbulkan pemikiran untuk mengembangkan suatu macro instruction (insturksi makro), yaitu sebuah instruksi yang mewakili beberapa instruksi sekaligus. Assembler sekarang umumnya dapat menggunakan instruksi makro tersebut, sehingga assembler-nya juga disebut dengan nama macro assembler. Dengan instruksi makro, maka program assembly akan lebih pendek dan mudah untuk ditulis. Kumpulan dari instruksi yang membentuk suatu makro dibuat di dalam file yang terpisah dan program-program assembly di file-file yang lain dapat menggunakannya berulang-ulang. Sebagai contoh file CONTOH3.MAC (dengan extension .MAC yang menunjukkan file pustaka makro) berisi kumpulan-kumpulan instruksi yang akan digunakan oleh instruksi makro unutk menampulkan hasil string di layar, sebagai berikut:
COMMENT *
PUSTAKA MACRO UNTUK IBM MICROSOFT ASSEMBLER
MACRO DI FILE INI ADALAH :
@tulis MACRO ;tampilkan di layar
*
@tulis MACRO kata?
LOCAL akhir, tulisan
MOV AH,9
MOV DX, OFFSET tulisan
INT 21h
JMP SHORT akhir
tulisan DB kata?,'$'
akhir
ENDM
Dan pada program assembly anda, sekarang tidak perlu selalu menuliskan isntruksi-instruksi untuk menampilkan hasil string di layar, tetapi dapat menggunakan instruksi makro yang memanfaatkan program CONTOH3.ASM tersebut, sebagai berikut:
COMMENT *
Cetak tulisan SAYA KOMPUTER di layar
dengan nama executable program CONTOH2.COM
dengan menggunakan pustaka makro *
IFI
INLUDE CONTOH3.MAC
ENDIF
Kode SEGMENT
ASSUME CS:kode, DS:kode
ORG 100h
Mulai
;tampilkan tulisan
@tulis 'SAYA KOMPUTER'
INT 20h ;selesai
kode ENDS
END mulai
Hartono, Jogiyanto. 2000. Pengenalan Komputer. Yogyakarta: ANDI.
KOMENTAR