Código
CADINV es donde pretendo guardar la cadena ingresada luego de ser invertida.
CADENA LABEL BYTE TOTAL DB 21 ACTUAL DB ? CADE DB 21 DUP(?) ; Escribimos 21 ya que el ENTER ocupa un byte. DOLAR DB "$" CADINV DB 21 DUP(?),"$"
De momento el programa lee una cadena en un LABEL BYTE y muestra un mensaje diciendo "LA CADENA INGRESADA ES: " y la cadena misma de forma correcta.
El problema ocurre cuando se ingresan menos de 20 caracteres. Ya que hay un retorno de carro que hace que el cursor regrese al inicio de esa línea y continue escribiendo los caracteres faltantes (que no fueron ingresados) y borre parte del mensaje, pudiendo quedar por ejemplo "ENA INGRESADA ES: ".
En mis primeras clases vimos un poco acerca del debug.exe donde agregábamos instrucciones una por una. Y como en el foro me explicaron que podía usarse para analizar los programas, intenté hacerlo y allí fue cuando supe que el caracter era el retorno de carro.
Lo que quiero hacer es usar el byte llamado ACTUAL (en realidad no sé cómo referirme a los DB, ¿decir que son variables?) y allí mismo asignar el $, es decir, ya no esperar necesariamente al final de los 21 caracteres.
Pero según estuve viendo ACTUAL guarda un número, por ejemplo 11 y no un desplazamiento.
Entonces intenté esto:
Código
CALL INGRESO ; Lectura de cadena LEA BX,CADENA ADD BL,ACTUAL MOV [BX],"$"
Se llama al procedimiento para leer la cadena, luego pretendí asignar a BX el desplazamiento del LABEL BYTE y sumarle la posición actual para luego a ese desplazamiento asignarle "$". Pero no funciona.
Por favor, espero que puedan ayudarme. Mi principal problema es que no reconozco aún muy bien qué es lo que se asgina y puede asignarse entre los registros y las variables.
Gracias de antemano.