汇编-13.0-int指令

Posted xigongxiaosha

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编-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指令,返回程序原来正在执行的位置。

 

以上是关于汇编-13.0-int指令的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 创建反汇编解析器实例对象 | 设置汇编解析器显示细节 )(代码片段

汇编指令JMP是啥意思?

汇编 LEA 指令

用于复数乘法的汇编代码/AVX 指令。 (GCC 内联汇编)

汇编学习笔记-伪指令

逆向工程部分