汇编-13.0-int指令

1.int指令

int指令的格式为:int n,n为中断类型码,它的功能是引发中断过程。

执行int n指令,相当于引发一个中断号为n的中断过程。

(1).取中断类型码n;

(2).标志寄存器入栈,IF=0,TF=0;

(3).CS、IP入栈;

(4).(IP)=(n*4),(CS)=(n*4+2).

int指令的最终功能是和call指令相似,都是调用子程序。

2.编写应用程序调用的中断例程

(1).

功能:求一word型数据的平方。

参数:(ax)= 要计算的数据。

返回值:dx、ax中存放结果的高16位和低16位。

应用举例:求2*3456^2

assume cs:code
code segment
start:mov ax,3456                     ;(ax)=3456
        int 7ch                              ;调用中断7ch的中断过程,计算ax中数据的平方
        add ax,ax
        adc dx,dx                           ;dx:ax存放结果,将结果乘以2
        mov ax,4c00h
        int 21h
code ends
end start

(2).中断例程

*编写实现要求平方的程序;

*安装程序,将其安装在0:200处;

*设置中断向量表,将程序的入口地址保存在7ch表项中,使其成为中断7ch的中断例程。

assume cs:code
code segment
start: mov ax,cs
         mov ds,ax
         mov si,offset sqr                ;设置ds:si指向源地址
         mov ax,0
         mov es,ax
         mov di,200h                      ;设置es:di指向目的地址
         mov cx,offset ssqrend-offset sqr    ;设置cx为传输长度
         cld                                 ;设置传输方向,标志寄存器的DF位置0
   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
 
sqr:   mul ax
         iret
sqrend:nop

code ends
end start
      

在中断例程的最后,要使用iret指令,返回程序原来正在执行的位置。

猜你喜欢

转载自www.cnblogs.com/xigongxiaosha/p/9494815.html