arrays - 我们如何在 emu8086 程序集中获得数组长度?
问题描述
我想获得emu8086的汇编数组长度。使用length
orsizeof
我得到一个错误:
错误错误参数
谁能帮我用其他方法来查找数组的长度?
解决方案
一个。您可以计算数组末尾 ( $
) 与其开头 ( 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]
推荐阅读
- ios - 你能告诉我我的代码有什么问题吗?我正在处理日期。这是另一种方式吗?
- ios - MKLocalSearch.start 返回未记录的 MKErrorGEOError
- javascript - ajax 和 php - 我的代码以某种方式重复了元素
- gradle - Junit 5 ParameterizedTest 注释在 Gralde 中引发意外的令牌错误
- css - 如何在样式模式饼图上编辑默认颜色 - Highscharts?
- visual-studio-2017 - 如何使用 .NETFramework VS 2017 构建 Nuget 包?
- python - 使用 Python 和 Selenium 抓取 Instagram 照片链接
- python - ImportError:无法导入名称“用户”
- rust - 为什么我的摄氏/华氏转换器函数总是返回 0?
- xml - xsl转换中when子句中dvm的正确语法是什么?