如何在Assembly中打印数组

时间:2015-12-13 23:19:03

标签: assembly x86 calling-convention

我想打印结果数组,它有3000个元素。我写了这段代码:

header('Content-Type: application/json');
echo json_encode($array, JSON_PRETTY_PRINT);

问题是,该程序只打印第一个元素3000次。我应该改变什么?

更新

解决

1 个答案:

答案 0 :(得分:3)

ecxedx是调用者保存的寄存器,这意味着它们可以在printf等被调用函数中自由使用。你很幸运,你甚至打印了3000件物品。一种可能的解决方案是使用围绕call printf

的堆栈保存和恢复这些寄存器
llp:

mov al,[edx]
push ecx
push edx
push eax
mov eax, offset message
push eax
call printf
add esp, 8
pop edx
pop ecx
inc edx

loop llp