【发布时间】:2023-01-31 02:21:02
【问题描述】:
所以我试图通过使用参数中的偏移量来获取数组的长度,但它只返回 lenthof 偏移量。有什么办法可以做到这一点? `
INCLUDE Irvine32.inc
multiply proto,arr:ptr dword
.data
array dword 1,2,3,4,5,6,7,8,9,10
num dword 3
.code
main PROC
invoke multiply,addr array
exit
main ENDP
multiply proc,arr:ptr dword
mov ecx,lengthof arr
mov eax, ecx
call writedec
ret
multiply endp
END main
`
【问题讨论】:
-
不,指针没有与之关联的数组大小。单独传递大小或使用终止符或长度前缀。
-
lengthof arr就像 C 中的sizeof运算符;它是一个编译时常量,您不必在上面使用#define。您不能像尝试在那里那样动态地使用它。
标签: assembly offset x86-16 procedure masm