Я пишу программу DOS для создания файла и записи в него. Мне нужно записать данные в две разные строки. Вот мой код:
.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
Я использую MASM и DOSBOX. Проблема в том, что хотя программа печатает данные в двух разных строках, но перед второй строкой она также печатает некоторые странные символы, а затем печатает строку msg. Что не так с этой программой, и как я могу это исправить?
mov cx,28h
. Может ты имел ввидуmov cx,28
? - person Michael Petch   schedule 14.03.2016msglength equ $-msg
сразу после определенияmsg
. - person Peter Cordes   schedule 14.03.2016msglen equ $-msg
сразу после определенияmsg
. Это вычислит размер (длину)msg
, а затем вы можете использовать это значение, заменивmov cx, 28h
наmov cx, msglen
. - person Michael Petch   schedule 14.03.2016msg
, используя что-то вродеmsg db 'Prashant Pandey 2014A7PS100G', 13, 10
- person Michael Petch   schedule 14.03.2016