J'écris un programme DOS pour créer un fichier et y écrire. Je dois écrire les données dans deux lignes différentes. Voici mon code:Problèmes avec la sortie de caractères de nouvelle ligne dans un fichier
.model tiny
.486
.data
fname db 'file5.txt',0
handle dw ?
msg db 'Prashant Pandey 2014A7PS100G'
.code
.startup
mov ah,3eh
mov bx,handle
int 21h
mov ah,3ch ;the 4 lines from now open an new non-existing.3ch is used to open a new file
lea dx,fname
mov cl,2h
int 21h
mov handle,ax
mov ah,40h ;these 4 lines write to the already opened file
mov bx,handle
mov cx,28h
lea dx,msg
int 21h
; new line
mov dx,13
mov ah,2
int 21h
mov dx,10
mov ah,2
int 21h
mov ah,40h ;these 4 lines write to the already opened file
mov bx,handle
mov cx,28h
lea dx,msg
int 21h
mov ah,3eh
mov bx,handle
int 21h
.exit
end
J'utilise MASM et DOSBOX. Le problème est que le programme imprime les données sur deux lignes différentes, mais avant la deuxième ligne, il imprime également des caractères étranges, puis imprime la chaîne msg. Quel est le problème avec ce programme, et comment puis-je le réparer?
Semble la chaîne que vous voulez est 28 octets (décimal) de longueur et vous demandez d'écrire 28h (40 décimales) octets avec 'mov cx, 28h'. Peut-être que vous vouliez dire 'mov cx, 28'? –
Mon mauvais.Je vais l'essayer. –
Ou mieux, demandez à l'assembleur de calculer la longueur de votre chaîne, en utilisant une directive 'msglength equ $ -msg' juste après avoir défini' msg'. –