我試圖在程序集中創建一個完整的隨機數,但每次啓動程序時,它都會以相同的順序給出相同的數字。 如果數字是12,132,4133或其他東西,它會在我每次啓動代碼時重複它們。如何在程序集中生成隨機數生成器?
我試圖製作的程序就像猜謎遊戲。
IDEAL
MODEL small
STACK 100h
DATASEG
;vars here
RNG_Seed dw ?
CODESEG
; Generates a pseudo-random 15-bit number.
; Parameters: <none>
; Clobbers: AX, DX
; Returns: AX contains the random number
proc GenerateRandNum
push bx
push cx
push si
push di
; 32-bit multiplication in 16-bit mode (DX:AX * CX:BX == SI:DI)
mov ax, [RNG_Seed]
xor dx, dx
mov cx, 041C6h
mov bx, 04E6Dh
xor di, di
push ax
mul bx
mov si, dx
xchg di, ax
mul bx
add si, ax
pop ax
mul cx
add si, ax
; Do addition
add di, 3039h
adc si, 0
; Save seed
mov [RNG_Seed], di
; Get result and mask bits
mov ax, si
and ah, 07Fh
pop di
pop si
pop cx
pop bx
ret
endp GenerateRandNum
我該怎麼做才能在每次運行中得到不同的隨機數?
您的程序是否在沒有操作系統的情況下運行? – James
@詹姆斯你在OS中意味着什麼? –
操作系統 – Ped7g