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

📄 shizhong.asm

📁 计算机系统虚拟实验(微)汇编系统的开发是在原先网上计算机系统虚拟实验室的基础上提出的一个新课题。它是为了满足让学生更深一步的理解汇编及微汇编语言在计算机硬件系统中的工作原理的需要
💻 ASM
字号:
DATA        SEGMENT                                             ;设置数据段
       BUF1        DB 'THE SYSTERM TIME NOW      IS : $'
       BUF5        DB '        !      best      wishes to      you      !$'
       BUF6        DB '               ^^^-----^^^ $'
       BUF7        DB '                00         00        $'
       BUF8        DB '                    @            $'
       BUF9        DB '                  (vvv)$'
       BUF10       DB 'wellcome to my design      of electrical clock !$'
       BUF3        DB 'CLASS:jsj06-4$'
       BUF4        DB 'NAME:ztlong$'
       BUF2        DB 10
               DB 10 DUP(?)
               DATA ENDS
       STACK       SEGMENT STACK                           ;设置堆栈段
               DB 100 DUP(?)
               STACK ENDS
       CODE        SEGMENT                                   ;设置代码段
               ASSUME CS:CODE,DS:DATA,SS:STACK
       CURSOR      MACRO ROW,CLM                              ;设置光标位置
               MOV AH,2
               MOV BH,0
               MOV DH,ROW
               MOV DL,CLM
               INT 10H
               ENDM
        WIN        MACRO ROWL,CLML,ROWR,CLMR,COLOR             ;设置窗口,位置,颜色
               MOV AH,6
               MOV AL,0
               MOV CH,ROWL
               MOV CL,CLML
               MOV DH,ROWR
               MOV DL,CLMR
               MOV BH,COLOR
               INT 10H
               ENDM
               ASCBCD MACRO REG
               INC BX
               INC BX
               MOV REG,[BX]
               MOV CL,4
               SHL REG,CL
               INC BX
               MOV AL,[BX]
               AND AL,0FH
               OR REG,AL
               ENDM
               BCDASC MACRO REG
               INC BX
               INC BX
               MOV AL,REG
               MOV CL,4
               SHR AL,CL
               OR AL,30H
               MOV [BX],AL
               INC BX
               MOV AL,REG
               AND AL,0FH
               OR AL,30H
               MOV [BX],AL
               ENDM
       INCBCD      MACRO REG,COUNT                 ;BCD数加1
               MOV AL,REG
               INC AL
               DAA
               MOV REG,AL
               CMP AL,COUNT
               JNZ DISPY
               MOV REG,0
               ENDM
       STRDSPY MACRO ADRS
               LEA DX,ADRS
               MOV AH,9
               INT 21H
               ENDM
               CLOCK PROC FAR
       START:      PUSH DS                ;显示字符串
               MOV AX,0
               PUSH AX
               MOV AX,DATA
               MOV DS,AX
               WIN 0,0,24,79,7
               WIN 6,9,18,70,01000001B          ;设置窗口
               CURSOR 6,25                      ;设置光标
               STRDSPY BUF5                     ;显示字符串
               CURSOR 7,25                      ;设置光标
               STRDSPY BUF6
               CURSOR 8,25
               STRDSPY BUF7
               CURSOR 9,25
               STRDSPY BUF8
               CURSOR 10,25
               STRDSPY BUF9
               CURSOR 11,25
               STRDSPY BUF10
               CURSOR 6,9
               STRDSPY BUF3
               CURSOR 7,9
               STRDSPY BUF4
               CURSOR 14,32
               STRDSPY BUF1
               CURSOR 15,36
               LEA DX,BUF2
               MOV AH,0AH
               INT 21H                           ;从键盘接收当前时间
LEA      BX,      BUF2
ASCBCD CH      ;小时值ASCII到BCD ;存CH
ASCBCD DH      ;分值ASCII到BCD;存DH
ASCBCD DL       ;秒值ASCII到BCD;存DL
TIMER: CALL DELY       ;延时1秒
INCBCD DL,60H      ;(DL)+1,并判;大于等于60?
INCBCD DH,60H      ;(DH)+1,并判 ;大于等于60?
INCBCD CH,24H       ;(CH)+1,并判;大于等于60?
DISPY: LEA BX,BUF2
               BCDASC CH                         ;时值BCD转到ASCII
               BCDASC DH                         ;分值BCD转到ASCII
               BCDASC DL                         ;秒值BCD转到ASCII
               INC BX
               MOV AL,'$'
               MOV [BX],AL
               PUSH DX
               CURSOR 15,36                      ;设置光标
               STRDSPY BUF2+2                    ;显示时,分,秒值
               POP DX
               MOV AH,01H
               INT 16H
              CMP AL,1BH
                JZ      X
XOR AL,AL
               JMP TIMER
             X:MOV AH,4CH
               INT 21H
RET
DELY       PROC
          PUSH      CX
         PUSH CX
         MOV      CX,4600H
X1:
X2:      DEC       CX
JNE      X2
DEC      AX
JNE      X1
      POP      AX
POP      CX
RET
DELY      ENDP
CLOCK       ENDP
CODE      ENDS
        END       START

⌨️ 快捷键说明

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