Programación General > ASM (Ensamblador)

 Colores En Ensamblador

<< < (5/5)

Eternal Idol:
Repito la pregunta pero ahora a vos DarkSombra, programaste para Windows alguna vez en ensamblador?

Que es el SO 8086?

No creo que Windows te permita un acceso directo al hardware y usar interrupciones en un programa en ring 3.

 :ph34r:  :whistling:

ORDENALPHABETIX:
Buenas,


A ver, haya paz. Estoy con [Eternal Idol]. No tenemos que mezclar cosas. Por un lado esta la plataforma/micro sobre el que vamos a programar. Todos son x86, pero luego hay matices:

- 8086/880186/80286 no pueden manejar instrucciones de 32 bits. Sistema operativo habitual: MS-DOS (incluyo Windows 3.X aunque no viene al cuento)

- 80386/80486/Pentium /II/III/IV/AMD Athlon/AMD Athlon XP, etc. son procesadores que si soportan instrucciones de 32 bits. Sistema operativo habitual Windows (95/98/98SE/ME/NT/XP) aunque tambien OS/2 y Linux.

Sobre el sistema operativo, ha dejado bien claro que es Windows 98. Sobre este sistema operativo no se pueden lanzar INT XX como quien no quiere la cosa, puesto que en modo claro, "te manda al carajo". Hay que emplear la API de Windows que son un conjunto se funciones que realizan operaciones en Windows como en MS-DOS se utilizan las INT 21 y demas. Ademas, se han de seguir unas pautas de inicio y final de programa que no se han de realizar en MS-DOS.
-----------------------------------------------------------------------------------------

Respecto al problema original, tampoco termino de comprender lo que quieres realizar.  A ver si es esto: Poder capturar un texto de un programa como puede ser el Wordpad y por medio del programa escrito en ensamblador, por medio de un menu, cambiar el color de fondo, etc. del texto capturado. No se si me habre equivocado, pero si es esto, ¿para que programar algo que el propio Wordpad ya hace?

    Un saludo, sin acritud... :blink:

ORDENALPHABETIX:
Sobre el codigo que has publicado [DarkSombra], pues que quieres que te diga....¿ya hace algo?


FUNC_CICL PROC NEAR ;AVANZA ATRAVEZ DE LA PANTALLA
MOV BH,71H ;BLANCO SOBRE AZUL
MOV CX,0000
MOV DX,184FH ;PANTALLA ENTERA
INT 10H
RET
FUNC_CICL ENDP

COLOR PROC NEAR
MOV AX,0600H
CALL RECORRIDO
RET
COLOR ENDP

RECORRIDO PROC NEAR
MOV BH,71H ;GRIS
MOV CX,0000
MOV DX,184FH ;PANTALLA COMPLETA
INT 10H
RET
RECORRIDO ENDP


¿Como se come esto? Lo puedes meter todo en un solo PROC, que no avanza por la pantalla, si no que:


    INT 10H Función 06H  
    Desplazar líneas de texto hacia arriba
    LLAMADA:

        AH = 06H
        AL = Número de líneas a desplazar. Si AL=0, se borra toda la ventana seleccionada mediante los registros CX y DX
        BH = Atributo a usar en las líneas borradas.
        CH = Línea donde comienza la ventana de texto.
        CL = Columna donde comienza la ventana de texto.
        DH = Línea donde acaba la ventana de texto.
        DL = Columna donde acaba la ventana de texto.

    DEVUELVE:

        NADA.

    EFECTO:
    Desplaza hacia arriba un número determinado de líneas en la ventana especificada mediante los registros CX y DX. Las líneas desplazadas, quedan vacías, rellenándose con blancos. El color utilizado en estas líneas vacías se indica mediante el registro BH.



No se trata de copiar y pegar un texto sin sentido.      :scream:

Mr_Kracker:
:lightsabre:  Tanto lio para cambiar el color y la fuente mira en los Tutoriales de Iczelion sobre Programación en Ensamblador para Win32, si no me equivoco en el tuto nº03 o 04 hasta la respuesta a tu interrogante aqui te pongo el link de los tutos:

http://mipagina.cantv.net/numetorl869/tut_es.htm


y en los ejemplos que vienen con el masm alli tambien puedes encontrar como cambiar el color de fondo de la pantalla de tu exe, menus con iconos y cosas por el estilo, dales una ojeada

saludos:
 :angry:

Navegación

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa