Выделение памяти для новой переменной во время работы Assembler
Формулировка задачи:
Здравствуйте , подскажите пожалуйста как во время работы программы выделить новую переменную . Проблема в том что , я в цикле считываю строки из едита (графический интерфейс ) . Текст из едита записываю в переменную. Соответственно у меня есть массив указателей на строки.И когда я в цикле заношу , то выходит что заношу адрес одной и той же переменной. Подскажите пожалуйста как быть в таком случае .
invoke GetDlgItemText,[hwnddlg],ID_STR,message,40h push eax mov al,[strcnt] cmp al,cnt je eql mov [array+eax*4],message
Решение задачи: «Выделение памяти для новой переменной во время работы Assembler»
textual
Листинг программы
format PE Console 4.0 entry Start include 'include\win32a.inc' section '.data' data readable writeable format_ db '%s',0 crlf db 0dh,0ah,0 section '.text' code readable executable Start: invoke GetProcessHeap mov edi,eax invoke HeapAlloc,edi,HEAP_ZERO_MEMORY,40h mov esi,eax xor ecx,ecx xor ebx,ebx @@: push ecx lea eax,[esi+ebx] cinvoke scanf,format_,eax add ebx,40h lea eax,[ebx+40h] invoke HeapReAlloc,edi,HEAP_ZERO_MEMORY,esi,eax mov esi,eax cinvoke _getch pop ecx inc ecx cmp al,1bh jnz @b mov ebx,ecx push esi push 0a0dh @@: cinvoke printf,esi cinvoke printf,esp add esi,40h dec ebx jnz @b add esp,4 pop esi invoke HeapFree,edi,HEAP_NO_SERIALIZE,esi ret section '.idata' import data readable library kernel, 'KERNEL32.DLL',\ msvcrt,'MSVCRT.DLL' import msvcrt,\ printf,'printf',\ _getch,'_getch',\ scanf, 'scanf' import kernel,\ GetProcessHeap, 'GetProcessHeap',\ HeapAlloc, 'HeapAlloc',\ HeapReAlloc, 'HeapReAlloc',\ HeapFree, 'HeapFree',\ CreateFile, 'CreateFileA',\ ExitProcess, 'ExitProcess'
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д