汇编_数字式_实时电子钟的补充注释

来源:互联网 发布:白t恤 知乎 编辑:程序博客网 时间:2024/05/01 10:18

回复blueglass2:

源程序在 百度贴吧_汇编吧_汇编_数字式_实时电子钟
http://tieba.baidu.com/f?kz=545929112
下面的贴子在那边无法通过审核。

-u100 200
0100   PUSH CS  
0101   POP  DS  ∥数据段与代码段归一
0102   CALL 02F0∥判断运行时,是否带参数C;无,显示黑底白字;有,显示黄底红字
0105   MOV  AH,0F
0107   INT  10  ∥读原显示模式
0109   MOV  AH,00
010B   MOV  [00F8],AX ∥暂存
010E   MOV  AL,03
0110   INT  10  ∥置显示模式为80×25文本模式
0112   MOV  AH,01
0114   MOV  CX,2020
0117   INT  10 ∥关闭光标
0119   CLD     ∥清方向
011A   MOV  DI,01D0
011D   MOV  AH,2C
011F   INT  21  ∥读当前时间
0121   PUSH DX  ∥秒进栈
0122   MOV  AL,CH ∥存当前小时
0124   CALL 01F0
0127   INC  DI  
0128   MOV  AL,CL ∥存当前分钟
012A   CALL 01F0
012D   INC  DI  
012E   POP  AX  ∥秒出栈
012F   MOV  AL,AH ∥存当前秒
0131   CALL 01F0
0134   MOV  DX,0408 ∥确定屏幕显示起始坐标
0137   MOV  SI,01D0
013A   LODSB      
013B   MOV  [00E0],SI∥保存数据偏移
013F   PUSH DX ∥位置进栈
0140   CBW      
0141   MOV  BL,10
0143   MUL  BL  
0145   SUB  AX,0100
0148   MOV  SI,AX ∥计算点阵位置DS:SI
014A   MOV  BP,0010 ∥16行
014D   MOV  DI,DX
014F   CALL [01CE] ∥画8×16点阵 
0153   MOV  DX,DI
0155   INC  DH  
0157   DEC  BP  
0158   JNZ  014D
015A   INC  BYTE PTR [019F]∥计数器加1                   
015E   CMP  BYTE PTR [019F],08                
0163   POP  DX   ∥位置出栈
0164   JZ  016F
0166   ADD  DL,08 ∥找下一字符显示位置
0169   MOV  SI,[00E0]∥恢复数据指针
016D   JMP  013A
016F   MOV  AL,00
0171   MOV  [019F],AL∥计数器清0
0174   MOV  AH,01
0176   INT  16   ∥检测有无按键
0178   JNZ  0187 ∥有则退出程序
017A   MOV  BX,0010
017D   MOV  CX,FFFF
0180   LOOP 0180 ∥017A-0183,延时
0182   DEC  BX  
0183   JNZ  017D
0185   JMP  0119 ∥刷新时间显示
0187   MOV  AX,[00F8]
018A   INT  10   ∥恢复原显示模式
018C   MOV  AH,01
018E   MOV  CX,0E0F
0191   INT  10   ∥打开光标
0193   MOV  AH,09
0195   MOV  DX,02B0
0198   INT  21   ∥显示版权
019A   MOV  AH,4C
019C   INT  21   ∥返回DOS
019E   0000      ∥计数器区
01A0   MOV  CX,0008 ∥显示8×16的子程序之一
01A3   MOV  BL,[SI]
01A5   MOV  AH,02
01A7   MOV  BH,00
01A9   INT  10  ∥移光标
01AB   SHL  BL,1
01AD   JNB  01B3
01AF   MOV  AL,44∥黄底红字
01B1   JMP  01B5
01B3   MOV  AL,0E
01B5   PUSH BX  
01B6   PUSH CX  
01B7   PUSH DX  
01B8   MOV  BL,AL∥字符颜色
01BA   MOV  AL,0F∥显示太阳
01BC   MOV  CX,0001∥次数
01BF   MOV  AH,09 ∥功能号
01C1   INT  10 ∥写字符到当前光标处 
01C3   POP  DX  
01C4   POP  CX  
01C5   POP  BX  
01C6   INC  DL  
01C8   LOOP 01A5
01CA   INC  SI
01CB   RET
01CC   00 00
01CE   00 03 ∥黑底白字子程序入口地址:0300H

01F0   MOV  AH,00∥十六化十子程序
01F2   MOV  BH,0A
01F4   DIV  BH
01F6   OR   AX,3030
01F9   MOV  DX,AX
01FB   STOSB
01FC   MOV  AL,AH
01FE   STOSB
01FF   RET

-u2f0 320
02F0   CMP  BYTE PTR [0082],43∥参数是C吗?
02F5   JNZ  02FD
02F7   MOV  AX,01A0
02FA   MOV  [01CE],AX
02FD   RET      
02FE
0300   MOV  CX,0008 ∥显示8×16的子程序之二
0303   MOV  BL,[SI] ∥黑底白字
0305   MOV  AH,02
0307   MOV  BH,00
0309   INT  10
030B   SHL  BL,1
030D   MOV  AX,0E01∥显示笑脸
0310   JNB  0314
0312   MOV  AL,20
0314   INT  10  
0316   INC  DL  
0318   LOOP    0305
031A   INC  SI  
031B   RET
031C   00 00 00 00

-d1d0 320

01D0  31 33 3A 31 33 2E 32 32   ∥13:13.22
01E0  00 00 00 00 00 00 00 00 00 00 00 18 18 00 00 00
∥点的8×16点阵数据
0200-029F … …∥0~9的8×16点阵数据
02A0  00 00 00 00 00 18 18 00 00 00 18 18 00 00 00 00
∥冒号的8×16点阵数据
02B0-02EF 09,LBB Software Workshop.(C) All Rights Reserved.2000 05 03...$