arrays - 计算汇编中数组元素的数量

标签 arrays assembly x86

我从键盘读取一个数字并将其存储在名为 buf 的数组中。我还在 len 变量中保存了数组的长度。

我现在正在尝试计算该数组中的数字。我的代码是这样的:

   xor si, si
   xor bx, bx ; made them 0 
   start_for:
    cmp si, len
    je end_for
    mul bx, 10 ; I think here is the problem! 
    mov al, buff[si]  
    sub al, '0'
    add bx, ax
    inc si
    jmp start_for

   end_for:

问题是什么?

我在调试时注意到“mul bx, 10”行没有效果。

最佳答案

add bx, ax行中,高字节ah似乎尚未定义。我建议将 axah 设置为 0

此外,i86 可能不会将“mul”产品放在您认为的位置。即使使用 BX 操作数,该乘积也可能处于 DX:AX 中。建议在代码中交换 AX 和 BX 的使用。让 AX 为您的最终产品,bx 为您的个位数值。

关于arrays - 计算汇编中数组元素的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16696649/

相关文章:

c++ - 从可执行文件中调用函数

c - 将数组传递给外部汇编函数

c - 测试两个 __m128i 变量之间的相等性

JavaScript:自动对 Angular 排列变量多维数组

arrays - 在 Fortran 中,如何从数组中删除第 N 个元素?

assembly - PIC/汇编,在寄存器之间复制和循环 10 位

assembly - 在gas宏中自动生成xmm寄存器名称?

dart - flutter/dart 是否可以作为原生应用程序在桌面上运行?

c++ - 如何释放数组上的内存

Java:为什么我能够引用具体参数化类型的非空数组?