J'utilise l'assemblage 16 bits pour créer un programme DOS à des fins éducatives sur la façon de programmer VGA, j'ai écrit un code pour écrire la couleur de certains pixels, les caractères d'une chaîne, le code allé bien avec changer la couleur des pixels, mais lorsque je tente d'imprimer la chaîne, il imprime des caractères étranges, allot d'entre eux J'utilise MASM 5.00 et Link 3,60 et en cours d'exécution sur DOSBoxMon code imprime la poubelle au lieu du texte désiré
C'est mon code
org 100h
.model small
.stack 100h
.data
msg db 'Hello VGA','$'
.code
main proc
mov ax, 0
mov al, 013h
int 10h
mov ah, 02h ;function code for setting cursor pos.
mov bh, 0 ;setting page number
mov dx, 0 ;setting dh, dl to row and column
int 10h
mov ah, 0ch
mov al, 00001110b
mov cx, -1
ploop:
inc cx ;x point pos.
mov dx, 0 ;y point pos.
int 10h
cmp cx, 9919
jne ploop
;keyboard services
mov ah, 00h ;read key function code
int 16h
;set cursor position
mov ah, 02h
mov bh, 0 ;Display page
mov dh, 04h ;Row
mov dl, 00h ;Column
int 10h
;print msg
mov ah, 09h
lea dx, msg
int 21h
mov ax, 4c00h
int 21h
main endp
end main
Je viens de rencontrer votre code et il a bien fonctionné pour moi. Essayez d'initialiser le segment de données manuellement, insérez les deux lignes immédiatement après '.code':' mov ax, @ data mov ds, ax'. –
@ JoseManuelAbarcaRodríguez j'ai totalement oublié d'initialiser le segment de données, et ce fut l'erreur, merci pour avis – Kordy
"Aucune idée" devinez: vous utilisez DOS 21h en mode graphique, peut-être votre dosbox + DOS a des problèmes pour afficher les caractères en mode gfx ? Pouvez-vous essayer de sortir du char avec int 10h ah, 9? Il en résultera probablement la même chose, mais juste pour être sûr. (Je pense que le 21h appelle le 10h de toute façon, donc ne vous attendez pas à un miracle) BTW 'mov ax, 0' mov al, 013h' = vous savez que cela peut être fait avec single' mov ax, 13h'? Sinon, essayez de relire ce qui est 'ax' et' al'. (EDIT: oh, ce 'ds' est très probablement le problème). – Ped7g