我最近开始学习汇编语言。在一个项目中,我必须使用线性同余来制作一个随机数生成器。我应该输入三个数字:上限、下限和我想要的随机数字的数量。至于获取随机数字的公式,我想出了...
随机数=(种子%(上限-下限)+下限)
然后我尝试将其转化为代码。 我想出了这个:
.data
upper BYTE 100 ;setting upper limit 100
lower BYTE 0 ;setting lower limit 0
number BYTE 5 ;number of random numbers
.code
call main
exit
main proc
cls
mov bx,upper ;moving upper bound into bx
mov dx,lower ;moving lower bound into dx
mov ax,2914017 ;taking a random number for this trial
mov ecx,number ;setting the loop counter
L1:
sub bx,dx ;(upper-lower)
div bx
add ah,dx ;(randomNumber mod (bx) + lower
main endp
我很好奇如何在每次循环周期结束时打印出随机数。以上代码是否有任何意义。
提前感谢!
div bx
将dx:ax
除以bx
,但您没有将dx
清零。将lower
加载到esi
或edi
中。(并使用movzx
进行操作,因为它们的内存位置是字节。您正在使用字加载将它们加载,因此mov dx,[lower]
将0x500
放入dx
中。) - Peter Cordes