SoloCodigo
Programación General => ASM (Ensamblador) => Mensaje iniciado por: pinguinospn en Lunes 28 de Junio de 2004, 19:47
-
:ph34r: Saludos. ya he leido sus mensajes en este foro y me parecio muy interesante por lo cual me registre para aprender de ustedes un poco mas.
Por ejemplo alguien sabe los colores en ensamblador (masm). necesito almenos 6 colores totalemente distintos.
Muchisimas Gracias
-
Colores en donde? En consola?
Para que Sistema Operativo?
:ph34r: :comp: :hola:
-
:alien: :alien: :alien: te refieres a que colores se pueden poner de fondo de pantalla y en las letras ????, si es para eso tienes que utilizar las interrupciones de la bios y los colores que yo se que existen son: negro,blanco,azul,rojo y verde, no se si habran otros, estos son los unicos que he visto.
no se si te referias a eso.
si no es eso me avisas :kicking:
-
Hola.
Lo que pasa es que tengo que hacer un programa en ensamblador que me despliegue un menu en el cual pueda escoger uno de los 3 colores de la letra y aparte uno de los 3 colores del fondo.
-
Para que Sistema Operativo?
:whistling:
-
para win 98
-
Estamos hablando de una aplicación de consola o de una de ventanas?
De cualquiera de las dos maneras, siendo para Windows tenes que usar la API.
:ph34r:
-
Ok. El codigo lo hacemos por medio del block de notas para despues ejecutarlo en el macro assembler.
Ahora el programa se captura en el block de notas el cual tendrá un menu con dos columnas, en la 1ra columna tendra cambiar de color la letra y al mento de presionar un numero de las opciones, se cambiara el color y en ese instante aparecerá otro mensaje pidiendo que se inserte el numero de la segunda columna del menu para que se cambie el color de fondo.
Esta muy dificil? La verdad soy principiante de Ensamblador.
Gracias por su comprensión.
-
La verdad no te comprendo totalmente, a ver si es así lo que queres hacer:
una aplicación para Windows que tiene dos menues, (por ejemplo File y Edit).
En File tiene que ser por ejemplo de color rojo la letra, la que diga File, Open, Save, etc; y en Edit el fondo tiene que ser de color verde todos los menues.
Es así??
:comp: :smartass:
-
No Creo que te estoy confundiendo.
Imaginate.
Tu estas en tu maquina con win 98 y tu vas a escribir el codigo de un x programa en el block de notas. ok
Se captura en block de notas.
Lo que debe hacer ese programa es desplegar un menu que tenga 2 columnas una donde se pueda cambiar el color de la letra y otra donde se cambie el color del fondo.
se ejecuta en masm.
Espero que no te haya confundido mas.
Gracias
-
Lo que intenta hacer el programa esa cambiar el color de la letra y el fondo del programa block de notas? (notepad.exe)
:blink:
-
No. :D
Olvida el notepad.
Tengo que hacer un programa en masm que tenga un menu y con todo lo demas antes dicho cambiar color de letra y fondo.
Esta muy dificil de hacerlo?
-
Me parece que tendrías que hacer menues owner draw, osea que los pintes vos mismo.
:ph34r: :comp: :hola:
-
:blink: No se porque se han enredado tanto en esto.
pinguinospn el programa que necesitas es bastante sencillo no te preocupes, como te dije tienes que usar las interrupciones de la bios, aqui te pongo un programita que acabo de hacer,te pongo el codigo fuente para que veas que es lo que le tienes que cambiar y el ejecutable para que veas que si funciona.
es un programa sencillo que solo muestra un mensaje en fondo azul y con letras verdes modificalo para hacer el tuyo.
cualquier pregunta aqui seguimos.
si tienes problema para ensamblarlo avisame y te mando mi version del masm.
lamento no haber escrito antes, y haber evitado este enredo, con todo respeto realmente no tengo idea de lo que esta hablando Eternal Idol jamas he usado lo que esta diciendo en ensamblador :alien:
datos segment
dibujo db ' ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»' ,13,10
db ' º PRESIONE 0 PARA SALIR º',13,10
db ' ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ',13,10,'$'
datos ends
pila segment stack
db 128 dup ('pila')
pila ends
codigo segment
assume cs:codigo, ss:pila, ds:datos
PANTA PROC NEAR
PUSH AX ;la clave esta en esta rutina, por eso solo te voy
PUSH BX ; a explicar esta
PUSH CX
PUSH DX
MOV CX,0
MOV DX,2479h
MOV BH,12h ;es justamente aqui en BH que se especifica eso
;ese 12h indica 1=fondo azul 2=letras verdes
; si fuera 21h seria 2=fondo verde =letras azules
;4= es rojo 0=es negro , si pones 04 fondo negro letras rojas
;7 = es blanco
MOV AX,0600H
INT 10h
POP DX
POP CX
POP BX
POP AX
RET
PANTA ENDP
CURSOR PROC NEAR
PUSH AX
PUSH BX
PUSH CX
MOV BH,00
MOV AH,02
INT 10h
POP CX
POP BX
POP AX
RET
CURSOR ENDP
STRING PROC NEAR
PUSH AX
PUSH BX
PUSH CX
MOV AH,09
INT 21h
POP CX
POP BX
POP AX
RET
STRING ENDP
PROGRA PROC FAR
INICIO: push ds
sub ax,ax ;para regresar al sistema operativo
push ax
mov ax,datos
mov ds,ax ;inicializa el ds al segmento de datos
MOV AX,0000
MOV BX,0000
MOV CX,0000
MOV DX,0000
CALL PANTA
MOV DX,0600h
CALL CURSOR
LEA DX,dibujo
CALL STRING
MOV AH,01
INT 21h
CMP AL,30h
jz fin
JMP INICIO
fin: MOV AX,4C00h
INT 21h
PROGRA ENDP
codigo ends
end PROGRA
END
adios y hasta pronto :hola:
:comp:
-
Programaste para Windows alguna vez en ensamblador?
Porque me parece que eso no es código de 32 bits ...
:whistling:
-
Muchisimas Gracias a los Dos :D
Saben ustedes demasiado :comp:
Mil Gracias
-
pinguinospn me alegro que te sirviera el programa y como ves Eternal Idol eso es lo que necesitaba el necesitaba un programa para microprocesador 8086 que es de 16 bits ¿a que horas dijo el que necesitaba uno de 32 bits? :alien: y como no es mi intencion iniciar una discucion, ya que no tengo tiempo para ello doy por cerrado el tema.
adios y cuidense :hola:
:hippi:
-
para win 98
En esa misma frase.
:ph34r:
-
:kicking:
Joer q mantas Hay tan dos haber q pex!! Ha el sistema operativo no importa es la configuracion del bios es decir para SO 8082
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
:scream:
:lightsabre:
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
-
:kicking:
Joer q mantas Hay tan dos haber q pex!! Ha el sistema operativo no importa es la configuracion del bios es decir para SO 8086
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
:scream:
:lightsabre:
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
-
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:
-
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:
-
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:
-
: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 (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: