Ensamblador

.STACK n sirve para fijar un tamaño n del segmento de pila, por defecto 1K. 

.DATA abre el segmento de datos. 

.CODE abre el segmento de código, al final código debe aparecer END.

.TEXT

text le dice al ensamblador que la información que sigue es el texto del programa (instrucciones de montaje), y el código de máquina traducido debe escribirse en el segmento de texto de la memoria.

DB, DW y DD se usan para asignar espacio a las variables en memoria. DB tamaño byte, DW tamaño WORD y DD tamaño DWORD.

MOV 
realiza la transferencia de datos del operando de origen al destino. Como ya hemos visto en 
la parte de los modos de direccionamiento, MOV admite todos los tipos de direccionamiento. 
Ambos operandos deben ser del mismo tamaño y no pueden estar ambos en memoria.

mov rax, 1: Mueve el valor 1 al registro rax, que es utilizado para especificar el número de la llamada al sistema en Linux.

mov rdi, 1: Mueve el valor 1 al registro rdi, que es utilizado como el primer argumento de la llamada al sistema en Linux (en este caso, indica la salida estándar).

mov rsi, msg: Mueve la dirección de memoria de la variable msg al registro rsi, que es utilizado como el segundo argumento de la llamada al sistema en Linux (en este caso, indica la dirección de la cadena a imprimir).

mov rdx, 13: Mueve el valor 13 al registro rdx, que es utilizado como el tercer argumento de la llamada al sistema en Linux (en este caso, indica la longitud de la cadena a imprimir).

Syscall() 
lleva a cabo la llamada al sistema cuya interfaz con el lenguaje ensamblador está definida por number con los argumentos especificados.

msg db "Hello world!", 0ah: Aquí se define la variable msg como una cadena de caracteres que contiene el mensaje "Hello world!". El 0ah al final indica un salto de línea.

Comentarios

Entradas más populares de este blog

Fractal

Registros de Emu8086

Pila semántica en un analizador sintáctico