Сделал. Вот решение если кому понадобится
.model small
.stack 100h
extrn write:proc ;внешняя процедура для вывода чисел
.data
;параметры для ввода
Enter_String db 50 ;максимальная длина
Len_S db ? ;реальная длина
Str_Field db 50 dup(' ') ;введенные символы (поле ввода - цепочка)
Ns db ' $' ;поле для размещения числа в строковом
;представлении для последующего вывода
;под число отводится 6 позиций (можно и больше)
public Enter_String,Len_S,Str_Field,Ns
;===================================
S2 db 13,10,'Vvedite stroky: $'
S3 db 13,10,'Obrabotannaya stroka:',13,10,'$'
S4 db 13,10,'press <Enter> to exit.$'
S5 db 13,10,'kolvo zamen = $'
k dw 0
;===================================
.code
begin:
mov ax,@data ;инициализация
mov ds,ax
mov es,ax
mov ah,9 ;вывод подсказки ввода
lea dx,S2
int 21h
mov ah,10 ;ввод строки
lea dx,Enter_String
int 21h
cld
lea di,Str_Field
mov cl,Len_S
for: mov al,'w'
jcxz vyvod
repne scasb
je zamena
vyvod:
;вывод результата
mov al,'$'
stosb
mov ah,9
lea dx,S3
int 21h
mov ah,9
lea dx,Str_Field
int 21h
mov ah,9
lea dx,S5
int 21h
mov ax,k
call write
mov ah,9
lea dx,S4
int 21h
mov ah,10
lea dx,Str_Field
int 21h
jmp exit
zamena:
inc k
dec di
mov al,'s'
stosb
jmp for
exit:
mov ah,4ch ;выход в DOS
int 21h
end begin