2009-12-20 3 views
3

J'ai écrit un programme en assembleur et l'ai compilé. Il est destiné à imprimer un smiley bleu et attend que l'utilisateur appuie sur une touche avant qu'elle ne se termine. Il fait le dernier bit mais il n'imprime pas le smiley. Quelqu'un peut-il expliquer ce que j'ai mal fait?Comment imprimer un smiley-face dans l'assemblage?

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 avec un 16 bits de liaison

Répondre

1

Vous pouvez uniquement piquer le tampon vidéo directement si vous êtes dans un mode vidéo texte uniquement. J'imagine que vous utilisez Windows et que vous ne démarrez pas réellement DOS, donc vous êtes probablement en mode graphique.

Ce que vous pouvez être en mesure de faire est d'ouvrir une fenêtre de la console, puis AltEntrez pour aller à un mode texte plein écran. Essayez d'exécuter votre programme là-bas.

+0

J'ai essayé de le faire dans DOSbox et cela n'a pas semblé aider. le caractère n'apparaît toujours pas –

+1

En fait, même si vous l'utilisez sous Windows, le chargeur NTVDM 16 bits virtualise probablement l'accès au tampon de trame en mode caractère. Cependant, je ne me souviens pas si c'est le cas ou non. –

+1

En outre, assurez-vous de regarder dans le * coin supérieur gauche * de votre écran. C'est là que vous mettez le smiley. –

0

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é, mais imprimer à l'écran nécessite une interruption du système (int 21h), mais la seule interruption du système que je vois est l'appel de fin de programme après l'interruption du clavier.

0

Votre code est correct, vous avez juste besoin de courir en plein écran comme Greg Hewgill l'a suggéré, ou configurer votre fenêtre de commande pour utiliser une ancienne police raster (comme SYSTEM). Cliquez avec le bouton droit sur la barre de titre de la fenêtre et consultez l'onglet Police.

Questions connexes