Ayuda por favor

godknight
18 de Abril del 2008
tengo este programa, el cual lo que hace es que recive una cadena y la muestra por pantalla, pero ademas tengo que darle el efecto de que se desplase por pantalla de izquierda a derecha y de derecha a izquierda sin que se salga del margen, tengo este codigo,dentro del cual tengo la parte del efecto hacia la derecha(es la subrutina MDERECHA pero a pesar de que no presenta errores no me hace nada, por favor necesito ayuda con esto, de antemano gracias.
page 60,12
TITLE PROGRAMA PARA ACEPTAR NOMBRES, DESPLIEGA CENTRO DE PANTALLA
;--------------------------------------------------------------------
.MODEL SMALL
.STACK 64
;--------------------------------------------------------------------
.DATA
PARLIST LABEL BYTE ;listado de paramentros de nombre
MAXNLEN DB 30 ;tamaño maximo del nombre
ACTULEN DB ? ;verrifica si se introdujo el nombre
KBNAME DB 31 DUP(' ') ;nombre introducido
PROMPT DB 'Nombre? ', '$'
;--------------------------------------------------------------------
.CODE
.386
A10MAIN PROC FAR
MOV AX,@data ;inicializa el segmento
MOV DS,AX ;registros
MOV ES,AX
CALL Q10CLR ;limpia pantalla
A20LOOP:
MOV DX,0000 ;posiciona el cursor en 00,00
CALL Q20CURS
CALL B10PRMPT ;muestra el prompt
CALL C10INPT ;provisto para la introducir nombre
CALL Q10CLR ;limpia pantalla
CMP ACTULEN,00 ;nombre introducido?
JE A30 ;no,salir
CALL D10CODE ;preparar campana y $
CALL E10CENT ;desplegar nombre en el centro
JMP A20LOOP
A30:
MOV AX,4C00H ;final de procesamiento
INT 21H
A10MAIN ENDP
; prompt del display:
; ------------------
B10PRMPT PROC NEAR
MOV AH,09H ;llamado al display
LEA DX,PROMPT ;input
INT 21H
RET
B10PRMPT ENDP
; Aceptar entrada del nombre:
; --------------------------
C10INPT PROC NEAR
MOV AH,0AH ;llamado al teclado
LEA DX,PARLIST ;input
INT 21H
RET
C10INPT ENDP
; preparar campana y delineante '$':
; ---------------------------------
D10CODE PROC NEAR
MOVZX BX,ACTULEN ;renplasa ODH con 07H
MOV KBNAME[BX],07
MOV KBNAME[BX+1],'$' ;prepara el delimitante del display
RET
D10CODE ENDP
; centrado y muestreo del nombre:
; ------------------------------
E10CENT PROC NEAR
MOV DL,ACTULEN ;localizar centro de columna
SHR DL,1 ;divide la longitud entre 2
NEG DL ;señal invertida
ADD DL,3 ;suma 40
MOV DH,12 ;fila central
MOV AL,80
SUB AL,ACTULEN


MDERECHA:

CALL Q10CLR ;limpia pantalla
INC DL ;incrementa la posicion del cursor en 1
CALL Q20CURS ;prepara el cursor
MOV AH,09H ;llama al servicio 09 de la interrupcion 21
LEA DX,KBNAME ;carga el nombre para mostrarlo
CMP DL,AL ;compara la posicion del cursor para saber si llego a su margen derecho
JNZ A10MAIN ;si alcanza el margen derecho salta a A10MAIN
INT 21H
JMP MDERECHA
RET

E10CENT ENDP
; Limpia pantalla:
; ---------------
Q10CLR PROC NEAR
MOV AX,0600H ;llamado al scroll screen
MOV BH,26 ;atributos de color
MOV CX,0000 ;desde 00,00
MOV DX,184FH ;a 24,79
INT 10H
RET
Q10CLR ENDP
; prepararcursor fila/columna:
; ---------------------------
Q20CURS PROC NEAR ;
MOV AH,02H ;llamado para preparar el cursor
MOV BH,00 ;pagina 0
INT 10H
RET
Q20CURS ENDP
END A10MAIN