DOS上动态显示日期和时间

;我们这边的程序是要显示当前的COMS的时间,动态的……
DATAS SEGMENT
    ;此处输入数据段代码 
    DB 0,0,'/',0,0,'/',0,0,' ',0,0,':',0,0,':',0,0
    DB 9,8,7,4,2,0	;这边是COMS RAM中存放时间的位置指针 
    DB 25 DUP (0) 	;这边弄一个空间专门存放我们读取的时间信息
DATAS ENDS

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

这边有点过于草率,这边的代码是根据王爽的《汇编语言》的实验14进行扩展的,只因为多加了一句 JMP SHORT START,但是这样的方法当然是看起来不好的,望可以给些建议。

CODE SEGMENT ASSUME CS:CODE START: JMP NEXT BUFF DW 0 BUFF1 DW 2 DUP(0) MAIN: PUSHF CALL DWORD PTR CS:BUFF1 PUSH AX PUSH BX PUSH CX PUSH DX XOR BH,BH MOV AH,3 INT 10H ;读光标位置 MOV CS:BUFF,DX MOV AH,2 XOR BH,BH MOV DX,47H INT 10H ;置光标位置 MOV AH,2      INT 1AH ;读系统时间 PUSH DX PUSH CX POP BX PUSH BX CALL SHOW1 CALL SHOW2 POP BX XCHG BH,BL CALL SHOW1 CALL SHOW2 POP BX CALL SHOW1 MOV DX,CS:BUFF MOV AH,2 XOR BH,BH INT 10H ;置光标位置 POP DX POP CX POP BX POP AX IRET ;中断返回 ;以下为将系统时间转化为对应的ASCLL码显示的程序 SHOW1 PROC NEAR PUSH BX MOV CL,4 MOV AL,BH SHR AL,CL ADD AL,30H ;转换为ASCLL码 CALL SHOW CALL XJB POP BX MOV AL,BH AND AL,0FH ADD AL,30H CALL SHOW CALL XJB RET SHOW1 ENDP ;以下为显示”:“符号的程序 SHOW2 PROC NEAR MOV AL,‘:‘ CALL SHOW CALL XJB RET SHOW2 ENDP ;以下是对光标的处理的程序 XJB PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX MOV AH,3 MOV BH,0 INT 10H ; 读光标位置 INC DL MOV AH,2 INT 10H ; 置光标位置 POP DX POP CX POP BX POP AX RET XJB ENDP ;以下是将AL里的内容显示的程序 SHOW PROC NEAR PUSH AX PUSH BX PUSH CX MOV AH,09H MOV BX,2FH MOV CX,1 INT 10H ;在光标位置显示字及其属性 POP CX POP BX POP AX RET SHOW ENDP;以下为取中断,保存中断,设置新的这段类型的程序 NEXT: PUSH CS POP DS MOV AX,351CH ;取中断向量 INT 21H MOV BUFF1,BX ;保存偏移地址 MOV BX,ES ;保存段地址 MOV BUFF1+2,BX MOV DX,OFFSET MAIN MOV AL,1CH ; 中断类型放日AL MOV AH,25H ; 设置中断向量的功能调用 INT 21H ;改变中断向量 LEA DX,NEXT SUB DX,OFFSET START MOV CL,4 SHR DX,CL ADD DX,11H MOV AX,3100H       INT 21H CODE ENDS END START
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值