Прошу помощи добить файловый in-out для готовой проги. Ассемблер

Прошу помощи добить файловый in-out для готовой проги. Ассемблер

  • > инвертирует регистр прописных в заглавные. Игнорирует заглавные и побочные символы.
    То есть, не должна вообще изменять текст. А ваша программа меняет строчные латинские буквы на прописные латинские.
    На всякий случай: Прописная буква.

    Программа, собранная из трёх ваших фрагментов, написанных, кстати, для разных ассемблеров, с необходимыми правками. Компилятор MASM.

    .model tiny
    .386

    .code
    org 100h
    start:
    mov ax,3D02h
    mov dx,offset file_name
    int 21h
    jnc @F
    call error_msg
    jmp exit

    @@:
    mov bx,ax
    mov ah,3Fh
    mov dx,offset buffer
    mov cx,8000h
    int 21h
    jnc @F
    call error_msg
    jmp close_file

    @@:
    lea si,buffer
    mov cx,ax
    mov f_size,ax

    m1:
    lodsb
    push cx
    mov cx,26
    lea di,tab
    repne scasb
    jnz short m2
    and al,11011111b
    mov [si-1],al
    m2:
    pop cx
    loop m1

    mov ax,4200h
    xor cx,cx
    mov dx,cx
    int 21h
    jnc save_file
    jmp exit

    save_file:
    mov ah,40h
    mov cx,[f_size] mov dx,offset buffer
    int 21h
    jnc close_file
    call error_msg
    jmp exit

    close_file:
    mov ah,3Eh
    int 21h
    jnc exit
    call error_msg

    exit:
    ret

    error_msg:
    mov ah,9
    mov dx,offset s_error
    int 21h
    mov ah,9
    mov dx,offset s_pak
    int 21h
    xor ah,ah
    int 16h
    ret

    file_name db 'text.txt',0
    s_error db 'Ошибка при выполнении операции с файлом$'
    s_pak db 10,'Press any key...$'
    tab db 'abcdefghijklmnopqrstuvwxyz'
    f_size dw ?
    buffer equ $

    end start

    P.S. Обрабатываемый текст должен находится в файле text.txt в одном каталоге с программой. Размер файла ограничен 32 килобайтами. Файл длиннее будет усечён до этой величины.
    В случае ошибки дисковых операций в консоль выводится сообщение без расшифровки ошибки.