assembly 如何在emu8086汇编中获取数组长度?

kfgdxczn  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(119)

我想在emu8086的汇编中获得数组长度。使用lengthsizeof时,我得到一个错误:
错误参数
有谁能帮我找到数组的长度吗?

qni6mghb

qni6mghb1#

A.你可以计算数组的末尾($)和它的开始(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]

相关问题