【发布时间】:2015-03-05 21:56:15
【问题描述】:
所以在我的程序的一部分是汇编语言中,我必须创建一个随机的 8 位数字,其中只有 3 个...所以我创建了 8 位随机数,但我无法弄清楚如何确定它是否有 3 个,如果没有,我可以创建另一个并再次检查。直到它只有 3 个。到目前为止,除了“汉明重量”之外,我还没有在网上找到任何有用的东西。但由于我不熟悉汇编语言,我无法弄清楚如何对其进行编码。 这是我目前根据课堂笔记所掌握的内容
rand8: mov a, rand8reg ;puts the 1 bit of memory in a
jnz rand8b ;if it is 0 it will jump to the next loop
cpl a ;takes compliment of the number
mov rand8reg, a
rand8b: anl a, #10111000b
mov c, p
mov a, rand8reg
rlc a
mov rand8reg, a
mov r0, #30h
cloop2: mov a, @r0
mov r2, #8
cloop1: rlc a
jnc nocy
inc 20h
nocy: djnz r2, cloop1
inc r0
cjne r0,#40h,cloop2
ljmp randloop
【问题讨论】:
-
你考虑过位移吗?
-
解决此问题的更好方法是只生成您想要的数字(例如,通过查找表)。或者从 0-7 生成三个数字并设置这些位。不要只是生成和测试。
-
@BethCrane 我相信这就是我试图用 cloop1 中的 rlc(旋转)做的事情