int n相当于引发一个n号中断
int n执行过程如下:
(1)取中断类型码n
(2)标志寄存器入栈,IF = 0,TF = 0
(3)CS、IP入栈
(4)(IP) = (n*4),(CS) = (n*4+2)
可以在程序中使用int指令调用任何一个中断的中断处理程序。
如:start:
mov ax,0b800h
mov es,ax
mov byte ptr es:[12*160+40*2],'!' //屏幕输出!
int 0 //将引发0号中断
例子:编写7ch中断计算ax的平方,并求2*3456^2
步骤:编写7ch中断求ax的平方再调用7ch中断求公式
1.编写int 7ch中断程序并加入中断向量表
start: mov ax,cs
mov ds,ax
mov si,offset sqr
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
sqr: mul ax
iret
sqrend:nop
2:调用7ch中断
mov ax,16
int 7ch
注意:cpu执行int 7ch指令进入中断例程之前,标志寄存器,cs、ip被压入栈中,中断执行结束后应该用iret指令恢复标志寄存器和cs、ip;int和iret的配合使用与call和ret有异曲同工之妙