elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  interrupciones
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: interrupciones  (Leído 4,639 veces)
-dominique-

Desconectado Desconectado

Mensajes: 5



Ver Perfil
interrupciones
« en: 8 Diciembre 2012, 00:48 am »

Hola, tengo un problema con la interrupcion 10h.
Lo que pasa es que quiero imprimir varios mensajes y quiero cambiar los colores de las letras y el fondo. Me guie del ejemplo "Hola mundo" pero cuando quiero imprimer otro mensaje despues de ese, se imprime ensima.

¿Como puedo hacerlo? ¿y se puede combinar la funcion 9 de la interrupcion 21h con alguna de la interrupcion 10h?

Gracias  :D


En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: interrupciones
« Respuesta #1 en: 8 Diciembre 2012, 18:13 pm »

Estas en modo texto o modo grafico? Decis que quieres cambiar el fondo, en modo texto solo se puede cambiar el borde.
respecto a que si se pueden combinar eso me hace pensar más que estas en modo grafico, las cuales si es así necesitas cambiar
las coordenadas seguramente ese es tu problema, postea el codigo para mirar tu problema


En línea

_Enko


Desconectado Desconectado

Mensajes: 538



Ver Perfil WWW
Re: interrupciones
« Respuesta #2 en: 8 Diciembre 2012, 20:54 pm »

Hola, no recuerdo si habia una interrupcion para eso.

Lo que si te puedo decir, es que en modo texto, la matriz del texto de la pantalla (80x25) esta guardada en 0xB8000

Y si aun no recuerdo mal, estaba compuesto por una matriz de 80x25 de WORD.
Donde el primer byte es la combinacion de color-fondo y el segundo byte el caracter.

Por ejemplo, el texto en con letras blancas y texto negro es:
'0',h','0','o','0','l','0','a'

Para otro color, se cambia el 0 por un 1,2,3,4etc...


aqui mas info
http://wiki.osdev.org/Printing_To_Screen
En línea

-dominique-

Desconectado Desconectado

Mensajes: 5



Ver Perfil
Re: interrupciones
« Respuesta #3 en: 9 Diciembre 2012, 02:48 am »

Esta en modo texto. Me guie del ejemplo que tiene el emu, "Hello World". En él quise cambiar el codigo para que pueda imprimir varios mensajes. Algo asi:

************
* Mensaje     *
************

pero solo imprime en una sola linea, uno ensima del otro. Prove con la funcion 2 para desplazar el cursor pero lo imprime todo y al final lo desplaza. Tambien prove con imprimir un mensaje definido en la zona de datos con la funcion 9 de la interrupcion 21h pero no se ejecuta.

Gracias
En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: interrupciones
« Respuesta #4 en: 10 Diciembre 2012, 22:49 pm »

Esta en modo texto. Me guie del ejemplo que tiene el emu, "Hello World". En él quise cambiar el codigo para que pueda imprimir varios mensajes. Algo asi:

************
* Mensaje     *
************

pero solo imprime en una sola linea, uno ensima del otro. Prove con la funcion 2 para desplazar el cursor pero lo imprime todo y al final lo desplaza. Tambien prove con imprimir un mensaje definido en la zona de datos con la funcion 9 de la interrupcion 21h pero no se ejecuta.

Gracias

no puedes imprimir ese tipo de texto? la funcion 02 es para escribir un caracter, la funcion 09 es para escribir una cadena,Mostra tu codigo.
En línea

-dominique-

Desconectado Desconectado

Mensajes: 5



Ver Perfil
Re: interrupciones
« Respuesta #5 en: 13 Diciembre 2012, 00:52 am »

Este es el codigo que hice, el problema es que imprime en varios colores. ¿Hay una manera de que imprima en uno solo?

Código:

org     100h   
.Data
 n DB 0
 v DB 'Fin del Proceso.'
 
 
.Code                           

mov     ax, 3
int     10h


mov     ax, 1003h
mov     bx, 0     
int     10h


               
mov     dl, 0   ; columnas.
mov     dh, 0   ; filas.

mov     bl, 0   
mov     si,0
mov di,0
jmp     next_char

next_row:
mov    al,n
inc al
mov n,al
inc     dh
cmp     dh, 4
je      stop_print

mov     dl, 0
cmp     n,1
je     next

next_char:


mov     ah, 02h
int     10h

mov     al, '*'
mov     bh, 0
mov     cx, 1
mov     ah, 09h
int     10h
 
inc     bl     
inc     dl
cmp     dl, 16
je      next_row
jmp     next_char

next:


mov     ah, 02h
int     10h

mov     al, v[si]
mov     bh, 0
mov     cx, 1
mov     ah, 09h
int     10h
inc si
inc     bl     
inc     dl
cmp     dl, 16
je      next_row


jmp     next
stop_print:

mov ah, 0
int 16h

ret
En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: interrupciones
« Respuesta #6 en: 13 Diciembre 2012, 05:24 am »

El color se establece en BL, antes de llamar a la función BL debe contener el valor correspondiente al color deseado, te dejo
la paleta de colores:

Código:
00H black      08H gray
01H blue       09H bright blue
02H green      0AH bright green
03H cyan       0BH bright cyan
04H red        0CH bright red
05H magenta    0DH bright magenta
06H brown      0EH yellow
07H white      0FH bright white

En línea

-dominique-

Desconectado Desconectado

Mensajes: 5



Ver Perfil
Re: interrupciones
« Respuesta #7 en: 14 Diciembre 2012, 00:31 am »

Muchas gracias chicos  :D
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Interrupciones en VB
Programación Visual Basic
el_chente23 4 5,516 Último mensaje 18 Mayo 2005, 22:47 pm
por Slasher-K
Interrupciones
Programación C/C++
@synthesize 1 3,114 Último mensaje 13 Junio 2010, 12:59 pm
por Eternal Idol
Ayuda con interrupciones..
ASM
Vaagish 5 3,380 Último mensaje 3 Mayo 2013, 20:16 pm
por x64core
Problemas con _fastcall e interrupciones
Programación C/C++
lweb20 4 1,616 Último mensaje 24 Julio 2013, 06:22 am
por lweb20
(Consulta) ¿Por qué Windows no usa interrupciones?
ASM
class_OpenGL 5 2,732 Último mensaje 22 Diciembre 2015, 15:08 pm
por Eternal Idol
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines