我有一个变量:
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。
发布于 2016-01-02 19:00:40
欧文的RandomRange在0..EAX-1范围内创建数字.换句话说:在一定数量的不同数字范围内得到一个数字。由于您希望在范围a..z (97.122)内有一个ASCII字符,所以您有
RandomRange的范围移动到所需的范围。顺便说一句:如果不使用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 mainhttps://stackoverflow.com/questions/34568905
复制相似问题