============================================== strings TCHAR '12345678',0 buffertxt rb 512 Leng dd 8 section '.code' code readable executable start: mov esi,strings mov edi,buffertxt mov ecx,Leng shr ecx,2 rep movsd invoke MessageBox,0,buffertxt,buffertxt,MB_OK invoke ExitProcess,0 ============================================== при пересылки в буффер(buffertxt) текстовой строки (strings) пересылаеться только половина текста "1234",почему ведь команда movsd должна пересылать двойное слово? и вся строка должна быть в буффере?('12345678') компилятор:fasm
Во первых Leng dd 9 ; не теряем завершающий ноль только тогда dword пересылка теряет смысл, А во вторых в фасме Leng - это адрес переменной, а [Leng] это её значение и ещё rep movs целесообразна только для выравненных в памяти dwordов, иначе лучше разбить её на простые комманды.
тип TCHAR может принимать значения как в ANSI, так и в Unicode в зависимости от первого инклуда в сорце, где и определён тип этот -> *a.inc / *w.inc, поэтому это надо учитывать при копировании.