Normas del foro

Curso Hacker
Bienvenido(a), Visitante. Favor de ingresar o registrarse.
¿Perdiste tu email de activación? - Noviembre 18, 2008, 02:36:14
Inicio Ayuda Ingresar Registrarse
Visita: Articulos - Juegos Gratis - Da Foros

Comunidad Underground Hispana  |  Programacion  |  Programación  |  ASM (Moderador: |Shadow|)  |  Tema: [G] Ayuda con codigp de emuladorx86 0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Ir Abajo Imprimir
Autor Tema: [G] Ayuda con codigp de emuladorx86  (Leído 371 veces)
Feshquito
Recien Llegado
*
Desconectado Desconectado

Mensajes: 8


Ver Perfil
« en: Noviembre 06, 2006, 07:50:02 »

hola amigo me puede echar una manito con este codigo yo solomante necesito poner cualquier color al texto que manda a la pantalla llevo como 5 dias podiendo resolver esto pero creo que no soy muy bueno, talves ustudes me podia ayudar a cambiarle el color de texto.
mi codigo es el siguiente :


name "Mensaje"

org    100h

mov si, 1234h
mov ax, 9876h

mov    cx,1 ; obtener el dato y despues imprime:   
call   printme
db ' Universidad Tecnologica de Honduras', 0Dh,0Ah, 0


mov    cx,2           ; obtener el dato y despues imprime:
call   printme
       db 'Nombre Del Alumno: ', 0Ah
       db "Jose manuel Zaldivar", 0Dh,0Ah
       db , 0Dh,0Ah,'N# Cuenta: ',0Ah
       db '231051012',0

xor    cx,cx           ; printme aque retorna:
call   printme
       db 0Dh,0Ah,0xa,0xa,"Teclear la tecla any key...", 0



mov ah, 0  .
int 16h


ret

printme:
mov     cs:temp1, si 
pop     si         
push    ax           

next_char:     
        mov     al, cs:[si]
        inc     si           
        cmp     al, 0
        jz      printed       
        mov     ah, 0eh     
        int     10h
        jmp     next_char     ; loop.
printed:
pop     ax           


push    si           
mov     si, cs:temp1 
ret

; Guarda la varialbe original
; Evalua el registro SI.
temp1  dw  ?   

« Última modificación: Abril 01, 2008, 04:42:08 por The Shadow » En línea
arvin
Visitante
« Respuesta #1 en: Noviembre 06, 2006, 02:03:55 »

Antes debes cambiar el color, no se lo agregas al code a menos que sea un ret a int aun asi no te funcionara adecuadamente. Me gusta en asm que encuentren solos las cosas pero mira te tiro un cable:


   AH = 0Bh
   BH = 0
       BL = color de borde (0 - 15) (modo texto)
       color de borde y fondo (modo grafico o pixel)
       (EGA)
       BL = color de borde (0 - 15) y color de fondo de alta densidad
        (16 - 31) parpadeo o highlight
   BH = 1
       BL = paleta (0/1)



Puedes usar ah para establecer el color siempre y cuando establezcas el formato antes:


 dx ax mod bx
 getmod1 266,264= dx=2 ax=1
 ax = 15 ; para 15 colores


No se con que emulador trabajas, pero el asm natural para cualquier x86 based es el que te explique atras...


para masm  es sencillo usar las rutinas: SetTextColor y SetBkColor de esta forma:


        RGB    200,200,50
        invoke SetTextColor,hdc,eax
        RGB    0,0,255
        invoke SetBkColor,hdc,eax


Usadas  para un invoke textout asi de facil:


invoke TextOut,hdc,0,0,ADDR TestString,SIZEOF TestString


Ya que al invocar a la macro RGB creas un valor para RGB de 32 bits que son puestos en ah, ax para bx en  BH y BL automaticamente por este compilador...



Bueno, lo demas debe andar por ahi en la red o si necesitas mas detalle del modo de video para x86 hazmelo saber, pienso que con esta info es mas que suficiente para que logres establecer el color de texto y fondo sin tostar nada...




un saludo
« Última modificación: Noviembre 06, 2006, 02:09:03 por AzRaEL » En línea
Páginas: [1] Ir Arriba Imprimir 
Comunidad Underground Hispana  |  Programacion  |  Programación  |  ASM (Moderador: |Shadow|)  |  Tema: [G] Ayuda con codigp de emuladorx86 « anterior próximo »
Ir a:  


Ranking-Hits
Powered by SMF 1.1.7 | SMF © 2006-2007, Simple Machines LLC