产生随机数

简介:

Code  Segment;定义段
   Assume CS:Code,DS:Code,ES:Code; 建立段寄存器寻址
; -----------------------------------------
; 功能:输出一个字符 
; 入口:dl=要显示的字符 
Output_Chr  proc  Near ;定义过程.

   push  ax ;压入堆栈
   mov  ah,02h  ;调用中断输出一个数
   int  21h 
   pop  ax ;弹出堆栈
   ret ;过程返回
Output_Chr  endp ;过程结束
; ----------------------------------------- 
; 功能:把AX中的二进制无符号数转换成显式的十进制ASCII码,并送显示屏显示
; 入口:AX=二进制数 
; 出口:在当前光标位置显示转换后的ASCII码数字 
Dec_ASCII  Proc  Near 
   push  dx ;压入堆栈
   push  bx ;压入堆栈
   push  di;压入堆栈
   mov  bx,10 
   lea  di,@@Temp_Save[6] ;LEA DX,string ;把偏移地址存到DX
   mov  byte ptr [di],'$' 
   dec  di ;减 1
   cld ;清方向标志位.
@@Divide:  xor  dx,dx ;异或运算
           div  bx ;无符号除法.
           or   dl,30h ;或运算
           mov  [di],dl 
           dec  di ;减 1
           test  ax,0ffffh ;测试指令
           jnz  @@Divide ;条件转移指令 
           inc  di ;加 1.
           push  di ;压入堆栈
           pop  dx ;弹出堆栈
           mov  ah,9 
           int  21h 
           pop  di ;弹出堆栈
           pop  bx ;弹出堆栈
           pop  dx;弹出堆栈
           ret ;过程返回
@@Temp_Save db   7 dup(?)
Dec_ASCII  EndP
; -----------------------------------------
Press_Key db   13,10,13,10,'Press any key to exit...$' 
Start:   push cs;压入堆栈
         pop  ds;弹出堆栈
         push es;压入堆栈
         pop  es;弹出堆
         mov  cx,6;随机产生25个1~6的随机数                           
@@L1:  xor  al,al;异或运算
       out  43h,al;I/O端口输出语法: OUT {端口号│DX},累加器 
       in  al,40h;I/O端口输入语法: IN 累加器, {端口号│DX} 
       cmp  al,6;比较.(两操作数作减法,仅修改标志位,不回送结果).
       ja  @@L1   ;大于6则继续产生随机数
       cmp al,0   ;等于0则继续产生随机数
       jz @@L1
       xor  ah,ah;异或运算,清0
       call Dec_ASCII ;显示输出这个数
       mov  dl,20h
       call Output_Chr
       loop @@L1
       lea  dx,Press_Key; LEA DX,string ;把偏移地址存到DX.
       mov  ah,9
       int  21h
       mov  ah,1
       int  21h
Exit_Proc: mov  ah,4ch ;结束程序
           int  21h
Code  ENDS
END   Start

 

 




















本文转自蓬莱仙羽51CTO博客,原文链接:http://blog.51cto.com/dingxiaowei/1366798,如需转载请自行联系原作者


相关文章
|
5月前
|
算法 编译器 C语言
生成随机数
C语言中的`rand()`函数生成0-RAND_MAX间的伪随机数,需包含`stdlib.h`。序列重复因默认种子为1,可使用`srand(unsigned int seed)`初始化,通常结合`time(NULL)`设置种子以产生不同序列。`time()`函数从1970年至今的秒数(时间戳),包含于`time.h`,用于提供变化的种子。通过`rand() % b + a`可调整生成指定范围[a, b]内的随机数。
63 3
|
C++
【C++操作手册】C++生成指定范围内随机数rand(随机数种子)
【C++操作手册】C++生成指定范围内随机数rand(随机数种子)
672 0
|
C++
如何在C++中生成随机数
在C++中,生成随机数是一个常见的技术需求。本文将介绍如何在C++中使用标准库来生成随机数。
169 0
随机数,函数
1.随机一个1-10之间的小数
75 0
Random生成伪随机数
Random生成伪随机数
69 0
|
JavaScript
[随机数详解]生成一个随机数,生成指定范围的随机数及随机数组去重
写在前面: 很早之前在简书写过几篇关于随机数的文章之前写的很乱,现在重新整理一下这些知识点。本文包含了如下这些知识点:js生成随机数,生成指定范围的随机数,获得不重复随机数组。 js生成随机数。 Math.random()——生成大于等于0.0且小于1.0的一个随机数; 通常我们生成随机数都是使用这个方法,这个方法返回值是一个伪随机选择的数,该值大于等于0.0且小于1.0,即取值范围是[0.0,1.0)的左闭右开区间,在该范围内(近似)均匀分布。
662 0
[随机数详解]生成一个随机数,生成指定范围的随机数及随机数组去重