汇编语言——安装中断例程

 1 assume cs:code
 2 
 3 stack segment
 4     db 128 dup(0)
 5 stack ends
 6 
 7 code segment
 8 start: mov ax,stack
 9     mov ss,ax
10     mov sp,128
11     
12     push cs
13     pop ds
14     
15     mov ax,0
16     mov es,ax
17     ;设置段寄存器
18     
19     mov si,offset int9       ;新中断程序的标记
20     mov di,204h      ;新中断程序的位置
21     mov cx,offset int9end-offset int9      ;新中断程序的长度
22     cld
23     rep movsb
24     ;先将代码复制到 0:204 处
25     
26     push es:[9*4]
27     pop es:[200h]
28     push es:[9*4+2]
29     pop es:[202h]    
30     ;将原本int9的中断程序入口保存起来   0:200 处
31     
32     cli
33     mov word ptr es:[9*4],204h
34     mov word ptr es:[9*4+2],0
35     sti
36     ;将int9的中断入口修改成新中断程序的入口
37     
38     mov ax,4c00h
39     int 21h
40     
41 int9: ;中断程序
42     
43 int9ret: iret
44 
45 int9end: nop    
46     
47 code ends
48 end start

 

posted @ 2020-06-01 20:55  b1ing丶  阅读(390)  评论(0)    收藏  举报