Ассемблер 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