Assembly 用Irvine32随机化
程序将数字1-53随机分组,不重复 无法使检查循环正常工作,但我知道这是个问题,因为它在没有检查循环的情况下工作,但我需要检查循环,这样我就不会重复检查循环,而且如何按顺序对数字进行排序Assembly 用Irvine32随机化,assembly,random,x86,masm,irvine32,Assembly,Random,X86,Masm,Irvine32,程序将数字1-53随机分组,不重复 无法使检查循环正常工作,但我知道这是个问题,因为它在没有检查循环的情况下工作,但我需要检查循环,这样我就不会重复检查循环,而且如何按顺序对数字进行排序 Include Irvine32.inc .data a dword 1 b dword 53 delta dword ? blank byte " ",0 array dword 52 dup(0) lenarray = LengthOF array .cod
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
与随机选择问题不同,您可以将其设置为一个数字表,该数字表可以随机交换,以提供所需的洗牌效果 用您需要的每个数字填充表格,然后使用数字生成器,选择表格中的数字对,并交换它们。通过这种方式,您可以选择要更改的项目数量,并确保在不创建新编号时不存在重复项。您正在执行mov esi,0,然后是mov eax,[esi]。我猜那不是你想要的。