c51汇编语言随机数函数,汇编语言随机数发生器

博主正在学习汇编语言,并尝试用线性一致性方法创建一个随机数生成器。代码中设定了上限、下限和所需随机数的数量。他们提出了一个公式并尝试将其转化为汇编代码,但遇到了如何在循环结束时打印随机数的问题。评论中提供了关于在不同平台上打印数字的建议,并指出了代码中可能存在的问题,如寄存器大小不匹配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我最近开始学习汇编语言。对于我正在研究的项目,我必须使用线性一致性来生成随机数生成器。我想拿三个数字。上限,下限和我想要的随机数的数量。如式为获得一个随机数,我想出了....汇编语言随机数发生器

randomNumber =(种子%(上下)+低级)

我然后试图把这种成代码。 我想出了这个

.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

我很好奇,我怎么会在每个循环周期结束时打印出随机数。如果上述代码有意义。

在此先感谢!

2012-04-11

Whiplash

+0

欢迎来到计算器! –

2012-04-11 07:16:00

+0

如果这是在Windows上,那么一些建议在这里:http://stackoverflow.com/questions/1922134/printing-out-a-number-in-assembly-language –

2012-04-11 07:35:52

+2

打印是高度平台特定的。你在哪里试图组装和执行这个? MS-DOS?视窗? Linux呢?此外,该指令不会飞行:“mov ax,2914017” - ax是一个16位寄存器,其最大值为65535.然而,eax为32位。 –

2012-04-11 16:57:24

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值