- int n:
- n为中断类型码,引发中断过程
- 编写中断例程(7ch) ```cpp ;求2*3456^2
assume cs:code code segment start:
mov ax,cs
mov ds,ax
mov si,offset sqrt
mov ax,0
mov es,ax
mov di,200h
mov cx,offset sqrend-offset sqr ;放到安全内存
cld
rep movsb
mov ax,0
mov es,ax
mov word ptr es:[7ch*4],200h ;安装
mov word ptr es:[7ch*4+2],0
mov ax,4c00h
int 21h
sqrt:mul ax
iret
sqrtend:nop
code ends end start
```cpp
;用7ch完成loop指令的功能
;中断例程如下
lp: push bp
mov bp,sp
dec cx
jcxz lpret
add [bp+2],bx ;[bp+2]存的是调用中断例程的程序的IP的值,bx是偏移(又转移到标号s处:mov bx,offset s-offset send)
lpret:pop bp
iret
Bios和DOS提供的中断例程是如何安装到内存中的
- 操作系统
- 引导型病毒
int 10h:bios提供的中断例程
之前一直使用的是21h中断例程的4ch号功能,即程序返回功能
mov ah,4ch ;执行程序返回功能
mov al,0 ;存放返回值
int 21h