SoloCodigo
Programación General => ASM (Ensamblador) => Mensaje iniciado por: malcom en Viernes 25 de Noviembre de 2005, 04:11
-
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
-
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:
-
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?
-
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: