⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cxc002.asm

📁 随机产生10道互不相同的20以内的加减法(加减数及和差均<=20)待用户答完题后
💻 ASM
📖 第 1 页 / 共 2 页
字号:
      POP DX
      POP CX
   RET
RAND  ENDP
;******************************************************************************************
BINDEC PROC NEAR                                 ;二进制-->十进制 (二位数)子程序
      PUSH BX
      PUSH CX
      MOV CX,10                                  ;除以10
      CALL DECDIV
      MOV CX,1                                   ;除以1
      CALL DECDIV
      POP CX
      POP BX
   RET
BINDEC ENDP
;******************************************************************************************
DECDIV PROC NEAR                                 ;二进制-->十进制(一位数)子程序
     MOV AX,BX                                   ;BX->AX,(DX,AX)作被除数,商->AX
     MOV DX,0                                    ;DX清0,余数->DX
     DIV CX                                      ;CX存转换量级
     MOV BX,DX
     MOV DL,AL 
     ADD DL,30H                              
     MOV AH,02                                   ;调用DOS(21H)2号功能
     INT 21H
  RET
DECDIV ENDP
;******************************************************************************************
DECBIN PROC NEAR                                 ;十进制-->二进制子程序
     MOV BX,0
NEWCHAR: MOV AH,1                                ;键盘输入
     INT 21H                                     ;调用DOS(21H)1号功能
     MOV DL,AL
     SUB AL,30H                                  ;ASCⅡ码-->二进制
     JL EXIT                                     ;是否<0
     CMP AL,9
     JG EXIT                                     ;是否>9
     CBW  
     XCHG AX,BX                                  ;交换AX,BX
     MOV CX,10
     MUL CX
     XCHG AX,BX
     ADD BX,AX
     JMP NEWCHAR
EXIT: RET
DECBIN ENDP
;******************************************************************************************
CRLF PROC NEAR                                   ;回车换行子程序
    
    MOV DL,0AH                                   ;换行
    MOV AH,02
    INT 21H

    MOV DL,0DH                                   ;回车
    MOV AH,02
    INT 21H
RET
CRLF ENDP
;******************************************************************************************  
BINDEC1 PROC NEAR                                ;二进制-->十进制(三位数)子程序
       PUSH BX
       PUSH CX
       MOV CX,100
       CALL DECDIV                               ;调用二进制->十进制(一位数)子程序
       MOV CX,10
       CALL DECDIV
       MOV CX,1
       CALL DECDIV
       POP CX
       POP BX
RET
BINDEC1 ENDP
;******************************************************************************************
VALUE PROC NEAR                                  ;输出评语子程序
 CMP BX,100 
    JE JP10
    CMP BX,90  
    JE JP9
    CMP BX,80
    JE JP78
    CMP BX,70
    JE JP78
    CMP BX,60
    JE JP06
    JB JP05
JP05: JMP JP5
JP06:JMP JP6
JP10:
    CALL BINDEC1                                 ;100为三位数
    DISPCOLOR MESS7,LENMESS7,24,04H,0            ;100为优秀
    JMP RET1

JP9:
    CALL BINDEC
    DISPCOLOR MESS7,LENMESS7,24,04H,0            ;90也为优秀
    JMP RET1

JP78:
    CALL BINDEC
    DISPCOLOR MESS8,LENMESS8,24,04H,0            ;70-80为良好
    
    JMP RET1

JP6:
    CALL BINDEC
    DISPCOLOR MESS9,LENMESS9,24,04H,0            ;60为刚及格
    JMP RET1

JP5:
 CALL BINDEC
    DISPCOLOR MESS10,LENMESS10,24,04H,0          ;60以下不及格
    
RET1:
RET
VALUE ENDP
;******************************************************************************************
RETURN PROC NEAR                                 ;循环演练试题子程序
      DISPCOLOR MESS11,LENMESS11,24,02H,1
                     
      MOV AH,01
      INT 21H
      CMP AL,'Y'                                 ;输入Y或Y,再来一次
      JE START1
      CMP AL,'y'
      JE START1
      CMP AL,'N'                                 ;输入N或N,及其他字符均返回
      JE RET01
      CMP AL,'n'
      JE RET01

RET01:
      CALL CRLF
      ;MOV AH,4CH
      ;INT 21H
RET
START1:JMP START

RETURN ENDP
;******************************************************************************************
 SHOWQNUM  PROC  NEAR
     DISP1 '('                                   ;输出左括号
    
     ADD Z,1
     MOV BX,Z                                    ;输出题目序号
     CALL BINDEC  

     DISP1 ')'                                   ;输出右括号
     DISP1 20H                                   ;输出空格
RET
SHOWQNUM  ENDP
;******************************************************************************************
TIMECXC PROC NEAR                                ;调用系统时间
    DISPLAY: MOV AH,2CH
       INT 21H
       MOV BL,10
       MOV AX,0
       MOV AL,CH                                 ;将CH中存放的"时"取出
       DIV BL
       ADD AX,3030H                              ;数字转化为字符
       MOV [SYSTIME],AL                          ;存放至相应单元
       MOV [SYSTIME+1],AH
       MOV AX,0
       MOV AL,CL                                 ;将CL中存放的"分"取出
       DIV BL
       ADD AX,3030H
       MOV [SYSTIME+3],AL                        ;存放至相应单元
       MOV [SYSTIME+4],AH 
       MOV AX,0
       MOV AL,DH                                 ;将DH中存放的"秒"取出
       DIV BL
       ADD AX,3030H
       MOV [SYSTIME+6],AL                        ;存放至相应单元
       MOV [SYSTIME+7],AH
       WIN 0,1DH,24,69,24,78                     ;置显示背景及字体颜色属性
       POS_CURSE 0,24,70                         ;置光标属性
       DISP SYSTIME
       MOV BX,350
 RE:   MOV CX,33144                              ;时间延迟
REA:   LOOP REA
       DEC BX
       JNZ RE
       JE  DISPLAY
RET
TIMECXC ENDP
;******************************************************************************************
SYSDATE  PROC  NEAR                              ;显示系统日期
        MOV AH,2AH
        INT 21H
        MOV  BL,10D
        MOV  AX,0
        MOV  AL,DH                               ;将DH中存放的月份取出
        DIV  BL 
        ADD  AX,3030H
        MOV  [DATE+5],AL                         ;存放至相应单元              
        MOV  [DATE+6],AH
        MOV  AX,0
        MOV  AL,DL                               ;将DL中存放的日期取出
        DIV  BL
        ADD  AX,3030H
        MOV  [DATE+8],AL                         ;存放至相应单元
        MOV  [DATE+9],AH
        WIN 0,2EH,0,69,0,78                      ;置显示背景及字体颜色属性
        POS_CURSE 0,0,69                         ;置光标属性
        MOV  DX,OFFSET DATE
        MOV  AH,09H
	  INT  21H
    RET
SYSDATE  ENDP
;******************************************************************************************
CLINT    PROC NEAR                               ;自设时间中断子过程
         PUSH DS
         PUSH BX
         MOV BX,DATA
         MOV DS,BX

         LEA BX,COUNT
         INC WORD PTR[BX]
         CMP WORD PTR[BX],18                     ;18次中断为1秒
         JNE RETURN1
         CALL INCT                               ;调用分秒转换子程序
ADJ:
         CMP HOURS,12                            ;处理"时"
         JLE RETURN1
         SUB HOURS,12
RETURN1:
         POP BX
         POP DS
         STI
         IRET
CLINT    ENDP
;******************************************************************************************
INCT     PROC NEAR                                ;分秒转换子程序

         MOV WORD PTR[BX],0
         ADD BX,2
         INC WORD PTR[BX]
         CMP WORD PTR[BX],60                      ;60秒为1分
         JNE EXIT1
         CALL INCT
EXIT1:    RET
INCT     ENDP
;******************************************************************************************
DISPTIME PROC NEAR                               ;显示计时器时间
         
         MOV AX,MIN                              ;显示"分"
         CALL BINDECCXC1

         MOV BX,0
         MOV AL,':'
         MOV AH,0EH
         INT 10H
         MOV AX,SEC                              ;显示"秒"
         CALL BINDECCXC1

         MOV BX,0
         MOV AL,':'
         MOV AH,0EH
         INT 10H

         MOV BX,COUNT                            ;显示"毫秒"
         MOV AL,55
         MUL BL
         CALL BINDECCXC
    RET
DISPTIME    ENDP
;******************************************************************************************
BINDECCXC  PROC  NEAR                            ;为显示时间而服务的二进制->十进制(3位)
         MOV CX,100
         CALL DECDIVCXC
         MOV CX,10
         CALL DECDIVCXC
         MOV CX,1
         CALL DECDIVCXC
         RET
BINDECCXC   ENDP
;******************************************************************************************
BINDECCXC1  PROC  NEAR                            ;为显示时间而服务的二进制->十进制(2位)
         MOV CX,10
         CALL DECDIVCXC
         MOV CX,1
         CALL DECDIVCXC
         RET
BINDECCXC1   ENDP
;******************************************************************************************
DECDIVCXC   PROC NEAR                             ;为显示时间而服务的二进制->十进制(1位)

         MOV DX,0
         DIV CX
         MOV BX,0
         ADD AL,30H
         MOV AH,0EH
         INT 10H
         MOV AX,DX
     RET
DECDIVCXC   ENDP
;******************************************************************************************
CODE   ENDS
       END  START  


;☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆      
;☆             Designed by Chengxiangchuang |  Http://Austjsj021.go.nease.net           ☆
;☆  E_mail:cxc-0378@163.com | Copyright (C) 2005 Chengxiangchuang  All Rights Reserved  ☆
;☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ 
            
;信息统计:中文字数:2773;英文字符数:18667;总行数:615(我们寝室号)


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -