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