【问题标题】:How can we obtain array length in emu8086 assembly?我们如何在 emu8086 程序集中获得数组长度?
【发布时间】:2020-12-16 08:01:55
【问题描述】:

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

错误错误的参数

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

【问题讨论】:

  • 如果 emu8086 不支持在汇编时获取数组长度的任何方式,那么您可以将数组长度存储为单独的元素,或者保留一些值作为“结束数组”标记。

标签: arrays assembly emu8086


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2016-01-14
    • 1970-01-01
    • 2018-10-04
    • 1970-01-01
    • 2014-01-28
    • 2020-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多