在masm中,您可以使用.DATA和.DATA静态分配内存?指令,这很好,但如果我需要动态分配一块内存呢?让我们说我想在动态分配的内存中创建一个值为10的DWORD。一种理论是我可以遍历一系列地址,检查它们是否已分配,如果没有,则分配地址并使用它来存储DWORD。但是只有一个问题;我不知道如何检查是否分配了地址。 :(
Make_Dword PROC
PUSH EBP
MOV EBP, ESP
PUSH ESI
PUSH EDI
PUSH EBX
MOV EBX, [EBP - 08h] ;EBP - 08h is the dword value
;Iterate through memory addresses and check if one is unallocated, if so
; use it to store the dword value in, finally return the newly allocated
; address of the dword in memory.
MOV EAX, [the newly allocated address of the dword]
POP EBX
POP EDI
POP ESI
MOV ESP, EBP
POP EBP
Make_Dword ENDP
PUSH DWORD PTR 0Ah
CALL Make_Dword
答案 0 :(得分:0)
我正在编辑我的回复,看看我是否可以澄清。如果你有一个数据指令,你可以用它分配一个静态大小的内存块吗?例如
.DATA poolOfDwords DWORD 1000
然后,只需将它们初始化为您知道无法获取的值(-1可能?)。然后,当你需要"分配"在DWORD中,您可以遍历列表中第一个条目-1(未分配)并使用它。如果需要使用它,可以将偏移量返回到该位置。
希望这有助于澄清我的想法。