我正在尝试在装配中生成-27和+33之间的随机数。
有一个名为Randomize
的过程,它生成一个介于0和n之间的随机数,其中n是上限。
如何将下限移至-27而不是0?
这是代码:
title test
INCLUDE irvine32.inc
.data
msg byte "Genrating 50 number",0
.code
main PROC
mov edx,offset byte
call WriteString
call crlf
mov ecx,50
L1:
mov eax,+33
call RandomRange
call writeDec
exit
main ENDP
END main
答案 0 :(得分:1)
这个想法是使用RandomRange生成从0到(33 + 27-1)的整数,然后从生成的数字中减去27。 下面的代码是用n个随机整数填充数组并显示数组。 随机范围是[-27,33]
INCLUDE Irvine32.inc
j equ 27
k equ 33
n =10
.data
arrayd sdword n dup(?)
.code
main proc
call randomize ;activate the seed
mov ecx,n
mov esi,0
L1: ;the trick is the 3 instruction lines shown below
mov eax,k+j
call randomrange
sub eax, j
mov arrayd[esi*4],eax
inc esi
loop L1
mov ecx,n
mov esi,0
L2:
mov eax,arrayd[esi*4]
call writeInt
mov al,20h
call writechar
inc esi
loop L2
exit
main endp
end main
答案 1 :(得分:-1)