在汇编中初始化字符串数组

2024-06-19

我想创建一个数据数组,在初始化数据部分保存 5 个字符串。每个字符串正好有 4 个字符。每个字符串都有一些初始数据,例如第一个字符串的“abcd”,第二个字符串的“efgh”等等。无效的\0任何字符串都不需要字符。如何用汇编语言初始化字符串数组?

这是我到目前为止能想到的:

string    db    "abcdefghijklmnopqrst"

有一些干净的语法或方法吗?

我在用nasm对于 64 位代码。


第一:在汇编代码级别,没有“数组”的概念,它只是由开发人员解释的位和字节。

对于您的示例来说,实现数组的最直接方法是将字符串分解为它们自己的块:

string1: db "abcd"
string2: db "efgh"
string3: db "ijkl"
string4: db "mnop"
string5: db "qrst"

您现在已经创建了单独的字符串块,可以将其作为一个单元单独引用。最后一步是通过一个新的数据元素声明“数组”,其中包含 5 个字符串中每个字符串的起始地址:

string_array: dq string1, string2, string3, string4, string5

上面现在保存了 5 个地址(每个地址占用 64 位)。

将数组的地址获取到代码段中某处的寄存器中。以下是遍历数组并获取每个字符串本身的相当残酷的方法:

xor rdx, rdx            ; Starting at offset zero
lea rdi, [string_array] ; RDI now has the address of the array 
mov rsi, [rdi+rdx]      ; Get the address of string1

; Process String1
; Get next string

add rdx, 8              ; Get the next offset which is 64 bits
mov rsi, [rdi+rdx]      ; Get the address of string2

; Process String2
; etc.

如果不知道您正在对数组做什么,您的代码方法可能会有所不同。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在汇编中初始化字符串数组 的相关文章

  • 循环中的个体值[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在运行
  • 在Windows 64位上将mod_wsgi模块加载到apache中的问题

    我正在尝试安装 mod wsgi 模块操作说明 http code google com p modwsgi wiki InstallationOnWindows 我从以下位置下载了 mod wsgi so这个来源 http www lfd
  • 原始 SQL 是用汇编语言还是 C 语言编写的? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何从 mongoDB 数组中仅返回匹配的元素

    我已经找这个问题一个星期了 我不明白为什么它仍然不起作用 我将此对象放入我的 MongoDB 数据库中 produc cod prod 0001 description Ordenador price 400 current stock 3
  • 对多维数组的键进行递归排序

    我很难尝试对多维数组的键进行递归排序 我尝试过usort 但没有成功 样本数据 first level gt dir 3 gt subdir 1 gt file 2 mp4 gt object name gt file 2 mp4 file
  • 将一个 numpy 数组按另一个排序

    我有一个确定元素顺序的数组 order 3 1 4 2 然后我想对另一个更大的数组 仅包含这些元素 进行排序 a np array 4 2 1 1 4 3 1 3 这样首先出现的元素order结果第一等在直接的 Python 中 我会使用一
  • 如何在ubuntu下使用nasm(汇编)从键盘读取单个字符输入?

    我在ubuntu下使用nasm 顺便说一句 我需要从用户的键盘获取单个输入字符 就像当程序询问您 y n 时 因此当按下按键并且不按 Enter 键时 我需要读取输入的字符 我用谷歌搜索了很多 但我发现的所有内容都与这条线有关 int 21
  • 如何在 JavaScript 中检查字符串是否包含子字符串数组中的文本?

    非常简单 在 javascript 中 我需要检查字符串是否包含数组中保存的任何子字符串 没有任何内置功能可以为您执行此操作 您必须为其编写一个函数 尽管它可能只是对some数组方法 两种方法适合您 Array some method 正则
  • 多维数组中的数组值

    我有两个数组 他们看着像是 a1 array array num gt 1 name gt one array num gt 2 name gt two array num gt 3 name gt three array num gt 4
  • 数组名或函数名何时“转换”为指针? (在C中)

    1 误解 每当用 C 语言声明一个数组时 都会有一个指向该数组第一个元素的指针created 数组的名称 隐式 是吗 我不这么认为 前两行this http ee hawaii edu tep EE160 Book chap7 subsec
  • 计算排列中“反转”的数量

    设 A 为一个大小的数组N 我们称之为几个索引 i j 一个 逆 如果i lt j and A i gt A j 我需要找到一种接收大小数组的算法N 具有唯一的数字 并返回时间的倒数数O n log n 您可以使用归并排序 http en
  • 如何创建通用原始数组?

    这是来自以下问题创建泛型数组的两种方法 https stackoverflow com questions 17204788 two methods for creating generic arrays 通过给定的两种方法 Suppres
  • 用 np.savez 存储字典会产生意想不到的结果?

    我可以使用 np savez 存储字典吗 结果令人惊讶 至少对我来说 而且我找不到通过密钥取回数据的方法 In 1 a 0 A array 1 2 3 B array 4 5 6 In 2 a Out 2 0 A array 1 2 3 B
  • 将值插入php多维数组

    如何在 php 中将值插入多维数组 我需要使用 while 循环向数组添加越来越多的行 这是我的代码 size 10 p 0 while p lt size myarray array array number gt data p data
  • PHP 难以检查数组中的元素是否为整数类型

    我正在尝试检测一个或多个变量是否包含数字 我尝试了几种不同的方法 但并没有完全成功 这是我尝试过的
  • C 中每 N 个元素中出现次数最多的元素

    我有一个大小为 0 8388608 的大数组 A 其中包含 相对较小 的整数 A i 0 131072 我想找到每个 N 32 个元素中最常出现的元素 什么会更快 A 创建一个大小为131072的关联数组B 迭代32个元素 递增B A i
  • 如何理解javascript React中的这段代码

    我在网上找到了这个函数在js中的实现 这个函数递归地过滤一个对象数组 每个对象可能有属性 children 它是对象数组 并且对象也可能有孩子等等 该函数工作正常 但我有点不明白 这是我的功能 getFilteredArray array
  • 如何让 Numpy 将每一行/张量视为一个值

    许多功能 例如in1d https docs scipy org doc numpy 1 13 0 reference generated numpy in1d html and setdiff1d https docs scipy org
  • 为什么这个 IA32 汇编代码有 3 个 leaal 指令?

    我编译了这个C函数 int calc int x int y int z return x 3 y 19 z 我在 calc s 中得到了这个 我正在注释正在发生的事情 file calc c text globl calc type ca
  • 为什么我不能分配 const 但我可以控制台记录它?

    我做了一些java脚本练习 让几个链接按字母顺序排列 这是 HTML a href a is good a a href c is good a a href b is good a JavaScript const allhref doc

随机推荐

  • Angular 中有主控制器好吗?

    我不知道这是否是一个好的做法 我在路由配置中定义了一个控制器 但是因为我的HomeCtrl is in ng if他听不到的声明loginSuccess所以我做了MainCtrl它监听loginSuccess并做出适当的反应 这段代码工作得
  • 如何将 DataFrame 作为输入传递给 Spark UDF?

    我有一个数据框 我想对每一行应用一个函数 该函数依赖于其他数据帧 简化的例子 我有如下三个数据框 df sc parallelize a b 1 c d 3 toDF feat1 feat2 value df other 1 sc para
  • 蓝图初始化,我可以在第一次请求蓝图之前运行函数吗

    是否可以在第一次请求特定对象之前运行一个函数blueprint my blueprint before first request def init my blueprint print yes 目前这会产生以下错误 AttributeEr
  • Spark中如何获取map任务的ID?

    Spark中有没有办法获取map任务的ID 例如 如果每个映射任务都调用用户定义的函数 我可以从该用户定义的函数中获取该映射任务的 ID 吗 我不确定您所说的地图任务 ID 是什么意思 但您可以使用以下方式访问任务信息TaskContext
  • ios 使用 HTTP POST 上传图像和文本

    谢谢阅读 我是 iOS 新手 我正在尝试使用上传图像和文本multi part form encoding在 iOS 中 The curl等价的是这样的 curl F param1 value1 F email protected cdn
  • Next.js TypeScript 错误:您没有安装所需的软件包[重复]

    这个问题在这里已经有答案了 我目前正在他们方便的 typescript starter 的帮助下构建一个基本的 nextjs 网站 使用开发时一切都运行顺利yarn dev直到大约 20 分钟前 每当我尝试运行时 我都会随机收到一条错误消息
  • 我需要从 64 位 exe 访问 32 位 dll

    我知道我阅读了有关代理进程的所有内容 并且我能够创建代理 COM 但它要么全部在 32 位中工作 要么全部在 64 位中工作 正确的结构是什么 1 32 dll 我尝试了以上两种方法 但没有成功调用32 dll 我不太了解您所指的代理 CO
  • ASP.NET MVC 多线程

    我想在我的 asp net mvc 应用程序中实现这样的逻辑 user clicks a button gt server executes some time consuming logic in 15 threads i get dat
  • Xcode 注释自动完成(appledoc 风格)

    我发现记录界面特别痛苦 因为我需要自己输入所有内容 所以我想我一定不是唯一一个这样的人 并开始寻找一种方法来减轻我的痛苦 但没有找到多少 我的问题是 有没有快捷方式或方法可以让 Xcode 自动完成我的评论 例如 我非常希望输入 tab 它
  • 使用 401 发送消息:Asp.net Web-api

    我在 ASP NET Web API 中 在登录方法中 我根据数据库检查用户 密码 如果它们不匹配 我将返回 401 状态代码以及invalid user or password method like var content new St
  • 如果字符串或整数的 getHashCode() 不能保证唯一,为什么要使用它?

    正如我在标题中所写 如果在应用程序中使用 getHashCode 不安全 为什么要使用它 对于字符串和整数 我想用它来交叉方法并排除 Linq 模型中的方法 或创建我自己的 IEqualityCompare 类 这感觉像是一个机会 如果它不
  • NetBeans IDE maven项目无法解决依赖关系

    使用 eclipse 多年后 我正在将自己移植到 NetBeans IDE 我正在打开现有的 Maven 项目 一切似乎都正常 但是当我尝试构建该项目时 它会抛出错误 提示 无法解析项目的依赖项 尽管 JAR 文件存在于我的 m2 目录中
  • 为什么 Android WebView 拒绝用户输入?

    我正在开发一个 Android 应用程序 它使用 WebView 来显示 Facebook 的登录页面 该页面加载精美 我可以选择用户名 密码文本框 但在其中输入内容将不起作用 也就是说 它们肯定有输入焦点 它们有橙色焦点突出显示框和闪烁的
  • 在asp net mvc中简单的图像上传

    我正在构建一个简单的学校门户 我一直坚持将图像上传到我的应用程序中 即用户应该将学校图像上传到我的服务器 我的图像目录为 Content Images 所有上传图像都应该上传到这个目录 我有以下代码 input type file id S
  • 关于 inflater.inflate Android 文档的困惑

    我正在研究此链接中的片段 http developer android com guide components fragments html http developer android com guide components frag
  • Sencha Cmd 5 + Java 8 错误

    在我的 Windows 构建服务器上安装 Java 8 JDK 后 执行以下命令时遇到以下错误sencha命令 C gt sencha Error Registry key Software JavaSoft Java Runtime En
  • 如何将列表列表写入 CSV 文件 Python?

    我有一个列表 例如 a b c d e f 我想将其写入 CSV 文件 如下所示 a b c d e f 我怎么做 我尝试过使用 csv writerows 但输出文件的每个字符位于不同的单元格中 并且全部位于同一行中 从某种意义上说 第一
  • Cocos2D复杂动画[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在使用 Cocos2D 将我的游戏从 Flash 移植到 iOS 我现在有一个工作版本 我很高兴我
  • 使用ftplib进行多线程上传

    我正在尝试进行多线程上传 但出现错误 我猜想也许不可能在 ftplib 中使用多线程 这是我的代码 class myThread threading Thread def init self threadID src counter ima
  • 在汇编中初始化字符串数组

    我想创建一个数据数组 在初始化数据部分保存 5 个字符串 每个字符串正好有 4 个字符 每个字符串都有一些初始数据 例如第一个字符串的 abcd 第二个字符串的 efgh 等等 无效的 0任何字符串都不需要字符 如何用汇编语言初始化字符串数