Запись на следующую строку в файле - Assembler/emu8086

Узнай цену своей работы

Формулировка задачи:

Суть заключается в том, что необходимо открыть существующий текстовый файл и на новой строке записать введеную информацию. У меня получилось реализовать открытие и запись информации, правда информация записывается начиная с 0 индекса в файле. Буду ради помощи

Решение задачи: «Запись на следующую строку в файле»

textual
Листинг программы
.model small
 
.stack 100h
 
.data
        InFileName      db      'data.txt', 0
        InFileHandler   dw      ?
 
        errFileOpen     db      'File open error', '$'
        errFileLSeek    db      'File lseek error', '$'
        errFileWrite    db      'File write error', '$'
        errFileClose    db      'File close error', '$'
 
        Buffer          db      0Dh, 0Ah, 'The new line was append', 0Dh, 0Ah
        BufLen          dw      $-Buffer
 
        CrLf    db      0Dh, 0Ah, '$'
 
.code
 
main    proc
        mov     ax,     @data
        mov     ds,     ax
 
        ;открытие файлов
 
        mov     ah,     3Dh
        mov     al,     02h     ;открыть для чтения и записи
        lea     dx,     InFileName
        int     21h
        jnc     @@InFileOpenOk
        mov     ah,     09h
        lea     dx,     errFileOpen
        int     21h
        jmp     @@Exit
@@InFileOpenOk:
        mov     [InFileHandler],        ax
 
        mov     ax,     4202h
        mov     bx,     [InFileHandler]
        xor     cx,     cx
        xor     dx,     dx
        int     21h
        jnc     @@InFileLSeekOk
        mov     ah,     09h
        lea     dx,     errFileLSeek
        int     21h
        jmp     @@CloseIfFileAndExit
@@InFileLSeekOk:
 
        mov     ah,     40h
        mov     bx,     [InFileHandler]
        mov     cx,     [BufLen]
        lea     dx,     [Buffer]
        int     21h
        jnc     @@InFileWriteOk
        mov     ah,     09h
        lea     dx,     errFileWrite
        int     21h
        jmp     @@CloseIfFileAndExit
@@InFileWriteOk:
 
@@CloseIfFileAndExit:
        mov     ah,     3Eh
        mov     bx,     InFileHandler
        int     21h
        jnc     @@Exit
        mov     ah,     09h
        lea     dx,     errFileClose
        int     21h
@@Exit:
        mov     ax,     4C00h
        int     21h
main    endp
 
end     main

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5
Похожие ответы