第十三章 int指令
int指令的格式为:int n,n为中断类型码,它的功能是引发中断过程。
可以在程序中使用int指令调用任何一个中断的中断处理程序。
一般情况下,系统将一些具有一定功能的子程序,以中断处理程序的方式提供给应用程序调用。
int指令和iret指令的配合使用与call指令和ret指令的配合使用具有相似的思路。
编写中断例程和子程序的时候,应该注意例程中用到的寄存器的值的保存和恢复。(成对编程)
可以利用iret指令,用栈中的内容修改cs、ip。
BIOS中主要包含以下几部分内容:
① 硬件系统的检测和初始化程序;
② 外部中断和内部中断的中断例程;
③ 用于对硬件设备进行I/O操作的中断例程。
操作系统DOS也提供了中断例程,从操作系统角度看,DOS的中断例程就是操作系统向程序员提供的变成资源。
和硬件设备相关的DOS中断例程中,一般都调用了BIOS的中断例程。
BIOS和DOS提供的中断例程,都用ah来传递内部子程序的编号。
int 10h中断例程,2号子程序的架构和功能:
mov ah,2 ;置光标
mov bh,? ;页数
mov dh,? ;行号
mov dl,? ;列号
int 10h
功能为设置光标位置。
int 10h中断例程,9号子程序的架构和功能:
mov ah,9 ;在光标位置显示字符
mov al,? ;字符
mov bl,? ;颜色属性
mov bh,? ;页数
mov cx,? ;字符重复个数
int 10h
功能为在光标位置显示字符。
int 21h中断例程的4ch号功能,即程序返回。可以提供返回值作为参数。
mov ah,4ch ;程序返回
mov al,0 ;返回值
int 21h
int 21h中断例程的9号子程序。功能为在光标位置显示字符串,可以提供要显示字符串的地址作为参数。
ds:dx指向字符串 ;要显示的字符串需用”$”作为结束符。
mov ah,9 ;功能号9,表示在光标位置显示字符串。
int 21h
- [kanwangxue] 如果是文字的,不是特别好啊,体力活,如果文字还加点动画,那就必须顶了。 01/15 01:10
- [kanwangxue] 必须顶啊。 01/15 00:54
- [ltoiii] 既然是实现loop功能,是否要考虑s和se标号? mov bx,offset s - offset 12/09 12:09
- [xiaoyao2012] 正确 11/01 15:33
- [xuer2016] 又找到2条被我忽视的地方: 1.PUSH 和 POP 针对字单元 2.POP 不能是CS 10/26 10:57
- [xuer2016] 学习了 我书写不规范,16进制字母前不加0,后面不加H,以后要注意了。。。 10/26 10:51
- [xuer2016] 来老师这学习下 10/26 10:31
- [youthangel] 不妙,CPU的利用率一下子就上去了。还好我的处理器不是太弱,35%左右的利用率。建议博主在修改一下 10/20 08:23
- [fpamc] 在我心里她就是我的女神。 10/02 08:58
- [newpeople] 你女朋友用得了简直就是一个女神…… 10/01 08:10
- [99998888] 请您指点一下如何找到会ASSEMBLER 语言的翻译,翻译成中文或英文。我的QQ ; 9097815 07/25 09:56
- [jeremy] 我觉得你学习的挺好,可以加你扣扣吗?我的469614823 08/07 14:46
- [zhangbo0805] 哈哈, 你好呀!很希望认识你呀!我发现你学习的积极性很高!正想向您学习呢! 07/31 23:31
- [tomato] 知道了,排得还挺满。 05/29 16:35
- [tomato] 现在学习情况怎么样?在做课设二还是什么? 05/29 10:41
- [tomato] 你的留言收到了。 05/05 23:51
- [fpamc] 开始学习c咯! 05/03 21:40
- [fpamc] 居然不能发博客了……! 04/22 21:03
- [tomato] 你相册中的游戏界面我看过了,非常好,界面很漂亮,很有创造力。博主,很有潜力。加油,一定能把这个游戏做 04/20 23:46
- [fpamc] 忙了半个月,不在家,没时间学习汇编。 但是在途中想到了一个有史以来最难的程序。对于刚学完9章的我。 04/13 20:56