我想在emu8086的汇编中获得数组长度。使用length或sizeof时,我得到一个错误:错误参数有谁能帮我找到数组的长度吗?
length
sizeof
qni6mghb1#
A.你可以计算数组的末尾($)和它的开始(offset array1)之间的差。你需要在数组定义之后立即进行计算。如果你没有这样做,$在程序中已经指向更远的地方了。
$
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,当然不包括零字节):
CX
mov si, offset string - 1 back: inc si cmp byte ptr [si], 0 jne back lea cx, [si - offset string]
型
1条答案
按热度按时间qni6mghb1#
A.你可以计算数组的末尾(
$
)和它的开始(offset array1
)之间的差。你需要在数组定义之后立即进行计算。如果你没有这样做,$
在程序中已经指向更远的地方了。字符串
B.如果已知数组有一些特殊的终止值,那么搜索该值也是找到数组长度的一种方法。考虑一个ASCIIZ字符串,一个以零字节结尾的ASCII字符串:
型
下一个循环将产生
CX
中的长度(12,当然不包括零字节):型