Подскажите, как вставить в эдит-контролы тексты между разделителями (`)??: ой-бла`10,874`асм`forum`1000 т.е. разбить текст на колонки.
Valentin А в чем именно сложности? В самом разделении? Код (Text): mov esi,text next_word: mov edi,buf next_char: lodsb cmp al,'`' jnz next_char xor al,al stosb ; отображение текста buf там где надо ; проверка, надо ли продолжжать поиск jz next_word ... buf resb 64
Получается так: Код (Text): .data text db "ой-бла`10,874`асм`forum`1000", 0 .data? buf dd ? .code start: mov esi,offset text next_word: mov buf,edi ; [b]!!!здесь ничего нет.[/b] next_char: lodsb cmp al,'`' jnz next_char xor al,al stosb ; отображение текста buf там где надо ; проверка, надо ли продолжжать поиск jz next_word ret invoke ExitProcess,NULL end start Мне нужно прочитать первое слово - послать в контрол, дальше второе и т.д.
Valentin круто, что ты этим хотел сказать? Вообще-то аргументы надо местами переставить. 4 байта под строку? не маловато ли?! Я бы написал хотя бы "db 64 dup (0)", но тебе лучше знать, какой длины максимально может быть строка. Ты пишешь на масме/тасме? Тогда не забывай про слово "offset", когда нужен адрес. Т.е. "mov edi,offset buf". если всего пять слов, то код вместе с "проверкой, надо ли продолжать поиск" будет такой (masm): Код (Text): mov esi,offset text mov ecx,5 next_word: mov edi,offset buf next_char: lodsb cmp al,'`' jnz next_char xor al,al stosb ; отображение текста buf там где надо dec ecx jnz next_word ret нафига тута?
ret -это ошибка при копировании (не нужно). Код (Text): ......... stosb ; отображение текста buf там где надо dec ecx ........ Я так понял, что в буфере buf найденого текста нет. mov edi,offset buf т.к. он (буфер) ложится в edi Немного изменим задачу для наглядности. Код (Text): mov esi,offset text mov ecx,5 next_word: mov edi,offset buf next_char: lodsb cmp al,'`' jnz next_char xor al,al stosb ; отображение текста buf там где надо invoke MessageBox,NULL,offset buf,0,MB_OK OR MB_ICONWARNING OR MB_SYSTEMMODAL dec ecx jnz next_word Вот как сейчас поместить слова в MessageBox (к примеру), чтобы они отображались при каждом проходе через '`' ?
Valentin Есть. Не буфер, а его адрес. ой, я ложанулся, с самого начала сделал ошибку, а потом ее переписывал. После lodsb надо поставить stosb: Код (Text): next_char: lodsb stosb ; * ты уже написал код, если добавить stosb после lodsb, то все будет работать. п.с. я точно не знаю, но вроде MessageBox портит ecx, его надо сохранить перед вызовом и восстановить после, например в стеке.