第13章 int 指令
中断信息可以来自CPU的内部和外部,当CPU的内部有需要处理的事情发生的时候,将产生马上需要处理的中断信息,引发中断过程。
这一章,我们要讲解另一种重要的内中断,由int指令引发的中断
13.1 int指令
int指令的格式为int n 指令,相当于引发一个n号中断的中断过程,执行情况如下:
- 取中断类型码n;
- 标志寄存器入栈,IF=0,TF=0;
- CS,IP入栈;
- 修改IP,CS,跳转到中断程序处理入口。
注意,我们前面所说的中断都是被动触发的,当满足某种错误的条件,就会触发相关错误指令,而int指令是主动触发的,这种区别一定要清楚。
int 指令在程序中的任何地方都可以被加载触发。
13.2 编写供应用程序调用的中断历程。
编程
要求:求一word型数据的平方
参数:(ax)=要计算的数据。
返回值:dx,ax中存放结果的高16位和低16位。
举例应用: 2*3456^2
assmue cs:code
code segment
start: mov ax,3456
add ax,ax
adc dx,dx
mov ax,4cooh
int 21
code ends
end start
分析一下,我们要做以下3部分工作。
- 编写实现求平方功能的程序。
- 安装程序,将其安装在0号内存出
- 设置中断向量表,将程序的入口地址保存在7ch表向中,使其成为入口。
assume cs:code
code segment
start: mov ax,cs
mov ds,ax
mov si,offset sqr
mov ax,0
mov es,ax
mov di,200g
mov cx,offset sqrend-offset sqr
cld
rep movsb
mov ax,0
mov es,0