emu8086程序集如何获取数组长度?

How can we obtain array length in emu8086 assembly?

我想获取emu8086汇编中的数组长度。使用 lengthsizeof 我得到一个错误:

error-wrong parameter

谁能帮我用其他方法求数组的长度?

A。您可以计算数组结尾 ($) 和开头 (offset array1) 之间的差异。您需要在数组定义之后立即进行计算。如果您不这样做,$ 已经在程序中指向更靠下的位置了。

array1 db 65,66,67
array1len equ $ - offset array1

array2 db 'Any string is an array too!'
array2len equ $ - offset array2

B。如果已知数组有一些特殊的终止值,那么搜索该值也是找到数组长度的一种方法。考虑一个 ASCIIZ 字符串,一串以零字节结尾的 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]