• 产生随机数


    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

  • 相关阅读:
    053705
    053704
    053703
    053702
    053701
    053700
    053699
    053698
    053697
    HDU 3746 Cyclic Nacklace
  • 原文地址:https://www.cnblogs.com/java20130723/p/3211549.html
Copyright © 2020-2023  润新知