第13章 int指令

引言

中断信息可以来自cpu的内部和外部,当cpu的内部有需要处理的事情发生的时候,将产生需要马上处理的中断信息,引发中断过程。

13.1 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

从此转去执行n号中断的中断处理程序。

可以在程序中使用int指令调用任何一个中断的中断处理程序。

一般情况下,系统将一些具有一定功能的子程序,以中断处理程序的方式提供给应用程序调用。

 

 

 

 

 

13.4  BIOS和DOS所提供的中断例程

在系统板的ROM中存放着一套程序,称为BIOS(基本输入输出系统),BIOS中主要包含以下几部分内容。

1)硬件系统的检测和初始化程序;

2)外部中断和内部中断的中断例程

3)用于对硬件设备进行I/O操作的中断例程

4)其他和硬件系统相关的中断例程。

 

 和硬件设备相关的DOS中断例程中,一般都调用BIOS的中断例程。

13.5  BIOS和DOS中断例程的安装过程

1)开机后,CPU一加电,初始化CS=0FFFFh,ip=0,自动从FFFF:0单元开始执行程序。FFFF:0处有一条跳转指令,CPU执行该指令后,转去执行BIOS中的硬件系统检测和初始化程序。

2)初始化程序建立BIOS所支持的中断向量,即将BIOS提供的中断例程的入口地址登记在中断向量表中。

3)硬件系统检测和初始化完成后,调用int  19h进行操作系统的引导。从此将计算机交由操作系统控制。

4)DOS启动后,除完成其他工作外,还将它所提供的中断例程装入内存,并建立相应的中断向量。

 

13.6  BIOS中断例程的应用

int   10h中断例程是BIOS提供的中断例程,其中包含了多个和屏幕输出相关的子程序。

一般来说,一个供程序员调用的中断例程中往往包括多个子程序,中断例程内部用传递进来的参数来决定执行哪个子程序。

BIOS和DOS提供的中断例程,都用ah来传递内部子程序的编号。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

;编程:在屏幕的5行12列显示字符串“welcome to masm!”。

assume cs:code
data segment 
 db 'Welcome to masm!','$'
data ends

code segment
start:    mov ah,2     ;置光标
    mov bh,0    ;第0页
    mov dh,5    ;dh中放行号
    mov dl,12    ;dl中放列号
    int 10h
    
    mov ax,data
    mov ds,ax
    mov dx,0    ;ds:dx指向字符串的首地址data:0
    mov ah,9
    int 21h

    mov ax,4c00h
    int 21h 

code ends
end start

上述程序在屏幕的5列12行显示字符串“welcome  to masm!”,直到遇见’$‘($本身并不显示,只起到边界的作用)

如果字符串比较长,遇到行尾,程序会自动转到下一行开头处继续显示,如果到了最后一行,还能自动上卷一行。

 

posted @ 2020-05-28 18:46  ice--cream  阅读(380)  评论(0编辑  收藏  举报