Другие языки программирования и технологии

Assembler,MASM! Лаб. Работа. #Помощь#Срочно

Вот мое задание: В заданной строке с нулевым завершителем вставить заданную подстроку, начиная с заданной позиции. Прошу вас помочь мне. Я понимаю что это скорее всего элементарщина, но мне нужна помощь.
P.S Желательно алгоритм и код!
MASM, 32-разрядное консольное приложение для Windows.

.386
.model flat, stdcall
option casemap :none

include windows.inc
include kernel32.inc
includelib kernel32.lib

.data
  String db "Заданная строка", 0
  Sub_Str db "подстрока ", 0
  Pos dd 10; Заданная позиция

.data?
  Len_Str dd ?
  Len_SbStr dd ?
  OutStr dd ?

.code
N184019161:
    invoke lstrlenA, addr String
    mov Len_Str, eax
    invoke lstrlenA, addr Sub_Str
    mov Len_SbStr, eax
    add eax, Len_Str
    inc eax
    invoke VirtualAlloc, NULL, eax, MEM_COMMIT, PAGE_READWRITE
    mov OutStr, eax
    mov edi, eax
    lea esi, String
    mov ecx, Pos
    dec ecx
    rep movsb
    lea esi, Sub_Str
    mov ecx, Len_SbStr
    rep movsb
    lea esi, String
    add esi, Pos
    dec esi
    mov ecx, Len_Str
    sub ecx, Pos
    inc ecx
    rep movsb
    mov byte ptr [esi], 0
    invoke GetStdHandle, STD_OUTPUT_HANDLE
    mov ebx, eax
    invoke lstrlenA, OutStr
    invoke WriteConsoleA, ebx, OutStr, eax, NULL, 0
    invoke VirtualFree, OutStr, NULL, MEM_RELEASE
    invoke ExitProcess, NULL
    end N184019161

P.S. Нумерация символов в строке начинается с единицы.
Пример выполнения программы:

Эльдар Мусейбов
Эльдар Мусейбов
51 590
Лучший ответ