Bahasa assembler adalah sebuah program komputer untuk menterjemahkan bahasa assembly, intinya sebuah representasi mnemonic dari bahasa mesin menjadi kode objek. Selain menterjemahkan instruksi assembly mnemonic menjadi opcode, assembler juga menyediakan kemampuan untuk menggunakan nama simbolik untuk lokasi memori (menghindari perhitungan rumit dan pembaruan alamat secara manual ketika sebuah program diubah sedikit), dan fasilitas makro untuk melakukan penggantian textual yang artinya digunakan untuk menggantikan suatu urutan instruksi yang pendek untuk dijalankan perbaris dan bukan dalam sebuah subrutin..
Bahasa assembly
dikategorikan sebagai tingkat rendah (low level language). Ini untuk
menggambarkan kekhususannya sebagai bahasa yang berorientasi pada machine
dependent. Untuk membandingkan bahasa mesin dan assembly, kita dapat
melihatnya dari 3 karakteristik berikut :
1. Mnemonic operation
code : sebagai pengganti numeric operation code (opcodes) yang digunakan pada
bahasa mesin, digunakanlah mnemonic code pada bahasa assembly. Selain kemudahan
dalam penulisannya dibandingkan dari bahasa mesin juga mendukung pelacakan
kesalahan seperti kesalahan penulisan operation code.
2. Symbol operand
specification : Penamaan simbol sebagai suatu data atau instruksi. Operand
lebih menunjukkan symbolic reference dibandingkan dengan
alamat mesin suatu data atau instruksi. Hal ini akan mempermudah pada saat
harus dilakukan modifikasi program.
3. Declaration of
data/storage area : Data dapat dinyatakan dalam notasi desimal. Ini dilakukan
untuk mencegah konversi secara manual dari konstanta ke dalam representasi
internal mesin.
A. Multi-Pass
Translation
Multi pass translation dalam program bahasa
assembly dapat menangani masalah forward reference. Unit pada
source program digunakan untuk tujuan mentranslasi semua bagian program. Ketika
fase analisis statement program pertama kali dilakukan, proses LC akan
dikerjakan dan simbol yang didefinisikan dalam program dimasukkan ke dalam
simbol table.Selama second pass, statement diproses dengan tujuan
mensintesa target form. Semua simbol dan alamat yang dapat
ditemukan dalam simbol table tidak akan menimbulkan forward reference pada
assembly.
Kalimat "equivalent representasion" digunakan pada translasi
yang membutuhkan elaborasi. Sering kali ketika proses pemisahan field label, mnemonic
opcode dan operand fieldterjadi duplikasi. Untuk
mengurangi duplikasi tersebut, hasil analisa source atatement dari first
pass direpresentasikan dalam internal form pada source
statement. Bentuk ini disebutintermediate code. Ilustrsi dari skema two
pass assembler dengan menggunakan intermediate code form dapat dilihat pada
gambar berikut ini.
Selain membangun intermediate
code, suatu assembler pass juga membangun dan/atau mengganti database yang
digunakan sebsequent pass. Karena kebutuhan untuk membangun dan
memproses intermediate code, suatu multi pass translator menjalankan
fungsinya lebih lambat dibandingkan dengan single pass translation.

