Arrays 如何在emu8086汇编中获得数组长度?
我想获得emu8086的汇编中的数组长度。使用Arrays 如何在emu8086汇编中获得数组长度?,arrays,assembly,emu8086,Arrays,Assembly,Emu8086,我想获得emu8086的汇编中的数组长度。使用length或sizeof我得到一个错误: 错误参数 有人能帮我找到数组长度的其他方法吗?A。您可以计算数组的结尾($)与其开始(偏移数组1)之间的差值。您需要在数组定义之后立即进行计算。如果不这样做,$将在程序中指向更远的地方 array1 db 65,66,67 array1len equ $ - offset array1 array2 db 'Any string is an array too!' array2len equ $ - of
length
或sizeof
我得到一个错误:
错误参数
有人能帮我找到数组长度的其他方法吗?A。您可以计算数组的结尾(
$
)与其开始(偏移数组1
)之间的差值。您需要在数组定义之后立即进行计算。如果不这样做,$
将在程序中指向更远的地方
array1 db 65,66,67
array1len equ $ - offset array1
array2 db 'Any string is an array too!'
array2len equ $ - offset array2
B。如果已知数组有一些特殊的终止值,那么搜索该值也是查找数组长度的一种方法。考虑一个ASCIZ字符串,一个由零字节终止的ASCII字符字符串:
string db 'Just a text.', 0
下一个循环将在CX
中产生长度(12,当然不包括零字节):
mov si, offset string - 1
back:
inc si
cmp byte ptr [si], 0
jne back
lea cx, [si - offset string]
如果emu8086不支持在汇编时获取数组长度的任何方法,则可以将数组长度存储为单独的元素,或者保留一些值作为“数组结束”标记。