Дошёл до того, что сделал 1 часть с пробелами:
Код:

.MODEL small ;отводим под стек и под данные по 64Кб
.STACK 100h ;отмечаем начало сегмента стека
.386
.DATA ;отмечаем начало сегмента данных
NL db 0Ah, 0Dh, '$'
Buf DB 255, 0, 256 DUP (0) ;
hFile dw ?
Filename db 'file.txt',0
.CODE ;отмечаем начало сегмента кодов
main PROC
mov ax,@data ;копируем адрес
mov ds,ax ;сегмента данных
mov dx, offset Buf
mov ah, 0Ah
int 21h ;запрашиваем строку
mov dx, offset NL
mov ah, 9h
int 21h ;переводим строку на экране, выводя CRLF
xor cx, cx
mov cl, [Buf+1]
test cl, cl
jz Exit ;проверяем длину строки - если пустая, то выходим
; mov si, offset Buf+2 ;если не пустая - то будем искать пробелы
; add Buf+2,cl
add bx, offset Buf+1
add bl, cl
mov si, bx
last:
mov dl,[si]
cmp dl,' '
jne tmp
dec si
dec cx
jmp last
tmp: mov si, offset Buf+2
first: mov dl,[si]
cmp dl,' '
jne Cycle
inc si
dec cx
jmp first
Cycle:
mov dl, [si] ;берём очередной байт
cmp dl, ' ' ;сравниваем с пробелом
jne Print
cmp dx,' ' ;а если пробел - то предыдущий был пробел или нет?
je NextChar ;если два пробела подряд - не печатаем
Print:
mov ah,02h ;выбор функции 2
int 21h ;вызов DOS
NextChar:
mov dh,dl ;сохранить текущий символ для теста на следующем витке
inc si ;перейти к следующему символу
loop Cycle
Exit:
mov ax, 4c00h
int 21h ;выходим из программы
main ENDP
END main
как с файлом сделать теоретически я представляю,
взять полученную строку и посимвольно записать её в файл...
или записать всё в переменную, что бы в ней получилась обработанная строка...
Но я вообще не поднимаю как это в Ассемблере реализовать ((
я не понимаю как вообще в файл запись происходит...