Ensamblador - limpiar pantalla

 
Vista:

limpiar pantalla

Publicado por fabian20s (1 intervención) el 03/11/2005 01:20:58
hola a todos y grasias antisipadas soy estudiante de ing de sistemas y quisiera saver como limpiar una pantalla usando el xor eso fue lo que me pidio mi profesor pero no entiendo a que se refiere
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

Limpiar pantalla :SOLUCION, pero hay algo...

Publicado por urko tekcnich (3 intervenciones) el 10/01/2006 23:15:12
Hola Fabian...

Lo 1ero : como tu sabes el XOR es un OR -. exclusivo, es decir : la condición es falsa cuando TODAS ( fíjate que lo pongo en mayuscula) las entradas o datos son o TODAS verdaderas o TODAS falsas. en caso contrario la salida es 1 ( VERDADERA ).

Partiendo de ahi :
1º -> hay que poner en el byte más significativo ( BH ) del registro BX a 0 (por eso lo del XOR).
2º-> En la gran mayoria de los programas,lo más habitual es poner la tabla de datos, en el segmento DS, pero también se pueden poner en el segmento ES ( aunque eso pasa en la gran minoria de programas Assembler ), es decir también poner a 0 el registro DX o EX según sea el caso.
3º -> En el byte de mayor peso del reg. BX o sea, BH se asigna el atributo del caracter (en este caso 7)
4º -> en AL se asigna el caracter en si , logicamente un espacio en blanco : ' '
5º -> en CX asignamos el numero de veces que sea necesario poner el caracter que contiene AL ( si la pantalla es de 80 columnas y 25 lineas ( 80 x 25 = 2000 , si son 50 lineas 4000...) es decir: MOV CX,2000 (o 4000 o las lineas que sean X 80)
6º -> Llamar a la funcion 9 ( asumiendo que programamos en DOS, claro ) que imprime una cadena en pantalla ( DE AHI LO DEL 2º PASO, que en términos de código es XOR DX,DX ) aunque si solo limpias la pantalla en principio no seria necesario, pero de todos modos haz la prueba.
7º -> Dado que se accede al servicio de video (gráficos y texto), se llama a la interrupcion 10H
Espero que te haya servido de ayuda, en caso contrario mandame un mail y te doy el codigo. HAPPY CODING ;-)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

SOLUCION CON PSEUDO-CODIGO

Publicado por urko tekcnich (3 intervenciones) el 10/01/2006 23:37:51
en el mensaje anterior me olvidé de que entre los pasos 2º y 3º se llama a la función 2 que es asignar un caracter en AH para posicionar el cursor. COMO SE NECESITA EL CURSOR EN LA POSICON 0,0 (... por eso lo del XOR )... en BH se accde a la página 0 y en DX a la posicion 0

aqui tienes el algoritmo en PSEUDO-CODIGO

> Página 0 - poner a 0 mediante XOR y no mediante MOV reg,0 (ya que tu profe te dijo que lo hicieras con XOR) , el Byte más significativo de BX ( bh )

> Posicion 0 para recorrer todos los elementos de la pantalla, PONER a 0 DX mediante XOR nuevamente

> Posicionar el cursor en el byte más significativo de AX ( ah ), posicion : 2

> Invocar a la interrupcion que accede a servicios de video.

> Establecer atributo (7) en BL

> Establecer caracater == espacio en blanco en AL

> Asignar en CX el numero de caracteres = filas X columnas

> Escibir la cadena de caracteres ( funcion 9)

> Invocar a la INT 10h ( servicos de video, recuerdas ? )


HAPPY CODING ;-)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar