Algoritmia - assembler necesito ayuda!!!!

 
Vista:

assembler necesito ayuda!!!!

Publicado por fernando (1 intervención) el 05/12/2004 23:55:27
hola tendria que hacer un trabajo en assembler que entren datos (numeros y letras) se guarden en la pila o stack , y que salgan por pantalla ordenados , si me podrian ayudar se los agradeceria !!!!

muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Implementación en assembler para ordenar datos en la pila y mostrarlos

Publicado por Alejandro (307 intervenciones) el 04/03/2024 21:42:47
Para ayudarte con tu trabajo en assembler, te proporcionaré un ejemplo simple en x86-64 assembly utilizando la sintaxis AT&T. Este programa en assembler recibirá números y letras como entrada, los almacenará en la pila, los ordenará y luego los mostrará por pantalla.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.section .data
buffer_size = 100
buffer:
    .space buffer_size
 
.section .text
.globl _start
 
_start:
    movq $buffer, %rdi  # RDI apunta al buffer para la entrada
    movq $buffer_size, %rsi  # RSI indica el tamaño del buffer
    call leerDatos  # Llamada a la función para leer datos desde la entrada estándar
    call ordenarDatos  # Llamada a la función para ordenar los datos en la pila
    call mostrarDatos  # Llamada a la función para mostrar los datos ordenados
    call exit_program  # Llamada a la función para salir del programa
 
leerDatos:
    # Implementa aquí la lógica para leer datos desde la entrada estándar y almacenarlos en la pila
    # Puedes usar las interrupciones 0x0 (syscall) para leer datos
 
ordenarDatos:
    # Implementa aquí la lógica para ordenar los datos en la pila
    # Puedes usar cualquier algoritmo de ordenamiento, como bubble sort o quicksort
 
mostrarDatos:
    # Implementa aquí la lógica para mostrar los datos ordenados por pantalla
    # Puedes usar las interrupciones 0x1 (syscall) para escribir datos
 
exit_program:
    movq $60, %rax  # Código de salida del programa
    xor %rdi, %rdi  # Código de retorno 0
    syscall

Este es un esquema básico y deberás llenar los detalles específicos, especialmente en las funciones `leerDatos`, `ordenarDatos`, y `mostrarDatos`. Dependiendo de tu entorno de desarrollo, las llamadas al sistema (syscalls) y las convenciones de llamadas pueden variar, por lo que asegúrate de consultar la documentación correspondiente.

Recuerda que trabajar con ensamblador requiere un conocimiento profundo del hardware y la arquitectura específica para la que estás escribiendo el código. ¡Espero que este esquema te ayude a comenzar, Fernando!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar