【发布时间】:2020-12-16 08:01:55
【问题描述】:
我想获得emu8086 的汇编数组长度。使用length 或sizeof 我得到一个错误:
错误错误的参数
谁能帮我用其他方法来查找数组的长度?
【问题讨论】:
-
如果 emu8086 不支持在汇编时获取数组长度的任何方式,那么您可以将数组长度存储为单独的元素,或者保留一些值作为“结束数组”标记。
我想获得emu8086 的汇编数组长度。使用length 或sizeof 我得到一个错误:
错误错误的参数
谁能帮我用其他方法来查找数组的长度?
【问题讨论】:
一个。您可以计算数组结尾 ($) 与其开头 (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]
【讨论】: