我正在使用汇编8086emu,需要一个可以生成8个数字的数字生成器。
我尝试使用@johnfound的以下代码:
RANDGEN: ; generate a rand no using the system time
RANDSTART:
MOV AH, 00h ; interrupts to get system time
INT 1AH ; CX:DX now hold number of clock ticks since midnight
mov ax, dx
xor dx, dx
mov cx, 10
div cx ; here dx contains the remainder of the division - from 0 to 9
add dl, '0' ; to ascii from '0' to '9'
mov ah, 2h ; call interrupt to display a value in DL
int 21h
RET
但是只有在生成一个数字时才有用。由于时钟每秒只跳动18.2次,因此重复调用会得到相同的数字。
我尝试创建伪随机函数,但我对汇编语言还不太熟悉,没有成功。我想知道是否有一种方法可以在emu8086中实现类似于Java的Math.random()
函数。
var << 15
可以通过ror ax, 1
/and ax, 8000h
来完成,这可能比没有移位器更快。 - Peter Cordes