Domanda

ho scritto un programma in assembler e compilato. E 'pensato per stampare una faccina sorridente blu e poi attendere che l'utente prema un tasto prima termina. Lo fa fare questo ultimo bit ma non stampa la faccina sorridente. Qualcuno può spiegare che cosa ho fatto di male?

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

ho compilato con MASM con po linker 16

È stato utile?

Soluzione

Si può colpire solo il buffer video direttamente se si è in una modalità video di solo testo. Sto indovinando che si sta utilizzando Windows di qualche tipo e non in realtà l'avvio DOS, quindi probabilmente è in una modalità grafica.

Quello che possono essere in grado di fare è aprire una finestra di console e quindi Alt Invio per andare a una modalità di testo a schermo intero. Provare a eseguire il programma di lì.

Altri suggerimenti

E 'passato circa un anno o giù di lì da quando ho lavorato con MASM e l'unico libro di riferimento che ho a casa è MIPS, quindi sono certamente un po' arrugginito, ma stampare su schermo richiede un interrupt di sistema (int 21h), ma l'unica interruzione del sistema che sto vedendo è la chiamata di terminazione programma dopo l'interrupt della tastiera.

Il codice è ok, non vi resta che correre sia a pieno schermo come suggerito Greg Hewgill, o impostare la finestra di comando per usare un vecchio tipo di carattere raster (come SYSTEM). Fare clic destro sulla barra del titolo della finestra e dare un'occhiata alla scheda Carattere.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top