这段时钟程序我根本不理解,求大家帮忙注释一下

qq_30719955 2016-04-26 03:09:12
另外运行时并不能按照准确的1秒计时,应该如何修改。
程序我只能看懂 判断 时分秒 是否超过24 60 60 那一段,其余部分很难理解,尤其是对INT 21H 这个中断起的作用不能理解
DATA SEGMENT
BUFFER DB 11
DB ?
DB 10 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
OUTCLK:MOV AX,DATA
MOV DS,AX
MOV DL,':'
MOV AH,2
INT 21H
LEA DX,BUFFER
MOV AH,0AH
INT 21H
LEA BX,BUFFER+2
MOV SI,0
AD: MOV AL,[BX]
AND AL,0FH
MOV [BX],AL
INC BX
MOV AL,[BX]
AND AL,0FH
MOV [BX],AL
INC BX
INC BX
INC SI
CMP SI,02H
JB AD
MOV AL,[BX]
AND AL,0FH
MOV [BX],AL
INC BX
MOV AL,[BX]
AND AL,0FH
MOV [BX],AL
LEA BX,BUFFER+2
CALL TOBCD
MOV CH,AL
ADD BX,3
CALL TOBCD
MOV DH,AL
ADD BX,3
CALL TOBCD
MOV DL,AL
AGAIN: CALL DIS
MOV AL,DL
ADD AL,1
DAA
MOV DL,AL
CMP AL,60H
JNE DISPY
MOV DL,0
MOV AL,DH
ADD AL,1
DAA
MOV DH,AL
CMP AL,60H
JNE DISPY
MOV DH,0
MOV AL,CH
ADD AL,1
DAA
MOV CH,AL
CMP AL,24H
JNE DISPY
MOV CH,0
DISPY: LEA BX,BUFFER
MOV AL,0DH
MOV [BX],AL
INC BX
MOV AL,0AH
MOV [BX],AL
INC BX
MOV AL,CH
CALL TRAN
INC BX
MOV AL,':'
MOV [BX],AL
INC BX
MOV AL,DH
CALL TRAN
INC BX
MOV AL,':'
MOV [BX],AL
INC BX
MOV AL,DL
CALL TRAN
INC BX
MOV AL,'$'
MOV [BX],AL
PUSH BX
PUSH CX
PUSH DX
LEA DX,BUFFER
MOV AH,9
INT 21H
MOV AH,06
MOV DL,0FFH
INT 21H
POP DX
POP CX
POP BX
JNZ GO
JMP AGAIN
GO: MOV AH,4CH
INT 21H
TOBCD PROC
MOV AL,[BX]
SHL AL,1
SHL AL,1
SHL AL,1
SHL AL,1
OR AL,[BX+1]
RET
TOBCD ENDP
TRAN PROC
MOV CL,AL
SHR AL,1
SHR AL,1
SHR AL,1
SHR AL,1
OR AL,30H
MOV [BX],AL
INC BX
MOV AL,CL
AND AL,0FH
OR AL,30H
MOV [BX],AL
RET
TRAN ENDP
DIS PROC
PUSH CX
PUSH AX
MOV CX,0FFFFH
MOV AX,0F000H
GOON:DEC CX
JNE GOON
DEC AX
MOV CX,0FFFFH
JNE GOON
POP AX
POP CX
RET
DIS ENDP
CODE ENDS
END OUTCLK

...全文
613 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
这个靠循环计时太离谱了,应该用INT 1Ah AX=02h获取时间。

21,453

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧