繁体   English   中英

我们如何在 emu8086 程序集中获得数组长度?

[英]How can we obtain array length in emu8086 assembly?

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

错误错误参数

谁能帮我用其他方法来查找数组的长度?

一个 您可以计算数组结尾 ( $ ) 与其开头 ( offset array1 ) 之间的差异。 您需要在数组定义之后立即进行计算。 如果你不这样做, $将在程序中指向更远的地方。

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

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

如果已知数组有一些特殊的终止值,那么搜索该值也是一种查找数组长度的方法。 考虑一个 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]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM