利用int 21h生成,存档.

1.生成0-9的一位随机数

.MODEL SMALL
.DATA
INPUT DB "Ramdom Number:",'$'
CHANGELINE DB 0AH,0DH,'$'
NUMBER WORD ?
.CODE
MAIN PROC FARMOV AX,@DATAMOV DS,AXMOV DX,OFFSET INPUTMOV AH,09HINT 21HCALL SHOW;显示随机数MOV AX,4C00HINT 21H
MAIN ENDPSHOW PROC NEARCALL GETRAMMOV AX,NUMBERCALL PRINT
RET
SHOW ENDPGETRAM PROC NEARMOV AH,2CH;CH:CL=时:分,DH:DL=秒:1/100秒INT 21HMOV AX,CXMOV CX,DXMOV DX,AX;DX=时:分MOV AX,CX;AX=CX=秒:1/100秒MOV CL,14SHR DX,CLMOV CX,10DIV CXMOV NUMBER,DX;余数
RET
GETRAM ENDPPRINT PROC NEAR; 输出十进制数PUSH AX;保存现场PUSH BXPUSH CXPUSH DXPUSHF;保存标志位XOR CX,CX;zf=1MOV BX,10
P1:;存余数XOR DX,DX;zf=1DIV BXINC CXADD DX,30HPUSH DX ;保存DX入栈,后续CMP AX,0JNE P1;不等于零则跳转MOV AH,2
P2:;输出栈内所存数字POP DXINT 21HLOOP P2;MOV DL,32;INT 21HPOPFPOP DXPOP CXPOP BXPOP AX
RET
PRINT  ENDPEND

2.生成10位数字的随机数

GETRAM子程序中,cx=10可生成1位数,cx=10000可生成4位数。想要生成10位数,先生成4位,再生成1位,即可生成5位,重复两次即可生成10位。由于是获取时间得到的伪随机数,所以中间设置延时子程序WAITM来达到获取不一样的随机数的目的。

.MODEL SMALL
.DATA
INPUT DB "Ramdom Number:",'$'
CHANGELINE DB 0AH,0DH,'$'
NUMBER WORD ?
.CODE
MAIN PROC FARMOV AX,@DATAMOV DS,AXMOV DX,OFFSET INPUTMOV AH,09HINT 21HCALL SHOW;显示随机数MOV AX,4C00HINT 21H
MAIN ENDPSHOW PROC NEARCALL GETRAM1;获得随机数MOV AX,NUMBERCALL PRINTMOV BL,1
BACK:MOV CX,33144CALL WAITM;延时DEC BLJNZ BACKCALL GETRAM2;获得随机数MOV AX,NUMBERCALL PRINTCALL GETRAM1;获得随机数MOV AX,NUMBERCALL PRINTMOV BL,1
BACK2:MOV CX,33144CALL WAITM;延时DEC BLJNZ BACK2CALL GETRAM2;获得随机数MOV AX,NUMBERCALL PRINTRET
SHOW ENDPGETRAM1 PROC NEARMOV AH,2CH;CH:CL=时:分,DH:DL=秒:1/100秒INT 21HMOV AX,CXMOV CX,DXMOV DX,AX;DX=时:分MOV AX,CX;AX=CX=秒:1/100秒MOV CL,8SHR DX,CLMOV CX,10000DIV CXMOV NUMBER,DX;余数
RET
GETRAM1 ENDPGETRAM2 PROC NEARMOV AH,2CH;CH:CL=时:分,DH:DL=秒:1/100秒INT 21HMOV AX,CXMOV CX,DXMOV DX,AX;DX=时:分MOV AX,CX;AX=CX=秒:1/100秒MOV CL,14SHR DX,CLMOV CX,10DIV CXMOV NUMBER,DX;余数
RET
GETRAM2 ENDPPRINT PROC NEAR; 输出十进制数PUSH AX;保存现场PUSH BXPUSH CXPUSH DXPUSHF;保存标志位XOR CX,CX;zf=1MOV BX,10
P1:;存余数XOR DX,DX;zf=1DIV BXINC CXADD DX,30HPUSH DX ;保存DX入栈,后续CMP AX,0JNE P1;不等于零则跳转MOV AH,2
P2:;输出栈内所存数字POP DXINT 21HLOOP P2;MOV DL,32;INT 21HPOPFPOP DXPOP CXPOP BXPOP AX
RET
PRINT  ENDPWAITM PROC NEARPUSH AX
W1:IN AL,61HAND AL,10HCMP AL,AHJE W1MOV AH,ALLOOP W1POP AX
RET
WAITM ENDPEND

3.跳动生成10位随机数,直至有键盘输入

.MODEL SMALL
.DATACHANGELINE DB 0AH,0DH,'$'
NUMBER WORD ?
.CODE
MAIN PROC FARMOV AX,@DATAMOV DS,AX
STARTL:CALL SHOW;显示随机数CALL CLEARMOV BL,4
BACKL:MOV CX,33144CALL WAITMDEC BLJNZ BACKLMOV AH,0BHINT 21HCMP AL,0FFHJE EXITJMP STARTLEXIT:MOV AX,4C00HINT 21HMAIN ENDPSHOW PROC NEARCALL GETRAM1;获得随机数MOV AX,NUMBERCALL PRINTMOV BL,1
BACK:MOV CX,33144CALL WAITM;延时DEC BLJNZ BACKCALL GETRAM2;获得随机数MOV AX,NUMBERCALL PRINTCALL GETRAM1;获得随机数MOV AX,NUMBERCALL PRINTMOV BL,1
BACK2:MOV CX,33144CALL WAITM;延时DEC BLJNZ BACK2CALL GETRAM2;获得随机数MOV AX,NUMBERCALL PRINTRET
SHOW ENDPGETRAM1 PROC NEARMOV AH,2CH;CH:CL=时:分,DH:DL=秒:1/100秒INT 21HMOV AX,CXMOV CX,DXMOV DX,AX;DX=时:分MOV AX,CX;AX=CX=秒:1/100秒MOV CL,8SHR DX,CLMOV CX,10000DIV CXMOV NUMBER,DX;余数
RET
GETRAM1 ENDPGETRAM2 PROC NEARMOV AH,2CH;CH:CL=时:分,DH:DL=秒:1/100秒INT 21HMOV AX,CXMOV CX,DXMOV DX,AX;DX=时:分MOV AX,CX;AX=CX=秒:1/100秒MOV CL,14SHR DX,CLMOV CX,10DIV CXMOV NUMBER,DX;余数
RET
GETRAM2 ENDPPRINT PROC NEAR; 输出十进制数PUSH AX;保存现场PUSH BXPUSH CXPUSH DXPUSHF;保存标志位XOR CX,CX;zf=1MOV BX,10
P1:;存余数XOR DX,DX;zf=1DIV BXINC CXADD DX,30HPUSH DX ;保存DX入栈,后续CMP AX,0JNE P1;不等于零则跳转MOV AH,2
P2:;输出栈内所存数字POP DXINT 21HLOOP P2;MOV DL,32;INT 21HPOPFPOP DXPOP CXPOP BXPOP AX
RET
PRINT  ENDPWAITM PROC NEARPUSH AX
W1:IN AL,61HAND AL,10HCMP AL,AHJE W1MOV AH,ALLOOP W1POP AX
RET
WAITM ENDPCLEAR PROC NEARMOV BL,3
LTIME:MOV CX,33144CALL WAITM;延时DEC BLJNZ LTIMEMOV AH, 06h  ; 设置AH寄存器为06h,表示“清屏”MOV AL, 0    ; 设置AL寄存器为0,表示使用黑色背景MOV BH, 07h  ; 设置BH寄存器为07h,表示使用白色前景MOV CX, 0    ; 设置CX寄存器为0,表示从屏幕左上角开始清屏MOV DX, 184Fh ; 设置DX寄存器为184Fh,表示清屏到屏幕右下角INT 10h      ; 调用BIOS的屏幕服务,清空整个屏幕MOV AH, 02h  ; 设置AH寄存器为02h,表示“设置光标位置”MOV BH, 0    ; 设置BH寄存器为0,表示使用默认显示页MOV DH, 0    ; 设置DH寄存器为0,表示光标位于第一行MOV DL, 0    ; 设置DL寄存器为0,表示光标位于第一列INT 10h      ; 调用BIOS的屏幕服务,将光标移动到左上角
RET
CLEAR ENDPEND

汇编语言 | 随机数的生成相关推荐

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

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

  2. C语言经典小游戏---猜数字游戏 (包含C语言中如何实现随机数的生成)

    题目描述:输入1-100之间的数字,进行猜数字游戏,猜大猜小有提示,直至才对为止,游戏可以重复游玩. 算法思路: 1.用void函数分别写出菜单程序与游戏进程程序. 2.用switch-case-de ...

  3. Linux真随机数的生成

    今天看<白帽子讲WEB安全>一书,看到笔者谈到Linux如何实现真随机数生成,感觉非常有用,记录下来 #include<iostream> using namespace st ...

  4. 随机数的生成 java

    随机数的生成 java 名词说明 左闭右开,指的是左边的数包含右边的数不包含 例如 生成0-10之间的随机数,左闭右开 指产生的数中包含左边的0(闭),不包含右边的10(开) 闭指包含,开指不包含 生 ...

  5. 随机数的生成【详解】

    生成随机数 rand函数可以生成随机数,随机数的范围在0~RAND_MAX(32767)之间 在使用rand函数之前,需要调用srand函数,设置随机数的生成起点 srand函数:void srand ...

  6. JAVA中随机数的生成方法

    一.第一种:使用Math类中的random方法 该方法的返回数值为[0.0,1.0)的double类型数,由于double类数的精度很高,可以在一定程度下看做随机数,借助(int)来进行类型转换就可以 ...

  7. C#产生随机数之一 生成真随机数

    Random 成员 名称 ● 说明 Equals ● 确定指定的 Object 是否等于当前的 Object.(继承自 Object.) Finalize ● 允许Object 在"垃圾回收 ...

  8. 用于生成随机数的python标准库模块是_详解Python基础random模块随机数的生成

    详解Python基础random模块随机数的生成 来源:中文源码网    浏览: 次    日期:2019年11月5日 [下载文档:  详解Python基础random模块随机数的生成.txt ] ( ...

  9. python random库生成伯努利随机数的方法_详解Python基础random模块随机数的生成

    随机数参与的应用场景大家一定不会陌生,比如密码加盐时会在原密码上关联一串随机数,蒙特卡洛算法会通过随机数采样等等.Python内置的random模块提供了生成随机数的方法,使用这些方法时需要导入ran ...

最新文章

  1. 40+场面试,100%通过率,我想分享的14条经验
  2. js 倒计时 时间戳
  3. 解决maven3.6版本不兼容idea2017问题
  4. jQuery 样式操作||操作 css 方法/设置类样式方法
  5. Java初学者不可不知道知识点
  6. Delphi中的堆,栈
  7. 关于Ext checkboxfiled 获取值为 on的解决办法
  8. Web服务器性能压力测试工具
  9. 欧瑞变频器故障码表_变频器常见故障处理.doc
  10. 智慧城市智能交通系统建议方案
  11. 视觉培训1 学习opencv
  12. Qt开发经验小技巧176-180
  13. 3天3万视频课程的笔记
  14. java背单词软件_求背英语单词的手机JAVA软件
  15. 对数字签名的攻击概述
  16. 最严谨的计算机语言p,P=NP?这世界真有捷径?
  17. Spring Boot打包
  18. 基于神经网络的蒙文手写字母识别的一些研究(综述)
  19. vue图片放大镜效果
  20. 虚拟局域网VLAN的简介

热门文章

  1. Blender猫咪的头部骨骼绑定【Auto Rig Pro自我摸索0.1版本】
  2. 学生信息管理系统总体设计说明书
  3. 整理了 10 个 Python 自动化办公案例,效率提高 100 倍!
  4. Unity实现IOC容器
  5. python实现huffman编码_Python实现huffman编码
  6. 光耦隔离电路到底该如何应用
  7. 5.spring-transactionManager事务管理的xml配置
  8. 【沃顿商学院学习笔记】领导力——Impact Investing:04 基于影响力投资效用与传统投资的研究效用及对比 Research of SRI utility and comparison
  9. 激光切管机可以运用到什么行业?
  10. String转Int的两种方式