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

📄 daytime.asm

📁 有许多课程设计源程序
💻 ASM
字号:
STACK SEGMENT STACK
      DW 200 DUP (?)
STACK ENDS
DATA SEGMENT
      SPACE DB 1000 DUP (' ')
      PATTERN DB 6 DUP (' '),0C9H,26 DUP (0CDH),0BBH,6 DUP (' ')
              DB 6 DUP (' '),0BAH,26 DUP (20H),0BAH,6 DUP (' ')
              DB 6 DUP (' '),0C8H,26 DUP (0CDH),0BCH,6 DUP (' ')
      DBUFFER DB 8 DUP (':'),12 DUP (' ')
      DBUFFER1 DB 20 DUP (' ')
      STR  DB 0DH,0AH, 'PLEASE INPUT  TIME(T) OR QUIT(Q): $'
       PUT1 DB 0DH,0AH,'CURRENT DATE  IS:'
            DB 0DH,0AH,'$'
DATA ENDS
CODE SEGMENT
      ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
START: MOV AX,0001H          ;设置显示方式为40*25彩色文本方式            
       INT 10H
       MOV AX,DATA
       MOV DS,AX
       MOV ES,AX
       MOV BP,OFFSET SPACE       
       MOV DX,0B00H
       MOV CX,1000
       MOV BX,0040H
       MOV AX,1300H
       INT 10H
       MOV BP,OFFSET PATTERN ;显示矩形条     
       MOV DX,0B00H
       MOV CX,120
       MOV BX,004EH
       MOV AX,1301H
       INT 10H
       LEA DX,STR            ;显示提示信息
       MOV AH,9
       INT 21H
       MOV AH,1              ;从键盘输入单个字符
       INT 21H
       CMP AL,54H            ;AL='T'?
       JNE B                
       CALL TIME             ;显示系统时间             
B:     CMP AL,51H            ;AL='Q'?            
       JNE START
       MOV AH,4CH            ;返回dos状态
       INT 21H



TIME   PROC NEAR        ;显示时间子程序
DISPLAY1:CALL PUT
       MOV SI,0
       MOV BX,100
       DIV BL
       MOV AH,2CH       ;取时间
       INT 21H
       MOV AL,CH
       CALL BCDASC      ;将时间数值转换成ASCII码字符
       
       INC SI
       MOV AL,CL
       CALL BCDASC
       INC SI
       MOV AL,DH
       CALL BCDASC
       MOV BP,OFFSET DBUFFER
       MOV DX,0C0DH
       MOV CX,20
       MOV BX,004EH
       MOV AX,1301H
       INT 10H
       MOV AH,02H
       MOV DX,0300H
       MOV BH,0
       INT 10H
       MOV BX,0018H
RE:    MOV CX,0FFFFH
REA:   LOOP REA
       DEC BX
       JNZ RE
       MOV AH,01H          
       INT 16H
       JE  DISPLAY1
       mov ah,01h
       int  21h
       cmp al,'T'
       je    DISPLAY2
       jmp  start
       MOV AX,4C00H
       INT 21H
       RET
TIME  ENDP

TIME1   PROC NEAR        ;显示时间子程序
DISPLAY2:CALL PUT
       MOV SI,0
       MOV BX,100
       DIV BL
       MOV AH,2CH       ;取时间
       INT 21H
       MOV AL,CH
       SUB AL,0CH
       CALL BCDASC      ;将时间数值转换成ASCII码字符
       
       INC SI
       MOV AL,CL
       CALL BCDASC
       INC SI
       MOV AL,DH
       CALL BCDASC
       MOV BP,OFFSET DBUFFER
       MOV DX,0C0DH
       MOV CX,20
       MOV BX,004EH
       MOV AX,1301H
       INT 10H
       MOV AH,02H
       MOV DX,0300H
       MOV BH,0
       INT 10H
       MOV BX,0018H
RE1:    MOV CX,0FFFFH
REA1:   LOOP REA1
       DEC BX
       JNZ RE1
       MOV AH,01H
       INT 16H
       JE  DISPLAY2
            mov ah,01h
       int  21h
       cmp al,'T'
       je    F3
       JMP START
       MOV AX,4C00H
       INT 21H
F3:    JMP  DISPLAY1

       
       RET
TIME1  ENDP

BCDASC PROC NEAR                ;时间数值转换成ASCII码字符子程序
       PUSH BX
       CBW
       MOV BL,10
       DIV BL
       ADD AL,'0'
       MOV DBUFFER[SI],AL
       INC SI
       ADD AH,'0'
       MOV DBUFFER[SI],AH
       INC SI
       POP BX
       RET
BCDASC ENDP

PUT PROC


       MOV AH,02H
       MOV DH,07H
       INT   10H
       mov aH,09h
       lea  dx,PUT1
       int   21h
       RET
PUT   ENDP

CODE   ENDS
       END START


⌨️ 快捷键说明

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