我试图了解如何将堆栈与程序集一起使用,并且在尝试中,我在 SO 中的一个问题中遇到了以下代码,即:
push ecx
mov eax, 4
mov ebx, 1
mov ecx, result
mov edx, result_len
int 0x80
mov eax, 4
mov ebx, 1
mov ecx, esp
add [ecx], DWORD 48
mov edx, 2
int 0x80
在这种情况下,ecx,持有一个数字,作者通过(如果我错了,请纠正我!)首先将堆栈指针移动到 ecx,然后通过将 48 添加到 ecx 所在的内存地址将数字转换为 ascii 字符是指点。他能通过“pop ecx”做同样的事情,然后转换成ascii吗?我不太明白作者为什么要这样写。任何帮助,将不胜感激。