主程序代码:
在数据段中,定义seg_address和off_address两个字变量来存储原来的中断处理程序(int 1CH)的段地址和偏移地址。
在代码段中,由题意实现1CH中断处理命令的重写,故使用(int 21H)中35号命令获得原处理程序的地址,段地址在es中,偏移地址在bx中,存储并保护原来的代码;使用(int 21H)中25号命令设置新中断处理程序的地址,段地址在ds中,偏移地址在dx中,其中al寄存器存储要修改的中断向量标号,在调用int 1CH后,恢复原来的中断处理程序,将中断向量存储的地址利用25号命令修改为之前存储的地址,完成中断1CH的挂接功能。
倒计时子程序代码:
cx寄存器存储循环次数,al寄存器存储初始输出90,由于倒计时九十秒,要输出十进制的字符,令待输出数除以十获得十位上的数,余数是个位上的数,分别加上30h获得数字的ASCII码,按照先后顺序输出,每个间隔调用子程序停顿延迟一秒,待输出数递减后继续循环,直到九十秒计时结束。
停顿延迟子程序代码:
使用一个双层嵌套循环,增加程序的运行时间,从而通过调整循环次数的参数达到延时一秒的效果。
创作不易,手下留赞!