案例2产生随机数并运算的程序

来源:互联网 发布:免费换ip软件 编辑:程序博客网 时间:2024/04/30 06:38

此程序可显示任意两个16进制数的加法或减法表达式及其运算结果。在减法运算中,如果被减数小于减数,显示“Divide Overflow”的提示信息。


代码块:

DATA SEGMENT      CC DB '+'     ww db '-'     GG DB '='     II DB 0DH,0AH,'$'     AA DB 5 DUP(?)     www dw 0     ghh db '0',0dh,0ah,'$'     bnm dw 0DATA ENDSSTACK SEGMENT    DB  200  DUP(0)STACK ENDSCODE SEGMENT    ASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATA       MOV DS,AX       MOV CX,20       CALL RAND            ;产生一随机数       CALL MCAT            ;将随机数转换为16进制表示的ASCII码字符       MOV  AX,BX       PUSH AX       CMP  www,0           ;WWW=0?       JE  A1               ;执行'+'       CMP  www,1           ;www=1?       JE  A2               ;执行'-'   A1:  MOV DL,CC            ;显示'+'       MOV AH,2       INT 21H       CALL RAND            ;产生另一随机数       add bx,0fh       CALL MCAT            ;将随机数转换为16进制表示的ASCII码字符       MOV DL,GG            ;显示'='       MOV AH,2       INT 21H       POP AX       ADD AX,BX       cmp ax,0       jne  yjw1       lea dx,ghh       mov ah,9       int 21h       jmp qq1 yjw1: JMP B1   A2: MOV DL,WW             ;显示'-'       MOV AH,2       INT 21H       mov cx,65535 mai1: loop mai1       CALL RAND1        CALL MCAT       MOV DL,GG       MOV AH,2       INT 21H       POP AX       Sbb AX,BX       cmp ax,0       jne  yjw2       lea dx,ghh       mov ah,9       int 21h       jmp qq1     yjw2: JMP B1   B1: MOV  BX,AX       CALL MCAT       lea  DX,II       MOV  AH,9       INT  21H  QQ1: MOV  AH,4CH       INT  21HMCAT PROC                 ;将随机数转换为16进制表示的ASCII码字符子程序     PUSH AX     push bx     PUSH CX     PUSH DX     CMP BX,9     JA S1     PUSH AX     PUSH BX     PUSH CX     PUSH DX     mov ax,bx     mov bl,5     div bl     cmp ah,3     jae vb1     mov www,1     jmp vn1 vb1:mov www,0 vn1:pop dx     pop cx     pop bx     pop ax     ADD BL,30H     MOV AA,BL     MOV AA+1,'$'     LEA DX,AA     MOV AH,9     INT 21H     JMP s3  s1:MOV CL,4     MOV AL,0     PUSH BX     SHL BX,CL     CMP BH,9     JBE V1     SUB BH,9     ADD BH,40H     JMP MM1  V1:ADD BH,30H MM1:MOV AA,BH     POP BX     AND BL,0FH     PUSH AX     PUSH BX     PUSH CX     PUSH DX     mov ax,bx     mov bl,5     div bl     cmp ah,3     jae vb2     mov www,1     jmp vn2 vb2:mov www,0 vn2:pop dx     pop cx     pop bx     pop ax     CMP BL,9     JBE TT1     SUB BL,9     ADD BL,40H     JMP RR1TT1: ADD BL,30HRR1: MOV AA+1,BL     MOV AA+2,'$'     LEA DX,AA     MOV AH,9     INT 21H  s3:POP DX     POP CX     POP BX     POP AX     RETMCAT  ENDPRAND  PROC      PUSH CX      PUSH DX      PUSH AX      STI      MOV AH,0             ;读时钟计数器值      INT 1AH      MOV AX,DX            ;清高6位      AND AH,3      MOV DL,101           ;除101,产生0~100余数      DIV DL      MOV BL,AH            ;余数存BX,作随机数      POP AX      POP DX      POP CX      RETRAND  ENDPRAND1 PROC      PUSH CX      PUSH DX      PUSH AX      STI      MOV AH,0      INT 1AH      MOV ax,cx      AND AH,3      MOV DL,101      DIV DL      MOV BL,AH      POP AX      POP DX      POP CX      RETRAND1  ENDPCODE   ENDS       END  START  
1 0
原创粉丝点击