产生随机数汇编Word文档下载推荐.docx
- 文档编号:18345082
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:12
- 大小:19.71KB
产生随机数汇编Word文档下载推荐.docx
《产生随机数汇编Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《产生随机数汇编Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。
EC
JB
ACC.6,Q0015
0011
20E601
CPL
C
0014
B3
Q0015:
ANL
A,R5
0015
5D
A,R6
0016
5E
0017
5F
A
0018
F4
JNZ
Q001F
0019
7004
R4,A
001B
FC
R5,A
001C
FD
R6,A
001D
FE
R7,A
001E
FF
Q001F:
001F
RRC
0020
13
0021
0022
EE
&
nb
2、一个简单的随机数发生函数:
rand8reg是得到的随机数,为了更随机,可以把它与定时器相加
如果可以把rand8reg保存在非易失性存储器中更好,但是什么时候保存需要认真考虑
==============================================================
NAME:
rand8
DESCRIPTION:
geta8bitrandomNUMBER
Function:
Thisroutinesendscalca8bitrandomNUMBER
Attention:
getarandom"
rand8reg"
beforeinitializetheprogram
Calls:
None
Input:
rand8reg
Outputs:
RegisterUsage:
A,psw
--------------------------------------------------------------
rand8:
mov
a,rand8reg
jnz
rand8b
cpl
a
rand8reg,a
rand8b:
anl
a,#10111000b
c,p
rlc
ret
3、这个可能复杂一些:
其实和周航慈《单片机程序设计基础》上的例子是一样的,使用线性移位寄存器构成随机数发生器
**********************************************************;
*
Random
*;
*Random_Buf6个字节看成48个位,可以表示280亿个数值,原理:
用反*;
*馈函数F()把这280亿个无顺序的放在一个可以旋转数码盘上,程序
*有定时器在跑,当随机发生时,让转盘转计数器的值圈数即可得到一个*;
*随机数.
*奇校验反馈函数d0=d48+d7+d5+d4+d2+d1+1,6Byte有280亿种状态*;
Random:
PUSH
ACC
RandomREG,Count
Data_Rotate:
A,Random_Buf+5
取D41-D48的当前状态
RLC
将D48提取到标志中去
A,Random_Buf
取D1-D8的当前状态
A,#5BH
提取D7,D5,D4,D2,D1的当前值
ACC.7,C
再加上D48的当前值
C,PSW.0
取得偶校验的结果
转换成奇校验,且得到反馈函数的值
开始移位操作,先处理低字节
将反馈函数的值移入,最高位移出
Random_Buf,A
保存移位后的结果
A,Random_Buf+1
再依次进行其他字节的移位操作
A
Random_Buf+1,A
A,Random_Buf+2
Random_Buf+2,A
A,Random_Buf+3
Random_Buf+3,A
A,Random_Buf+4
Random_Buf+4,A
A,Random_Buf+5
Random_Buf+5,A
完成巨型数字转盘转动一格
DJNZ
RandomREG,Data_Rotate
取当前时间随机时间转动n格
Random_Exit:
POP
RET
4、最终使用的程序
使用一个简单的随机数发生器产生种子
运行中用TL0作为干扰
TEST.asm
TEST
Define
STACK_TOP
EQU
0D0H
STACK:
48Bytes
Random_Buf
70H
VARIABLE
BUFFER(70H~75H)
RND0
第1字节
RND1
71H
第2字节
RND2
72H
第3字节
RND3
73H
第4字节
RND4
74H
第5字节
RND5
75H
第6字节
RandCount
76H
VAIRABLE
跳动格数
rand8reg
77H
简单随机数,用来产生种子和跳动格数
MAINPROGRAM:
程序入口
ORG0000H
mainprogram
LJMP
main
ORG0003H
Int0Interrupt
RETI
ORG000BH
T0Interrupt
ORG0013H
Int1Interrupt
ORG001BH
T1Interrupt
ORG0023H
Si1Interrupt
ORG002BH
T2Interrupt
ORG0033H
ORG003BH
Si2Interrupt
ORG0043H
Int2Interrupt
ORG004BH
Int3Interrupt
ORG0053H
Int4Interrupt
ORG005BH
Int5Interrupt
ORG0063H
WatchDogInterrupt
ORG0100H
main:
CLR
EA
ResetRAM
R0,#0FFH
ResetRam:
@R0,#00H
R0,ResetRam
SP,#STACK_TOP
LCALL
Init_Random
初始化随机数发生器
R0,#20H
R1,#40H
RANDLOOP:
产生随机数
A,RND0
@R0,A
把随机数暂存到RAM中
INC
R0
R1,RANDLOOP
循环取40H个随机数
NOP
main
Init_Random
initializetherandom
givetheVALUEofRandom_BufandRandCount
Random_Buf,RandCount
Random_Buf
Init_Random:
ADD
A,B
A,R0
A,R1
nbs
5-----------------------------------------------------
DATASEGMENT
CCDB'
+'
wwdb'
-'
GGDB'
='
IIDB0DH,0AH,'
$'
AADB5DUP(?
)
wwwdw0
ghhdb'
0'
0dh,0ah,'
bnmdw0
DATAENDS
STACKSEGMENT
DB200DUP(0)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVDS,AX
MOVCX,20
CALLRAND
;
产生一随机数
CALLMCAT
将随机数转换为16进制表示的ASCII码字符
MOVAX,BX
PUSHAX
CMPwww,0
WWW=0?
JEA1
执行'
CMPwww,1
www=1?
JEA2
A1:
MOVDL,CC
显示'
MOVAH,2
INT21H
产生另一随机数
addbx,0fh
MOVDL,GG
POPAX
ADDAX,BX
cmpax,0
jneyjw1
leadx,ghh
movah,9
int21h
jmpqq1
yjw1:
JMPB1
A2:
MOVDL,WW
movcx,65535
mai1:
loopmai1
CALLRAND1
CALLMCAT
MOVDL,GG
SbbAX,BX
jneyjw2
jmpqq1
yjw2:
B1:
MOVBX,AX
leaDX,II
MOVAH,9
QQ1:
MOVAH,4CH
MCATPROC
将随机数转换为16进制表示的ASCII码字符子程序
pushbx
PUSHCX
PUSHDX
CMPBX,9
JAS1
PUSHBX
movax,bx
movbl,5
divbl
cmpah,3
jaevb1
movwww,1
jmpvn1
vb1:
movwww,0
vn1:
popdx
popcx
popbx
popax
ADDBL,30H
MOVAA,BL
MOVAA+1,'
LEADX,AA
JMPs3
s1:
MOVCL,4
MOVAL,0
SHLBX,CL
CMPBH,9
JBEV1
SUBBH,9
ADDBH,40H
JMPMM1
V1:
ADDBH,30H
MM1:
MOVAA,BH
POPBX
ANDBL,0FH
jaevb2
jmpvn2
vb2:
vn2:
CMPBL,9
JBETT1
SUBBL,9
ADDBL,40H
JMPRR1
TT1:
RR1:
MOVAA+1,BL
MOVAA+2,'
s3:
POPDX
POPCX
RET
MCATENDP
RANDPROC
STI
MOVAH,0
读时钟计数器值
INT1AH
MOVAX,DX
清高6位
ANDAH,3
MOVDL,101
除101,产生0~100余数
DIVDL
MOVBL,AH
余数存BX,作随机数
POPDX
RANDENDP
RAND1PROC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 产生 随机数 汇编
![提示](https://static.bdocx.com/images/bang_tan.gif)