TITLE Рубежный контроль - вариант 14 - Попарная смена символов - 6 ошибок
;Пример: abcdef -> badcfe (отражаем каждую пару символов). У строки (не включая завершающий 0 и символ $ ). 
;Для строк с нечётной длиной последний символ выводиться не будет

.model small, stdcall
.stack 128

.data
Input BYTE "Supreme talks about his baby's mother like a whore. Sweet 16 she is, with future uncertain, love incomplete. Soapy days for Jr and she$",0
Output BYTE LENGTHOF Input DUP(?)
.code

main PROC
mov ax, @data
mov ds, ax
mov es, ax ; !
cld	 

mov si, OFFSET Input 
mov cx, -2

cycle:			; Подсчёт (длины строки-2)
inc cx			;
lodsb cx 		;
jnz cycle		;


mov ax, cx		;Делим длину на 2
mov bl, 2h		;
div bl			;
mov cl, al		;
mov bh,ah

mov si, OFFSET Input
mov di, OFFSET Output

copy:			; Копируем c перестановками
	lodsw		; AX=пара символов
	ror ax, 8	; переставляем символы
	stosw		; записываем пару
			;
loop copy		;

finish:
mov al, '$'		; Завершим строку
stosb			;

call newline

mov ah, 02h		; Вывод строки
mov dx, OFFSET Input
int 21h

call newline
call newline
mov dx, OFFSET Output	; Вывод  результата
int 21h


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