Assembly é uma linguagem de programação de segunda geração. Isto pressupõem que seja uma linguagem de baixo nível, ou seja, uma linguagem de programação que compreende as características da arquitetura do computador.
Na década de 40, Maurice Wilkes' criou a linguagem assembly, onde a programação era feita por meio de mnemônicos simples (ADD, LOAD, STORE), isso ajudou um pouco a evitar erros da transcrição.
Maurice Wilkes, da Universidade de Cambridge, projectou o EDSAC. O computador foi o primeiro a ter a habilidade de interpretar programas em uma linguagem de programação simbólica. As instruções simbólicas poderiam ser traduzidas para as instruções em código binário, para posteriormente serem executados pela máquina. As instruções simbólicas eram perfuradas em fitas de papel e eram lidas pelo EDSAC, que as convertia automaticamente para códigos binários.Programa para somar dois números:
TITLE Numero
.MODEL SMALL
.STACK 100H
.DATA
MSG1 DB 'Digite:','$'
MSG2 DB ' Digite:','$'
MSG3 DB ' A soma e:','$'
NUMERO1 Dw ?
Dw ?
NUMERO2 Dw ?
Dw ?
.CODE
MOV AX,@DATA
MOV DS,AX
;numero 1
LEA DX,MSG1
MOV AH,9
INT 21H
XOR BX,BX
XOR SI,SI
MOV CX,1
M1: MOV AH,1
INT 21H
MOV NUMERO1,Ax
MOV AH,2
MOV DL,''
INT 21H
ADD SI,2
DEC CX
JNZ M1
MOV CX,1
ADD BX,1
MOV AX,1
CMP BX,AX
;numero 2
LEA DX,MSG2
MOV AH,9
INT 21H
XOR BX,BX
XOR SI,SI
MOV CX,1
M2: MOV AH,1
INT 21H
MOV NUMERO2,Ax
MOV AH,2
MOV DL,''
INT 21H
ADD SI,2
DEC CX
JNZ M2
MOV CX,1
ADD BX,1
MOV AX,1
CMP BX,AX
;somando
LEA DX,MSG3
MOV AH,9
INT 21H
XOR BX,BX
XOR SI,SI
MOV CX,1
SOMA: XOR DX,DX
XOR AX,AX
MOV DX,NUMERO1
MOV AX,NUMERO2
ADD AX,DX
SUB AX,30H
MOV DX,AX
MOV AH,2
INT 21H
MOV DL,''
INT 21H
ADD SI,2
DEC CX
JNZ SOMA
MOV CX,1
ADD BX,1
MOV AX,1
CMP BX,AX
MOV AH,4CH
INT 21H
end