【发布时间】:2016-05-21 17:08:04
【问题描述】:
我有一个main.c 函数,它有以下语句:
int initarr(int**arr, int n, int (*initfunc)(int));
然后我像这样调用c中的函数:
success = initarr(&arr, n, getNum);
问题是,在汇编代码中,在MODEL SMALL 中,上述函数中的第一个参数将在内存中作为WORD 或DWORD?
换句话说,当我编写代码时,它会起作用吗:
PUSH BP
MOV BP,SP
PUSH DI
MOV DI, WORD PTR[BP+4] ; DI will hold &arr.
现在DI 将保存 arr 的地址。
如果是真的,如果是,我将如何访问 arr[0] 的值?
PUSH BP
MOV BP,SP
PUSH DI
PUSH BX
MOV DI, WORD PTR[BP+4]
MOV BX, WORD PTR[DI]
BX 会保存数组的地址吗?我的意思是,第一个单元格的地址?
如果是这样,我现在如何访问 arr[0]?
也许是MOV DX, WORD PTR[BX]?
【问题讨论】:
-
用C写,编译,用调试器看看生成了什么。
-
@PaulOgilvie 这是个好主意。我回家后会检查一下并更新!