首页 > 解决方案 > 我们如何在 emu8086 程序集中获得数组长度?

问题描述

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

错误错误参数

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

标签: arraysassemblyemu8086

解决方案


一个。您可以计算数组末尾 ( $) 与其开头 ( 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

下一个循环将产生长度(12,当然不包括零字节)CX

  mov  si, offset string - 1
back:
  inc  si
  cmp  byte ptr [si], 0
  jne  back
  lea  cx, [si - offset string]

推荐阅读