繁体   English   中英

我在数组中添加数字时遇到问题— x86 MASM程序集

[英]I'm having problems adding numbers in an array — x86 MASM assembly

我必须创建一个从27到58的100个数字的随机范围,然后将100个位置中的所有数字加起来总计。 但是,当我这样做时,我得到一个随机数和99个32。 我到处搜索并尝试了可能的解决方案,但结果还是相同,还是随机垃圾。 有人可以提供帮助吗?

INCLUDE irvine32.inc

    .data
         a DWORD 27
         b DWORD 58
         delta DWORD ?

         source DWORD 100 DUP(?)

         prompt BYTE "The sum of the 100 counts in array is ",0

    .code
    main PROC
         Call Randomize

         mov edi, 0

         mov edi, OFFSET delta
         mov esi, OFFSET source

         mov eax, b
         sub eax, a
         inc eax
         mov delta, eax

         mov ecx, LENGTHOF source
         mov eax, 0
         L1:    

             mov eax, delta     
             call randomrange
             add eax, a
             mov source, eax
             call writedec
             mov al, " "
             call writechar


         loop L1

         call crlf
         call crlf

         mov ecx, SIZEOF source
         mov edx, OFFSET prompt
         call writestring

         l2:
             add eax,[esi]  
             add esi, TYPE delta

             call writedec
             mov al, " "
             call writechar
         loop l2

    exit

    main ENDP



    END main

我假设randomrange在EAX中保留其随机数。

在L1循环中,将A添加到EAX以获取随机值,然后每次通过L1循环将其复制到SOURCE的第一个元素。 这就是为什么第一个元素是随机的,但数组的其余部分没有被触及的原因。 (请注意,您在L2中存在相同的问题-您始终会从SOURCE的第一个元素中获取要打印的值。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM