|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Сен 28, 2003 15:16:27 Hi! Прошу отнестись с пониманием ;-) Нужно сделать копию строки. Как можно в NASMe выделить память под буфер, примерчик, если можно. Конкретнее - это подпрограмма на асме, которая вызывается из Basic. (RapidQ Basic) Передаются указатели на строки. Мне надо создать временный буфер равный (или неравный) длине строки - параметра. ;-------------------- ; PROC NAME : AINSTR ; ; NASM CODE Generated by rqAsmToBin ;on 09-21-2003 at 23:19:46 ; bits 32 ; %define lStart [ebp+08] %define ptrString [ebp+12] %define ptrStringSearched [ebp+16] ----------- Нашел в документации пример -------------------------------- buffer: db 'hello, world' times 64-$+buffer db ' ' --------------------------------- Как понять строку "times 64-$+buffer db ' '" ?? $+buffer - длина buffer?? могу я написать что-то типа, ---------------- mov esi, ptrSrcString ; source string dest_buffer: $+ptrSrcString ; lenght of new buffer --------------------- или надо вычисять длину строки SrcString помещать ее допустим в eax и делать типа buffer: db ' ' times eax 2. Существуют где нибудь готовые String Handling Routines in Nasm? wbr, Andrew зы. чайник |
|
|
Дата: Сен 28, 2003 17:46:38 Самое простое это выделить память в стеке. Еще можно использовать HeapAlloc/HeapFree. Директива times n просто повторяет следующий за ней фрагмент n раз. В данном случае строка будет дополнена до 64 байт нулями. Это легко понять если посмотреть на нее так: times 64-($-buffer) db 0. |
|
|
Дата: Сен 29, 2003 21:35:38 1. Что-то не нашел я в документации Nasm'a HeapAlloc/HeapFree. 2. Не понял я все-таки, что такое $. ;-( $ evaluates to the assembly position at the beginning of the line containing the expression; Как бы это перевести правильно? $ определяет позицию блока с начала строки, содержащей выражение. $$ evaluates to the beginning of the current section; so you can tell how far into the section you are by using ($$$) $$ определяет начало текущей секции; так что вы можете сказать, как далеко вы от начала текущей секции, используя ($-$$) с учетом message db 'hello, world' msglen equ $-message ну и как это получилось, что msglen= ($-message) wbr, Andrew |
|
|
Дата: Сен 29, 2003 23:55:12 · Поправил: Fixer sHell Что-то не нашел я в документации Nasm'a HeapAlloc/HeapFree. Читай MSDN Не понял я все-таки, что такое $. ;-( $ - это макросредство за место которого линкер поместит адрес по которому находиться инструкция. Так что "jmp $" вечный цикл. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.085 |