Asembler (ang. assemble – składać) jest to program, który ma za zadanie tłumaczyć język asemblera na język maszynowy, czyli dokonywać tzw. asemblacje.
Jest to swoisty odpowiednik kompilacji dla języków wyższych poziomów.
Program tworzony w innych językach programowania niż asembler jest zwykle kompilowany do języka maszynowego (wyniku pracy asemblera), a następnie zamieniany na kod binarny przez program asemblera.
Powtarzające się często schematy programistyczne oraz wstawiane fragmenty kodu doprowadziły do powstania tzw. makroasemblerów, które rozszerzają asemblery o obsługę makr przed właściwą asemblacją, co zbliża je nieco do pierwszych wersji języka C.