Arrays 如何在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

我想获得emu8086的汇编中的数组长度。使用
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不支持在汇编时获取数组长度的任何方法,则可以将数组长度存储为单独的元素,或者保留一些值作为“数组结束”标记。