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


0