Я хочу использовать в своем коде что-то вроде этого:Объединить в макроассемблере
.data?
my_macro_var db MAX_PATH DUP (?)
.code
mov esi, offset my_macro_var
my_macro esi, "hello and bye"
Для этого я создать этот макрос, но я получаю несколько ошибок, которые я не могу решить ..
my_macro macro reg, characters
LOCAL v1,v2,v3
LOCAL c1,c2,c3,c4,cTotal
v1 TEXTEQU %(@SizeStr(<characters>)) -2 ;; -2 is for the double quote
v2 textequ %(v1/4)
v3 = 0
;% echo @SubStr(<characters>, 2, 4)
repeat v2
c1 Substr <characters>,v3,1
cTotal equ c1
mov dword ptr [reg+v3], cTotal
v3=v3+4
endm
endm
Я хочу этот результат ..
mov dword ptr [esi+00d], 'lleh'
mov dword ptr [esi+04d], 'na o'
mov dword ptr [esi+08d], 'yb d'
mov dword ptr [esi+12d], 'e'
Это ошибка s, что я получаю:
Code.asm(14) : error A2090: positive value expected
MacroLoop(1): iteration 1: Macro Called From
my_macro(16): Macro Called From
Code.asm(14): Main Line Code
Code.asm(14) : error A2006: undefined symbol : a
MacroLoop(4): iteration 1: Macro Called From
my_macro(16): Macro Called From
Code.asm(14): Main Line Code
Code.asm(14) : error A2006: undefined symbol : l
MacroLoop(4): iteration 2: Macro Called From
my_macro(16): Macro Called From
Code.asm(14): Main Line Code
Code.asm(14) : error A2006: undefined symbol : a
MacroLoop(4): iteration 3: Macro Called From
my_macro(16): Macro Called From
Code.asm(14): Main Line Code
Я думаю, что моя проблема будет решена, если я могу использовать зиЬзЬги и конкатенацию 4 переменных ...
_ «но я получаю несколько ошибок, которые я не могу решить» _ Тогда вы должны перечислить эти ошибки в вашем вопросе. – Michael