Ассемблер FASM строки

Задание: Ассемблер FASM. Дано целое число N(>0) и строка S. Преобразовать строку S в строку длины N, следующим образом: если длина строки S больше N, то отбросить первые символы. Если длина строки S меньше N, то в ее начало добавить символы '.' (точка)

Помогите с кодом пожалуйста. Гугл использовал не нашел. Пока смог только такой код, и то не полный. Не понимаю как работать со строкой, как добавлять или убавлять. Желательно, было бы отлично, если вы отправите полный код.

format PE console 4.0
 
include 'win32a.inc'
    cinvoke printf, text1
    cinvoke scanf, spp, x
    mov ebx, [x]

    invoke  malloc, 128
    or  eax, eax
    jnz cont
    cinvoke printf, tps, errmsg
    jmp gtfo
cont:   mov [buf], eax                       
    cinvoke printf, tps, entr
    cinvoke scanf, tps, [buf]
    invoke  strlen, [buf]
    cmp eax, ebx
    ja above
    jb below
    cinvoke printf, tpd, eax
    invoke  _getch
 
    invoke  free, [buf]

above:

below:

gtfo:
    invoke  exit,0              ;
buf dd  ?
text1   db 'Enter X: ',0
entr    db  'Enter string:',0
errmsg  db  'malloc error',0
tps db  '%s', 0
tpd db  0Dh, 0Ah,'String length is %d bytes.',0Dh, 0Ah
    db  'Press any key to exit.', 0

spp db '%d',0
x   dd ?

data import
library msvcrt,'msvcrt.dll'
 
import  msvcrt,\
    malloc,'malloc',\
    free,'free',\
    _getch,'_getch',\
    strlen,'strlen',\
    scanf,'scanf',\
    printf,'printf',\
    exit,'exit'
end data             

Ответы (0 шт):