Lenguaje Ensamblador

 section .data-Declaracion de variables

    msg db "Hello world!", 0ah-MSG Guarda el mensaje recibido


section .text

    global _start- Etiqueta que muestra el inicio del codigo


_start:

    mov rax, 1-Transfiere datos entre celdas de memoria y registros.

    mov rdi, 1

    mov rsi, msg

    mov rdx, 13

    syscall

    mov rax, 60

    mov rdi, 0

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



section .data: Esta línea indica el comienzo de la sección de datos del programa, donde se definen las variables y constantes utilizadas.


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.


section .text: Esta línea indica el comienzo de la sección de código del programa, donde se encuentra la lógica y las instrucciones de ejecución.


global _start: Esta línea declara que el símbolo _start es global, lo cual significa que será el punto de entrada principal del programa.


_start:: Etiqueta que marca el inicio del código principal del programa.


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: Realiza la llamada al sistema en Linux, que en este caso imprime el contenido de la cadena en la salida estándar.


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


mov rdi, 0: Mueve el valor 0 al registro rdi, que es utilizado como el primer argumento de la llamada al sistema en Linux (en este caso, indica el código de salida).



syscall: Realiza la llamada al sistema en Linux para terminar la ejecución del programa.            En resumen, este programa en ensamblador se encarga de imprimir "Hello world!" en la consola y luego finalizar la ejecución del programa.


Comentarios

Entradas más populares de este blog

Ejercicio de acciones semánticas de un analizador sintáctico

Arboles de expresiones