Machinetaal, de numerieke codes voor de bewerkingen die een bepaalde computer direct kan uitvoeren. De codes zijn reeksen van 0’s en 1’s, of binaire cijfers (“bits”), die vaak worden omgezet van en naar hexadecimaal (basis 16) voor menselijke weergave en wijziging. Machinetaalinstructies gebruiken gewoonlijk enkele bits om operaties weer te geven, zoals optellen, en enkele bits om operanden weer te geven, of misschien de plaats van de volgende instructie. Machinetaal is moeilijk te lezen en te schrijven, omdat het niet lijkt op conventionele wiskundige notatie of menselijke taal, en de codes verschillen van computer tot computer.
Assembly language is one level above machine language. Het gebruikt korte mnemotechnische codes voor instructies en staat de programmeur toe namen te introduceren voor blokken geheugen die gegevens bevatten. Zo kan men schrijven “add pay, total” in plaats van “0110101100101000” voor een instructie die twee getallen optelt.
Assembleertaal is ontworpen om gemakkelijk te worden vertaald naar machinetaal. Hoewel blokken gegevens kunnen worden aangeduid met een naam in plaats van met hun machine-adressen, biedt assembleertaal geen meer verfijnde middelen om complexe informatie te ordenen. Net als machinetaal vereist assembleertaal gedetailleerde kennis van een bepaalde interne computerarchitectuur. Het is nuttig wanneer dergelijke details belangrijk zijn, zoals bij het programmeren van een computer voor interactie met invoer- en uitvoerapparaten (printers, scanners, opslagapparaten, enzovoort).