Другие языки программирования и технологии

Прошу помощи добить файловый 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 килобайтами. Файл длиннее будет усечён до этой величины.
В случае ошибки дисковых операций в консоль выводится сообщение без расшифровки ошибки.
АЭ
Александр Эстерлейн
51 590
Лучший ответ