(50分汇编解释)哪位高人指教能具体解释一下这段汇编代码

来源:百度知道 编辑:UC知道 时间:2024/06/28 03:32:37
最好是每句都做一个注释,每个模块的功能及模块这间的调用关系。

cursor equ 45H
attrib equ 2fh
code segment
assume cs:code,ds:code
start:
jmp go
oldcur dw ?
OLD1C DW 2 DUP(?)
NEWINT1C:
PUSHF
CALL DWORD PTR CS:OLD1C
push ax
PUSH BX
PUSH CX
PUSH DX
XOR BH,BH
MOV AH,3
INT 10H
MOV CS:OLDCUR,DX
MOV AH,2
xor bh,bh
MOV DX,CURSOR
INT 10H
MOV AH,2; ;读取系统时钟
INT 1AH
PUSH DX
PUSH CX
POP BX
PUSH BX
CALL SHOWBYTE
CALL SHOWCOLON
POP BX
XCHG BH,BL
CALL SHOWBYTE<

这是个在屏幕右上角显示当前时间,绿底白字,格式"小时:分钟:秒"的程序,每句注释太烦,标了个大概,常用的汇编指令你该不会看不懂的吧

cursor equ 45H ;定义显示位置
attrib equ 2fh ;定义时钟显示颜色,绿底白字
code segment
assume cs:code,ds:code
start:
jmp go ;转到程序预处理,设置中断并驻留
oldcur dw ? ;用于保存原来光标位置
OLD1C DW 2 DUP(?) ;用于保存原来的 int 1c 入口地址
NEWINT1C: ;新的 int 1c 入口
PUSHF ;标志压栈
CALL DWORD PTR CS:OLD1C ;调用原来的 int 1c 中断
push ax
PUSH BX
PUSH CX
PUSH DX
XOR BH,BH
MOV AH,3
INT 10H ;int10 子功能 03 取当前光标位置
MOV CS:OLDCUR,DX ;当前光标位置存入CS:OLDCUR
MOV AH,2
xor bh,bh
MOV DX,CURSOR ;DX=CURSOR=45h,表示光标定位在1 行70 列
INT 10H ;int10 子功能 02 设置光标位置
MOV AH,2
INT 1AH ;INT 1AH 子功能 02 读取系统时钟,返回CH/CL/DH=BCD码小时/BCD码分钟/BCD码秒
PUSH DX