对汇编 x86 中的数组求和。关于输入的索引

2023-12-04

我在添加数组但在输入的索引上遇到一些问题。例如,用户输入 4 作为起始数组,6 作为结束数组,因此我必须循环 array[4] 到 array[6] 并将数字相加。我不确定是否可以在 ArraySum 过程中使用 .data 中的数组。我是否必须以某种方式将其推入程序?

我正在使用 Kip Irvine 的外部库来实现此目的。

我的代码在这里:

 TITLE Assignment 7

    INCLUDE Irvine32.inc


.data
str1 BYTE "The array sum is:    ",0
start BYTE "Enter the Starting Index:  ",0
endinx BYTE "Enter the Ending Index:    ",0

array DWORD 4, 6, 2, 5, 6, 7, 8, 4
sum DWORD ?
j DWORD ?
k DWORD ?

.code
main PROC
    mov esi, OFFSET array
    mov ecx, LENGTHOF array

    mov edx, OFFSET start
    call WriteString
    call ReadInt
    mov j, eax
    mov esi, j


    mov edx, OFFSET endinx
    call WriteString
    call ReadInt
    mov k, eax
    mov ecx, k

    call ArraySum
    mov sum,eax
    call WriteInt

main ENDP

;---------------------------------------------------
ArraySum PROC
;sums an array falling within j..k inclusive
;---------------------------------------------------
    push esi
    push ecx

    mov eax, 0
L1:
    add eax, array[esi]
    add esi, TYPE DWORD
    loop L1

    pop ecx
    pop esi
    ret

ArraySum ENDP

END main

您访问应该没有问题array来自ArraySum,但似乎循环的代码是错误的。这loop label指令减少了ecx注册并跳转到标签,如果ecx不为零。还array包含 DWORD,这意味着当您访问其元素时,您应该将索引乘以 4。 总的来说,循环的代码应该是这样的:

   ;; array max_index in ECX, i.e. length-1
    push ebx
    mov ebx, offset array
    xor  eax, eax                      ; sum = 0
    xor  esi, esi                      ; index = 0
L1:                                    ; do {
    add eax, dword ptr [ebx + esi * 4]  ; sum += array[idx] scaled index addressing
    inc esi
    cmp esi, ecx
    jle L1                             ; }while(i <= max_idx)

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

对汇编 x86 中的数组求和。关于输入的索引 的相关文章

  • 无法从 XML 获取数组字符串资源

    我的 XML 文件中有一个值列表 我想根据微调器选择来选择这些值 由于某种原因 使用数组字符串作为微调器可以正常工作 这些值将填充到微调器中 无论出于何种原因 我无法获取第二个数组的值来挽救我的生命 它们位于同一个文件中 没有我能找到的错误
  • 将一维数组转换为二维数组并加入 PHP [重复]

    这个问题在这里已经有答案了 我有这个一维数组 array1 Array coupon code gt GTY777R coupon description gt Credito 5 USD array2 二维数组 Array 0 gt Ar
  • 数组索引超出范围的表视图

    我正在使用数组从数据库读取数据 目前数组中有 8 个项目 我正在尝试制作一个有节标题的表格 目前我有 4 个部分 并且我已正确设置并且它有效 它也可以在第一次运行时运行 但是当我尝试向后滚动时 我发现索引超出了范围 我正在使用 myarra
  • 如何在汇编中使用 ReadString?

    mov edx offset Prompt1 call WriteString mov ecx 32 mov edx offset String1 call ReadString 现在 我该如何访问String1 如何将其移入寄存器以便对其
  • 如何从对象数组中删除所有重复项?

    This is a large array of objects e g let totalArray id rec01dTDP9T4ZtHL4 fields user id 170180717 user name abcdefg even
  • 如何初始化一个大多数值相同但某些值不同的静态数组?

    我想使用静态或常量数组 但使用除 T N 句法 我需要定义特定元素 但所有其他值都可以默认为 0 或其他值 在 C 中 您可以执行以下操作 byte ARRAY 256 0x1F 1 lt lt 4 Or even simply just
  • for 循环内的 Promise 的 setTimeout

    我想做的是这样的 循环数据集合 对于每个数据元素调用 API 等待 Promise 失败或解析 暂停 30 秒 然后对下一个数据元素再次执行此操作 直到没有任何内容可以迭代集合 最后显示 完成 消息 到目前为止 这是我编写的代码 在其他问题
  • 删除 NSMutablearray 中的最后一个对象[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 为什么要删
  • 如何获取数组中最后 5 个元素(不包括第一个元素)?

    在 JavaScript 数组中 如何获取最后 5 个元素 排除第一个元素 1 55 77 88 would return 55 77 88 添加其他示例 1 55 77 88 99 22 33 44 would return 88 99
  • 编译器消息“警告:格式‘%s’需要类型‘char *’,但参数 2 具有类型‘char (*)’”

    我正在尝试运行一个简单的 C 程序 但收到此错误 警告 格式 s 需要类型 char 但参数 2 的类型为 char 20 我在跑步Mac OS X v10 8 https en wikipedia org wiki OS X Mounta
  • 根据数组计数填充复选框

    我是新来的php我已经使用了它的开发php array 我想填充checkboxes根据数组计数 为了做到这一点 我尝试了以下方式 它对我不起作用 有什么方法可以做到这一点 在我的例子中 数组计数 5 所以我相应地需要 5 个复选框
  • 打印 Java 数组的最简单方法是什么?

    在 Java 中 数组不会覆盖toString 所以如果你尝试直接打印一个 你会得到className 的十六进制hashCode https en wikipedia org wiki Java hashCode 数组的定义为Object
  • 为什么 Eclipse 有时会对 JavaScript 中的数组数组发出警告?

    在 Eclipse 中 以下 JavaScript 行 var a1 1 2 3 4 生成警告 Type mismatch cannot convert from Number to any Type mismatch cannot con
  • Java中整数数组的排列算法

    我有一个工作示例来生成字符串中的所有字符排列 如下所示 static ArrayList
  • 在 Postgres 中的数组字段上应用聚合函数?

    是否可以对整数 字段 或其他数字数组 中的所有值应用聚合 如 avg stddev CREATE TABLE widget measurement integer insert into widget measurement values
  • mfence 和 asm 易失性 ("" : : : "内存") 的区别

    据我了解 mfence是硬件内存屏障 而asm volatile memory 是编译器障碍 但是 可以asm volatile memory 用来代替 mfence 我感到困惑的原因是这个链接 http gcc gnu org ml gc
  • 按字典顺序对整数数组进行排序 C++

    我想按字典顺序对一个大整数数组 例如 100 万个元素 进行排序 Example input 100 21 22 99 1 927 sorted 1 100 21 22 927 99 我用最简单的方法做到了 将所有数字转换为字符串 非常昂贵
  • 将代码保存在 L1 缓存中

    我一直在阅读维基百科关于 K 编程语言的文章 http en wikipedia org wiki K programming language Performance characteristics这就是我所看到的 解释器的小尺寸和语言的
  • 与 array_intersect 相反?

    是否有一个内置函数可以获取数组 1 中不存在于数组 2 中的所有成员 我知道如何以编程方式执行此操作 只是想知道是否有一个内置函数可以执行相同的操作 所以请不要提供代码示例 这听起来像是一份工作array diff http www php
  • 将一维数组转换为二维数组[重复]

    这个问题在这里已经有答案了 我正在开发一个程序 我必须将文本文件中的值读入一维数组 我已经成功获取该一维数组中的数字 m1 1 2 3 4 5 6 7 8 9 但我希望数组是 m1 1 2 3 4 5 6 7 8 9 您可以使用此代码 co

随机推荐

  • 如何使用关键字作为属性名称?

    到目前为止 我已经非常成功地将匿名类型序列化为 json 了 dynamic jsObject jsObject new ExpandoObject jsObject dataUrl Controller Url Action loadal
  • Swift - 将字典 [String:Any] 编码和解码到 plist 中

    我试图将字典存储在我的 Marker 类中 但它抛出一个错误 指出它不可编码或可解码 我可以看到错误是由 String Any 引起的 但我该如何解决它 var buttonActions String String String Any
  • 如何在 CakePHP 中正确重写模型的构造函数

    我在 CakePHP 2 0 中测试模型时遇到了麻烦 问题似乎出在模型的构造函数上 public function construct parent construct this gt pagi cuantos 2 即使我删除了它的所有内容
  • R代码生成具有特定颜色的美国各州地图

    我正在尝试生成美国地图 其中每个州都可以具有以下颜色之一 EScolors lt c 7aad42 4a77bb f7931e d3dfbd 787878 我创建了一个数据框 states info 以将每个状态与其颜色相匹配 head s
  • 具有键“GenderID”的 ViewData 项的类型为“System.Int32”,但必须为“IEnumerable”类型

    当我尝试提交 发布数据时发生错误 有人可以帮助我尝试每一篇文章 但他们没有帮助我 我是 mvc 新手 任何帮助都会被授予 这是我的代码 public ActionResult Create UserProfileCreateViewMode
  • 将我的文本居中,但保持左对齐?

    我试图使页面上的链接左对齐但在页面上居中 我该怎么做呢 我尝试了很多方法 并在谷歌上搜索了更多我编码时间不长的方法 这正在成为一场真正的斗争 My site 这是我的 HTML 代码 img src http media moddb com
  • x86 中的原子测试和设置:内联 asm 或编译器生成的锁 bts?

    以下代码在为 xeon phi 编译时会抛出异常Error cmovc is not supported on k1om 但它确实可以为常规至强处理器正确编译 include
  • 双精度数中的小数位数[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 如何确定数字中的整数位数和小数点后的位数234 12413在爪哇 双精度数并不总是精确的
  • 从 NSString 解析 XML 以获取值

    这个问题是关于在 xcode 中操作 NSString 的 我有一个从网上获得的 XML 文本字符串 如下所示
  • 使用给定的时间增量对时间序列进行重采样

    我正在使用 Pandas 来构建和处理数据 这是我的数据框 我想要对时间序列数据进行重新采样 并且对于每个 ID 此处命名为 3 从开始到结束 beginning time end time 的所有比特率分数 例如 对于第一行 我希望拥有从
  • 将值减去多行

    好吧 我陷入了需要将值分配到多行的地步 由于我不知道具体的术语 我将其以下面的示例的形式以便更好地理解 假设 x 的值为 20 我需要将其按降序分配 减去到行中 TABLE ID Value1 1 6 2 5 3 4 4 3 5 9 结果应
  • 将逗号后的数字四舍五入为 2 位数字

    我不知道该怎么做 我正在添加逗号数字 结果当然总是一个逗号后数字太多的数字 任何人 EDIT 2 Use the Number对象的toFixed像这样的方法 var num Number 0 005 The Number only vis
  • ggplot 中的数据重新排序

    新的并坚持使用 ggplot 我有以下数据 tribe rho preference watermass 1 Luna2 1 000 hypolimnic 2 OP10I A1 1 000 epilimnic 3 B0 FO56C 0 98
  • 从 @selector 中关闭视图控制器而不创建单独的方法

    我试图通过直接从按钮执行它来关闭呈现的视图控制器 而不是为其创建一个单独的方法 但我不知道如何让它工作 或者是否可能 如有任何帮助 我们将不胜感激 我正在尝试的代码 dismissButton addTarget self action s
  • 从 SQL Server 触发器发送消息

    当 SQL Server 2005 中发生某些事情时 我需要向正在运行的应用程序 Windows 服务 发出信号 是否可以将消息从触发器发送到同一系统上的外部应用程序 您可以使用SQL 服务代理排队做你想做的事 触发器可以创建对话并在队列上
  • 如何使 DrawerLayout 显示在工具栏下方?

    如何使抽屉布局位于操作栏 工具栏下方 我正在使用 v7 21 应用程序兼容库和新的工具栏视图 我看到的例子看起来像
  • 在 pyinstaller 生成的可执行文件中使用 pyunpack 并结合 try except

    我对 pyunpack 有一个奇怪的行为 pyunpack 是一个在可执行文件内用于解包的包 我想做以下事情 我有一个 7z 类型的文件 其结尾不是 7z 而是 sent 首先 我尝试直接解压缩它 这会导致捕获预期的错误 在这个错误捕获中
  • 需要帮助优化 mysql 的纬度/经度地理搜索

    我有一个 mysql 5 0 22 myisam 表 其中大约有 300k 条记录 我想在 5 英里半径内进行纬度 经度距离搜索 我有一个涵盖纬度 经度字段的索引 并且当我仅选择纬度 经度时速度很快 毫秒响应 但是 当我选择表中的其他字段时
  • 使用原始类中的自定义 Android AnalogClock 设置时间

    我想使用互联网上提供的 Android 开源项目的 AnalogClock 源代码制作一个自定义 AnalogClock 类 我想让时钟设置我想要的时间 而不是当前时间 我没有找到关于如何执行此操作的明确示例 因此也许这篇文章会很有用 将源
  • 对汇编 x86 中的数组求和。关于输入的索引

    我在添加数组但在输入的索引上遇到一些问题 例如 用户输入 4 作为起始数组 6 作为结束数组 因此我必须循环 array 4 到 array 6 并将数字相加 我不确定是否可以在 ArraySum 过程中使用 data 中的数组 我是否必须