【发布时间】:2015-11-03 05:42:44
【问题描述】:
由于没有太多关于混合 C++ 和汇编的信息,我想澄清一下我在汇编中遇到的一些问题。
我正在做一个项目,我们必须将一个数组传递给一个单独的 .asm 文档以反转字符串。请查看我开始使用的 .cpp 文件的代码(不包括下面的标头):
extern"C" int swap(char*, int);
int main()
{
const int SIZE = 20;
char str1[20] = { '\0' };
cout << "Please enter a string: ";
cin >> str1;
swap(str1,SIZE);
return 0;
}
从这里开始,我将在我的 .asm 文档中开始以下内容(不包括下面代码中的标题):
_swap PROC
push ebp
mov ebp,esp ;stack pointer to ebp
mov ebx,[ebp+8] ; address of first array element
mov ecx,[ebp+12]
上面的 asm 代码是在访问数组的类中显示的。此时,如果我在 ebx 寄存器中加 4,指针是否会迭代到下一个索引?
假设我的数组中的第一个索引 (0) 是“a”。执行 mov ebx,[ebp+8] 是否将 ebx 设置为 'a' 所在的地址?如果是这样,增加 ebx 4 个字节应该将其移动到下一个索引,对吗?
由于我仍在学习并且这对我来说很新,对于任何语法错误,我深表歉意。我相信我只是想得到更多的澄清而不是答案。
【问题讨论】: