随机使用Irvine32

时间:2013-11-30 02:01:31

标签: assembly random x86 masm irvine32

计划将数字1-53随机化而不重复。

无法让Check循环起作用,但我知道这是问题,因为没有它就能正常工作,但我需要它,所以我不会重复,而且你如何对数字进行排序购买?

Include Irvine32.inc

.data   
   a dword 1
   b dword 53
   delta dword ?
   blank byte " ",0
   array dword 52 dup(0)
   lenarray = LengthOF array

  .code
    main PROC
    call randomize
    mov eax,b
    sub eax,a
    inc eax
    mov delta,eax
    mov esi,offset array
    mov edx,offset blank
mov ecx, lenarray

xxx:
push ecx
push esi    
bk: mov eax,delta
    call randomrange
    add eax,a
    mov esi,0    
    mov ecx,lenarray

Check:
 cmp eax,[esi]
 je bk                          ;if duplicate 
 add esi,4
 loop Check

 pop esi
 pop ecx
 call writedec
 call writestring
 mov [esi],eax
 add esi,4

 loop xxx 

1 个答案:

答案 0 :(得分:0)

而不是随机选择问题,您可以将其设置为一个数字表,其中包含随机交换的数字表,以便为您提供所需的随机效果。

在表格中填写您需要的每个号码,然后使用数字生成器,在表格中选择数字对,然后进行交换。这样,您可以选择要更改的项目数,并确保不存在重复项,因为没有创建新数字。