Sebuah bahasa assembly adalah bahasa pemrograman tingkat rendah untuk komputer, atau perangkat diprogram lainnya, di mana ada yang sangat kuat (umumnya satu-ke-satu) korespondensi antara bahasa dan instruksi kode mesin arsitektur itu. Setiap bahasa assembly khusus untuk arsitektur komputer tertentu, berbeda dengan kebanyakan bahasa pemrograman tingkat tinggi, yang umumnya portabel di beberapa arsitektur, tetapi membutuhkan menafsirkan atau kompilasi.
Majelis bahasa diubah menjadi kode mesin dieksekusi oleh program utilitas disebut sebagai assembler; proses konversi ini disebut sebagai perakitan, perakitan atau kode.
Bahasa assembly menggunakan mnemonic untuk mewakili setiap instruksi mesin tingkat rendah atau operasi. Operasi khas memerlukan satu atau lebih operan untuk membentuk instruksi lengkap, dan kebanyakan perakit sehingga dapat mengambil label, simbol dan ekspresi sebagai operan untuk mewakili alamat dan konstanta lain, membebaskan programmer dari perhitungan manual membosankan. Perakit makro mencakup pusat macroinstruction sehingga (parameter) teks bahasa assembly dapat diwakili oleh nama, dan nama yang dapat digunakan untuk memasukkan teks yang diperluas menjadi kode lainnya. Banyak perakit menawarkan mekanisme tambahan untuk memfasilitasi pengembangan program, untuk mengontrol proses perakitan, dan untuk membantu debugging