码迷,mamicode.com
首页 > 其他好文 > 详细

第13章 int指令

时间:2019-01-23 21:40:16      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:windows   它的   别人   没有   class   可见   寄存器   cal   入栈   

int 指令 

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

  CPU执行int n 指令,相当于引发一个n号中断的中断过程,执行过程如下:

  (1)取中断类型码 n

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

  (3)CS,IP入栈

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

  

assume cs:code
   code segment
        start:mov ax,0b800h
                mov es,ax
                mov byte ptr es:[12*160+40*2],!
                int 0
    code ends
end start

这个程序在Windows2000 中的DOS方式下执行时,将在屏幕中显示一个“!”,然后显示“divide overflow‘ 后返回到系统中,”!“是我们编程显示的,而”dived overflow “是哪里来的呢?我们又没有做除法,不可能产生除法溢出。

  程序是没有做除法,但是在结尾使用了int 0 指令 CPU执行int 0 指令时,将引发中断过程,执行0号中断处理程序,而系统设置的0号中断处理程序的功能是显示”divide overflow“然后返回到系统。

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

  一般情况下,系统将一些具有一定功能的子程序,以中断处理程序的方式提供给应用程序调用。我们在变成的时候可以用int 指令调用这些子程序,当然也可以自己编写一些中断处理程序共别人使用。以后我们可以将中断处理程序简称为

中断例程。

 

第13章 int指令

标签:windows   它的   别人   没有   class   可见   寄存器   cal   入栈   

原文地址:https://www.cnblogs.com/godoforange/p/10311272.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!