El código de máquina o lenguaje de bajo nivel son instrucciones que el procesador puede entender directamente. Las instrucciones son atómicas y realizar tareas simples puede llevar decenas o cientos de líneas.
Un lenguaje de alto nivel es aquel que se asemeja más al lenguaje natural y permite a los programadores escribir código más legible, práctico y compacto.
El compilador (o el intérprete cuando corresponde) es el encargado de convertir el código de alto nivel a código entendible por el procesador.
Para ver la diferencia, esto es un “Hola Mundo” en assembler:
- org
- xor ax, ax
- mov ds, ax
- mov si, msg
- boot_loop:lodsb
- or al, al
- jz go_flag
- mov ah, 0x0E
- int 0x10
- jmp boot_loop
- go_flag:
- jmp go_flag
- msg db 'hello world', 13, 10, 0
- times 510-($-$$) db 0
- db 0x55
- db 0xAA
Mientras que en un lenguaje de alto nivel como C el código sería:
- #include <stdio.h>
- main( ) {
- printf("hello, world\n");
- }
Creo que en los ejemplos la diferencia queda bastante clara. :)