TITLE Рубежный контроль - вариант 20 - удаление лишних пробелов - 6 ошибок
; Например, из последовательности в три пробела мы оставим только один
.model small, stdcall
.stack 128

        


.data
Input BYTE "Head    like      a hole",0Ah, 0Dh,"Black          as    your    soul",0Ah, 0Dh,"I'd          rather         die",0Ah, 0Dh,"Then    give  you      control.",0Ah, 0Dh,"Bow   down before the one you serve",0Ah, 0Dh,"You're going to get what you   deserve.$",0
Output BYTE (LENGTHOF Input) DUP(?)
.code

main PROC
mov ax, @data
mov ds, ax
cld	 

mov si, OFFSET Input 
mov cx, -1

cycle:			; Подсчёт длины строки
inc cx			;
lodsb 			;		
jnz cycle		;


mov si, OFFSET Input
mov di, OFFSET Output

mov dl, 00h		; dl=1 означает, что один пробел уже был
copy:			; Копируем 
	lodsb		;
	cmp al, 20h	; Если не пробел, то выход из "блока" пробелов
	jne accept	; 
	test dl, 01h	; Мы внутри пробельной последовательности?
	jnz next	; 
	stosb		;
	or dl, 01h	;
jmp next		;
			;
 accept:		;
	xor dl,dl	;
	next:		;
loop copy		;

call newline

mov ah, 02h		; Вывод строки
mov dx, OFFSET Input
int 21h

call newline
call newline

mov dx, OFFSET Output	; 


call newline

int 21h

main ENDP

newline PROC USES ax dx
mov ah, 02h
mov dl, 0Ah
int 21h
mov dl, 0Dh
int 21h

ret
newline ENDP

END main