Ensamblador - Programa en Ensamblador que invierte cadena ingresada por usuario

 
Vista:
sin imagen de perfil

Programa en Ensamblador que invierte cadena ingresada por usuario

Publicado por Pablo (1 intervención) el 21/05/2024 17:48:09
Hola, buenos días ¿Podrían ayudarme a resolver un problema con la validación? Quiero asegurarme de que no se puedan ingresar cadenas con más de 50 caracteres, pero no está funcionando como esperaba.


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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
section .data
    mensaje db 'Introduce una cadena (máximo 50 caracteres): ', 0
    nueva_linea db 0xA, 0xD, 0
    max_longitud equ 50
    longitud_mensaje equ $ - mensaje
 
section .bss
    buffer_entrada resb max_longitud + 1
 
section .text
    global _start
 
_start:
    mov eax, 4
    mov ebx, 1
    mov ecx, mensaje
    mov edx, longitud_mensaje
    int 0x80
 
    mov eax, 3
    mov ebx, 0
    mov ecx, buffer_entrada
    mov edx, max_longitud
    int 0x80
 
    mov esi, buffer_entrada
    xor ecx, ecx
buscar_longitud_loop:
    cmp byte [esi], 0
    je longitud_encontrada
    inc esi
    inc ecx
    jmp buscar_longitud_loop
longitud_encontrada:
 
    mov edx, ecx
 
    mov esi, buffer_entrada
    mov edi, esi
    add edi, edx
    dec edi
 
invertir_loop:
    cmp esi, edi
    jge inversion_completa
    mov al, [esi]
    mov ah, [edi]
    mov [esi], ah
    mov [edi], al
    inc esi
    dec edi
    jmp invertir_loop
 
inversion_completa:
 
    mov eax, 4
    mov ebx, 1
    mov ecx, buffer_entrada
    int 0x80
 
    mov eax, 1
    xor ebx, ebx
    int 0x80


Gracias de antemano.
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