汇编语言|时钟程序

要求编写一个时钟程序,时钟信号放在屏幕右上角并在程序结束后常驻内存

DATAS SEGMENT
    ;此处输入数据段代码  
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODE   SEGMENT              
    ASSUME   CS: CODE, DS: CODE
    ORG  0100H
START:
    JMP  MAIN
 
NEW_08H_SERVICE  PROC       
    PUSH DS                 
    PUSH AX
    PUSH BX
    PUSH CX
    PUSH DX
 
    MOV  AX, CODE           
    MOV  DS, AX
 
    MOV  AH, 2
    INT  1AH               
    CMP  DH, SEC
    JZ   E_NEW_08
    MOV  HOUR, CH
    MOV  MIN,  CL
    MOV  SEC,  DH
 
    MOV  AH, 3             
    MOV  BL, 0
    INT  10H
    PUSH DX
 
    MOV  CURSOR, 0047H      
    CALL SET_CURSOR
    MOV  AL, HOUR
    CALL W_2_CHAR
    MOV  AL, ':' - 30H
    CALL W_1_CHAR
    MOV  AL, MIN
    CALL W_2_CHAR
    MOV  AL, ':' - 30H
    CALL W_1_CHAR
    MOV  AL, SEC
    CALL W_2_CHAR
 
    MOV  AH, 2              
    POP  DX
    INT  10H
 
E_NEW_08:
    POP  DX                 
    POP  CX
    POP  BX
    POP  AX
    POP  DS
    JMP  CS: OLD08          
 
    CURSOR   DW  ?
    SEC      DB  ?
    MIN      DB  ?
    HOUR     DB  ?
    OLD08    DD  ?           
NEW_08H_SERVICE  ENDP
 
SET_CURSOR  PROC            
    MOV  DX, CURSOR
    INC  DX
    MOV  CURSOR, DX
    MOV  AH, 2
    INT  10H
    RET
SET_CURSOR  ENDP
 
W_2_CHAR  PROC
    PUSH AX
    MOV  CL, 4
    SHR  AL, CL
    AND  AL, 0FH
    CALL W_1_CHAR
    POP  AX
    AND  AL, 0FH
    CALL W_1_CHAR
    RET
W_2_CHAR  ENDP
 
W_1_CHAR  PROC              
    MOV  AH, 9
    ADD  AL, 30H            
    MOV  BL, 1EH            
    MOV  BL, 2FH            
    MOV  CX, 1             
    INT  10H
    CALL SET_CURSOR         
    RET
W_1_CHAR  ENDP
 
MAIN:
    MOV  AX, CODE
    MOV  DS, AX
    CLI                     
    MOV  AX, 3508H          
    INT  21H
    MOV  WORD PTR OLD08, BX
    MOV  WORD PTR OLD08 + 2, ES
 
    MOV  AX, 2508H         
    MOV  DX, OFFSET NEW_08H_SERVICE
    INT  21H
    STI                    
    MOV  DX, OFFSET MAIN   
    INT  27H
                   
CODE  ENDS
    END  START
 

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SpongeBob460

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值