Pregunta

escribí un programa en ensamblador y compilé. Tiene el propósito de imprimir una cara sonriente azul y luego esperar a que el usuario pulse una tecla antes de que termina. que sí hace que el último bit pero no imprime la cara sonriente. ¿Puede alguien explicar lo que he hecho mal?

CSEG segment
org 100h
Begin:

mov ax,0B800h
mov es,ax
mov di,0

mov ah,31
mov al,1
mov es:[di],ax

mov ah,10h
int 16h

int 20h

CSEG ends
end Begin

compilé con MASM con un enlazador 16 bit

¿Fue útil?

Solución

Sólo se puede meter la memoria intermedia de vídeo directamente si usted está en un modo de vídeo de sólo texto. Supongo que usted está utilizando Windows de algún tipo y no realmente el arranque DOS, por lo que probablemente está en un modo gráfico.

Lo que pueden ser capaz de hacer es abrir una ventana de consola y luego Alt Intro para ir a un modo de texto de pantalla completa. Pruebe a ejecutar su programa de allí.

Otros consejos

Ha sido alrededor de un año más o menos desde que trabajé con MASM y el único libro de referencia que tengo en casa es MIPS, así que estoy cierto que un poco oxidada, sin embargo imprimir en pantalla requiere una interrupción del sistema (int 21h), sin embargo, la única interrupción del sistema que estoy viendo es la llamada terminación del programa después de la interrupción del teclado.

Su código está bien, sólo tiene que ejecutar ya sea en pantalla completa como se sugiere Greg Hewgill, o la creación de la ventana de comandos para utilizar una fuente de trama de edad (como sistema). Haga clic derecho en la barra de título de la ventana y echar un vistazo a la ficha Fuente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top