RESPUESTA A LA PREGUNTA 8565 - ENSAMBLADOR {EJEMPLO PARA EJECUTARLO EN TURBO PASCAL V. 7.0} PROGRAM NOMBRE_PROGRAMA; USES CRT; VAR CONT:WORD; BEGIN CONT:=0; CLRSCR; {PRIMERO VAMOS A LEEER LA CADENA DE CARACTERES} WRITE('INGRESE UNA CADENA DE CARACTERES: '); ASM MOV DI,300H; {EMPEZAMOS A ALMACENAR LOS CARACTERES DESDE ESTA POSICION} MOV DX,0; {CONTADOR DE LETRAS INTRODUCIDAS} @INI:MOV AH,00H; {LEO CARACTER DEL TECLADO SIN ECO} INT 16H; CMP AL,13; {COMPARO CON } JE @F; {SI ES IGUAL SALTO} INC DX; MOV [DI],AL; {EN AL SE DEVUELVE EL CARACTER, LO GUARDO EN EL CONTENIDO DE DI} INC DI; {INCREMENTO LA POSICION DE MEMORIA} JMP @INI; {SALTO Y LEO EL SIGUIENTE CARACTER} @F:MOV CONT,DX; {LE ASIGNO A CONT LA CANTIDAD DE CARACTERES ITRODUCIDOS} END; WRITELN; {COMPROBAMOS LA CADENA QUE INGRESAMOS} WRITE('USTED INGRESO LA SIGUIENTE CADENA: '); ASM MOV CX,CONT; MOV DI,300H; @G: MOV AL,[DI]; MOV AH,02H; MOV DL,AL; INT 21H; INC DI; LOOP @G; END; READLN; {AHORA PREGUNTAMOS QUE CARACTER DESEAMOS ELIMINAR} CLRSCR; WRITE('QUE CARACTER DESEA ELIMINAR DE LA CADENA INGRESADA: '); ASM MOV DI,300H; {VUELVO AL COMIENZO DE LA CADENA} MOV CX,CONT; {CANTIDAD DE CARACTERES INGRESADOS} MOV AH,00H; {LEO EL CARACTER QUE DESEO ELIMINAR} INT 16H; @I:CMP BYTE PTR [DI],AL; {COMPARO EL CARACTER CON EL DE LA CADENA} JNE @SIG; {SI ES DIFERENTE LEO EL SIGUIENTE} MOV BYTE PTR [DI],'0'; {SI ES IGUAL LO COLOCO EN "CERO" POR EJEMPLO} @SIG:INC DI; LOOP @I; END; {AHORA SOLO BASTA MOSTRAR LA CADENA CON LOS CARACTERES ELIMINADOS} CLRSCR; WRITE('LA CADENA QUEDA DE LA SIGUIENTE MANERA: '); ASM MOV CX,CONT; MOV DI,300H; @INI:MOV AL,[DI]; CMP AL,'0'; JE @OTR; MOV AH,02H; MOV DL,AL; INT 21H; @OTR:INC DI; LOOP @INI; END; READLN; WRITE('PRESIONE PARA SALIR...'); READLN; END. Martín H. Bustos planetcd@infovia.com.ar