Question

J'ai écrit un programme en assembleur et compilé. Il est destiné à imprimer un visage souriant bleu et puis attendez que l'utilisateur d'appuyer sur une touche avant de se terminer. Il ne fait que le dernier morceau, mais il n'imprime pas le visage souriant. Quelqu'un peut-il expliquer ce que je fait de 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

Je l'ai compilé avec MASM 16 bits éditeur de liens

Était-ce utile?

La solution

Vous ne pouvez pousser le tampon vidéo directement si vous êtes en mode vidéo texte seulement. Je devine que vous utilisez Windows d'une sorte et non DOS démarrage en fait, vous êtes probablement dans un mode graphique.

Qu'est-ce que vous peut être en mesure de faire est d'ouvrir une fenêtre de la console, puis sur Alt Entrée pour passer à un mode texte plein écran. Essayez d'exécuter votre programme là-bas.

Autres conseils

Cela fait environ un an que je travaille avec MASM et le seul livre de référence que j'ai à la maison est MIPS, donc je suis certes un peu rouillé, imprimer cependant à l'écran nécessite une interruption du système (int 21 h), mais la seule interruption du système que je vois est l'appel de la fin du programme après l'interruption du clavier.

Votre code est ok, il vous suffit de soit exécuter en plein écran comme Greg Hewgill suggéré, ou configurer la fenêtre de votre commande pour utiliser une ancienne police Raster (comme SYSTEM). cliquez droit sur la barre de titre de la fenêtre et jeter un oeil à l'onglet Police.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top