[汇编]产生随机数

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

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

 

 

相关文章
|
JSON 人工智能 自然语言处理
Prompt进阶系列4:LangGPT(构建高性能Prompt实践指南)--结构化Prompt
Prompt进阶系列4:LangGPT(构建高性能Prompt实践指南)--结构化Prompt
|
算法 Linux C++
【Linux系统编程】Linux目录操作:opendir、readdir与closedir详解
【Linux系统编程】Linux目录操作:opendir、readdir与closedir详解
741 0
汇编(五)栈、CPU提供的栈机制、push、pop指令
汇编、栈、CPU提供的栈机制、push、pop指令、编程、汇编语言
31762 2
|
JavaScript 前端开发 定位技术
|
机器学习/深度学习 PyTorch 算法框架/工具
自定义 DataLoader 设计:满足特定需求的实现方案
【8月更文第29天】在深度学习中,数据加载和预处理是训练模型前的重要步骤。PyTorch 提供了 `DataLoader` 类来帮助用户高效地从数据集中加载数据。然而,在某些情况下,标准的 `DataLoader` 无法满足特定的需求,例如处理非结构化数据、进行复杂的预处理操作或是支持特定的数据格式等。这时就需要我们根据自己的需求来自定义 DataLoader。
290 1
|
Android开发
Android编译出现Warning: Mapping new ns to old ns的解决方案
Android编译出现Warning: Mapping new ns to old ns的解决方案
981 3
|
JSON 自然语言处理 物联网
大语言模型数据增强与模型蒸馏解决方案
本方案以通义千问2(Qwen2)大语言模型为基础,为您介绍大语言模型数据增强和蒸馏解决方案的完整开发流程。
|
数据采集 数据挖掘 数据处理
探索“数据菜谱”无限可能:首届Data-Juicer大模型数据竞赛
数据是LLaMA、Alpaca等大语言模型(LLM) 的“食物” ,你心中的大模型米其林菜单会是什么样呢?
|
Java
探秘死锁:原理、发生条件及解决方案
探秘死锁:原理、发生条件及解决方案
716 1
|
算法 Python
传统流程图和N-S(又称盒图或NS图)结构流程图
传统流程图和N-S(又称盒图或NS图)结构流程图
2285 2