2012-04-16 61 views
0

我必須創建一個隨機範圍爲100的計數從27到58的數字,然後將總數中100個位置的所有數字相加。但是,當我這樣做時,我得到一個隨機數字和九十九個32的結果。我到處搜索並嘗試了可能的解決方案,但是我要麼得到相同的結果,要麼隨機垃圾。有人可以提供一些幫助嗎?我在添加數組中的數字時遇到問題 - x86 MASM程序集

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 

回答

0

我假設randomrange在EAX中留下它的隨機數。

在L1循環中,您將A添加到EAX以獲取您的隨機值,然後每次通過L1循環將其複製到SOURCE的第一個元素。這就是爲什麼第一個元素是隨機的,但數組的其餘部分沒有被觸及。 (請注意,您在L2中遇到同樣的問題 - 您始終可以從SOURCE的第一個元素獲得打印值。)

+0

對於L2,我打印出一串32。當我改變代碼時,它仍然是相同的結果。我不知何故只是打印出註冊的大小?因爲我想要數組的總增加結果,而不是32。 – shemeria 2012-04-16 20:24:55

相關問題