【发布时间】:2013-02-25 11:11:00
【问题描述】:
我正在尝试将一个数组传递给我用汇编编写的排序程序。我到目前为止的代码是:
main.c:
#include <stdio.h>
extern void myFunc(int * somedata);
int arr[5] = { 3, 2, 33, 11, 1};
void main(){
int i;
myFunc(arr);
for(i = 0; i < 5; i++)
{
// printf( "%d\n", arr[i] );
}
}
myFunc.asm:
部分 .text 全局 myFunc 外部 printf
myFunc:
enter 4,0
push ebx
push dword [ebp + 8]
call printf
pop ebx
leave
ret
这只是一些测试代码,用于了解如何执行此操作。
我的理解是这应该打印指向数组的指针,但我可能错了。
谁能给我一个将数组传递给程序集文件(NASM)的简单示例。
谢谢!
【问题讨论】:
-
在您的程序集中,您在调用 printf 之前将指针值压入堆栈。但我看不到你在哪里推送格式化字符串。您实际上不需要
push "%x\n"到堆栈上吗?