• Domingo 22 de Diciembre de 2024, 03:47

Autor Tema:  Despliege Directo En Video  (Leído 1839 veces)

malcom

  • Miembro activo
  • **
  • Mensajes: 29
    • Ver Perfil
Despliege Directo En Video
« en: Viernes 25 de Noviembre de 2005, 04:11 »
0
Hola! estoy tratando de desplegar un caracter en la pantalla sin utilizar la int 10H de la Bios ni ninguna otra.
Estuve leyendo que el video a color esta mapeado en la posicion de memoria B800H:0000H y en el debug logro hacer lo que quiero. (E B800:000 41 25 algo asi).

Mi pregunta es: yo quiero realizar un programa en Nasm que haga esto pero no me funciona, aqui muestro el codigo para q me ayuden.

Gracias de Antemano.

 [ORG 0100H]

    MOV BX,0000H
    MOV AX, 0B800h
    MOV CX,41H         ;caracter
    MOV DS, AX         ; DS <- 0B800H.
    MOV [BX], CX       ;almacenar el caracter en offset 0000h
    INC BX
    MOV CX,17H        ;atributo
    MOV [BX], CX
   
    mov ah,00h
    int 16h

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Despliege Directo En Video
« Respuesta #1 en: Viernes 25 de Noviembre de 2005, 19:04 »
0
El codigo es correcto pero veo dos problemas que podes estar teniendo. El primero es el ensamblador, tenes que tener una version de NASM para 16 bits y la segunda que tal vez de en el clavo es que no te va a funcionar desde una consola de Windows NT. Yo lo probe en un NT 5.0 y no funcionaba bien y si con el DEBUG.com pero desde una maquina virtual con un MS-DOS puro funciona perfectamente.

 :devil:  :devil:

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

malcom

  • Miembro activo
  • **
  • Mensajes: 29
    • Ver Perfil
Re: Despliege Directo En Video
« Respuesta #2 en: Sábado 26 de Noviembre de 2005, 02:52 »
0
Hola! la version de Nasm que utilizo es 0.98.39 creo que es de 16 bits (corriganme ustedes si me equivoco)....Estoy utilizando winxp, quizas sea ese el problema.

Ahora, existe alguna forma de lograr eso desde windows xp?, o necesariamente tengo que correr mi programa desde ms-dos puro?

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Despliege Directo En Video
« Respuesta #3 en: Sábado 26 de Noviembre de 2005, 10:48 »
0
Cita de: "malcom"
Hola! la version de Nasm que utilizo es 0.98.39 creo que es de 16 bits (corriganme ustedes si me equivoco)....Estoy utilizando winxp, quizas sea ese el problema.

Ahora, existe alguna forma de lograr eso desde windows xp?, o necesariamente tengo que correr mi programa desde ms-dos puro?
No lo se, es facil de comprobar, si estas generando un archivo .COM valido sirve. Por ejemplo en este caso pese a no mostrar el caracter el programa deberia quedarse esperando una pulsacion. Por cierto, si no tenes un ret o la interrupcion para volver a MS-DOS agregalo al final del ejecutable.

La forma de hacerlo en Windows es justamente usando los servicios que provee este Sistema Operativo de 32 bits (modo protegido) ya que en realidad tu programa .COM esta siendo emulado. En Windows no se tiene acceso directo ni a la memoria ni al hardware desde modo usuario y mucho menos desde 16 bits.

 :devil:  :devil:

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.