MASM MODEL small STACK 256 .data buffer dw 1 Handle dw 0 Handle2 dw 0 filename db 'file.txt', 0 filename2 db 'file2.txt', 0 .code ASSUME ds:@data,es:@data main: mov ax,@data mov ds,ax mov es,0b:8000h ;------------------Открываем файл------------- mov di,30h xor cx,cx ;атрибуты файла - обычный файл mov bx,2 ;режим доступа обычный - доступ для чтения-записи mov dx,1 ;если файл существует, то открыть его. в обратной случае вернуть ошибку mov dx,offset filename ;формируем указатель на имя файла mov ah,3dh ;номер функции DOS int 21h ;открываем файл mov [Handle], ax ;сохраним дескриптор файла mov bx,ax jnc read ;если файл существовал, то переход jc ex ;переход в случае ошибки read: mov ah, 3Fh mov cx,1 mov dx, buffer int 21h cmp ax, cx ; Проверка EOF jne eof ; Если EOF, то выходим push ax push bx mov bx,dx mov al,[bx] mov [di],ax pop bx pop ax inc di ; cmp [buffer], 13 ; Пропускаем 13-ый символ ; je read ; cmp [buffer], 10 ; Проверка конца строки ; je exit jmp read eof: mov bx, Handle ; закрываем файл mov ah, 3Eh int 21h cld sub di,30h mov ax,di mov cl,al mov ah,al mov al,' ' mov di,30h jmp first ex: jmp exit first: mov al,'$' cmp [di],al mov al,' ' je write;exit cmp [di],al je found inc di loop first faild: jmp write found: mov bx,di inc di cmp [di],al je found2 jmp first found2: lea si,[di+1] mov ah, cl rep movsb dec ah mov cl,ah mov di,bx jmp found write: ; xor cx,cx ;атрибуты файла - обычный файл ; mov bx,1 ;режим доступа обычный - доступ для чтения-записи ; mov dx,1 ; mov dx,offset filename2 ;формируем указатель на имя файла ; mov cx,5 ; mov ah,5bh ;номер функции DOS ; int 21h ;создаём и открываем файл ; mov [Handle2], ax ;сохраним дескриптор файла ; mov bx,ax xor cx,cx ;атрибуты файла - обычный файл mov bx,0002h ;режим доступа обычный - доступ для чтения-записи mov dx,1 ;если файл существует, то открыть его. в обратной случае вернуть ошибку mov dx,offset filename2 ;формируем указатель на имя файла mov al,0001h mov ah,3dh ;номер функции DOS int 21h ;открываем файл mov [Handle2], ax ;сохраним дескриптор файла mov bx,ax mov di,30h ; mov bx, xor ax,ax mov ah, 40h mov cx,30 mov dx, di int 21h mov ah,0dh int 21h cmp ax, cx ; Проверка EOF mov bx, Handle2 ; закрываем файл mov ah, 3Eh int 21h jc exit ;переход в случае ошибки exit: mov ax,4c00h int 21h end main