int指令
来源:互联网 发布:淘宝中药材哪家好 编辑:程序博客网 时间:2024/06/04 23:27
int指令的格式为:int n(n为类型中断码)它的功能是引发中断过程。
CPU执行int 指令,相当于引发一个n号中断的中段过程,执行过程如下:
(1)取中断类型码n;
(2)标志寄存器入栈,IF=0,TF=0;
(3)CS,IP入栈;
(4)(IP)=(n* 4),(CS)=(n*4+2)。
从此转去执行n号中断的中断处理程序。
一般情况下,系统将一些具有一定功能的子程序,以中断处理程序的方式提供给应用程序调用。我们在编程的时候,可以用int指令调用这些子程序。当然,也可以自己编写一些中断处理程序供别人使用。
编写供应用程序调用的中断例程(中断处理程序)
eg:
功能:将一个全是字母,以0结尾的字符串,转换为大写。
参数:ds:si指向字符串的首地址。
安装中断
assume cs:codecode segment start: mov ax,cs mov ds,ax mov si,offset capital mov ax,0 mov es,ax mov di,200h mov cx,offset capitalend-offset capital cld 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 capital: push cx push si change: mov cl,[si] mov ch,[0] jcxz ok and byte ptr [si],11011111b inc si jmp short change ok: pop si pop cx iret capitalend: nopcode endsend start
调用中断:
assume cs:codedata segment db 'conversation',0data endscode segment start: mov ax,data mov ds,ax mov si,0 int 7ch mov ax,4c00h int 21hcode endsend start
eg:编写并安装int 7ch中断例程,功能为完成loop指令的功能。
参数:(CX)=循环次数,(bx)=位移。
安装7ch例程:
assume cs:codecode segment start: mov ax,cs mov ds,ax mov si,offset do0 mov ax,0 mov es,ax mov di,200h mov cx,offset do0end-offset do0 cld rep movsb mov word ptr es:[7ch*4],200h mov word ptr es:[7ch*4+2],0 mov ax,4c00h int 21h do0: push bp dec cx jcxz ok mov bp,sp add [bp+2],bx ok: pop bp iret do0end: nopcode endsend start
实际使用7ch中断
assume cs:codecode segment start: mov ax,0b800h mov es,ax mov di,160*12 mov bx,offset s-offset se mov cx,80 s: mov byte ptr es:[di],'!' mov byte ptr es:[di+1],2 add di,2 int 7ch se: nop mov ax,4c00h int 21hcode endsend start
CPU执行int7ch的中断例程之前,标志寄存器、当前的CS和IP被压入栈中,在执行完中断例程后,应该用iret指令恢复int 7ch执行前的标志寄存器和CS、IP的值,从而接着执行应用程序。
BIOS和DOS所提供的中断例程
在系统板的ROM中存放着一套程序,称为BIOS(基本输入输出系统),BIOS中主要包含以下几个部分的内容。
(1)硬件系统的检测和初始化程序;
(2)外部中断和内部中断的中断例程;
(3)用于对硬件设备进行I/O操作的中断例程;
(4)其他和硬件系统相关的中断例程。
和硬件设备相关的DOS中断历程中,一般都调用了BIOS的中断例程。
BIOS和DOS中断例程的安装过程:
(1)开机后,CPU一加电,初始化(CS)=0FFFFH,(IP)=0,自动从FFFF:0单元开始执行程序。FFFF:0处有一条跳转指令,CPU执行该指令后,转去执行BIOS中的硬件系统检测和初始化程序。
(2)初始化程序将建立BIOS所支持的中断向量,即将BIOS所提供的中断例程的入口地址登记在中断向量表中。注意,对于BIOS所提供的中断例程,只需将入口地址登记在中断向量表即可,因为他们是固化到ROM中的程序,一直在内存中存在。
(3)硬件系统检测和初始化完成后,调用int 19h进行操作系统的引导。从此将计算机交由操作系统控制。
(4)DOS启动后,除完成其他工作外,还将它所提供的中断例程装入内存,并建立相应的中断向量。俄国
- int指令
- int指令
- USS-INT指令详解
- int指令理解
- 软中断指令 INT
- 汇编语言--int指令
- (13)int指令
- 170428 汇编-int指令
- INT 21 指令集
- 汇编学习--7.16--int指令
- int 3 软中断指令
- 汇编 INT 21H 指令
- 第13章 int指令
- 汇编第十三节-int指令
- INT 21H 指令说明及使用方法
- 第13章 int指令 笔记
- INT 21H 指令说明及使用方法
- INT 21H指令大全
- 利用Oledb操作XLS文件
- 勇士队输了。。。。。。
- equals方法
- How to access HBase from spark-shell using YARN as the master on CDH 5.3 and Spark 1.2
- 为什么不能使用Thread.stop()方法?
- int指令
- Maven常用插件介绍:Maven-assembly-plugin插件
- Android之PopupWindow,dialog设置日期
- Android中补间动画的基本使用
- Dynamics CRM2013 导入解决方案(快速视图窗体)SystemForm With Id Does Not Exist的解决方法
- 【Java】form表单提交中文乱码
- BZOJ4204 取球游戏
- 网络游戏同步问题
- struts2的文件上传与下载