我有这个变量:
Message DB 10 dup(?)
我试图生成10个随机字符,然后将它们保存到变量中。
mov ecx,10
mov edi,0
GenerateString:
mov eax,60h
call RandomRange
sub eax,27
add al,'0'
mov Message[edi],al
inc edi
loop GenerateString
mov edx,offset Message
call WriteString
我找到了某个地方,我必须将数字减去27并添加ascii 0,但它无法正常工作。请注意我必须使用RandomRange。
答案 0 :(得分:1)
Irvine的RandomRange
创建0..EAX-1范围内的数字。换句话说:你得到的数字在一定数量的不同数字范围内。由于您需要a..z(97..122)范围内的ASCII字符
RandomRange
范围扩展到所需范围
价值:97。顺便说一句:如果你不用RandomRange
初始化Randomize
,你将始终得到相同的序列。
INCLUDE Irvine32.inc
.DATA
Message DB 10 dup(0)
.CODE
main PROC
call Randomize ; Initialization for `RandomRange`
mov ecx, LENGTHOF Message - 1 ; Without the terminating null!
mov edi, 0
GenerateString:
mov eax, 26 ; Range: [0..25] = 26 numbers
call RandomRange
add eax, 97 ; Move the range from [0..25] to [97..122]
mov Message[edi],al
inc edi
loop GenerateString
mov edx,offset Message
call WriteString
exit
main ENDP
END main