《汇编语言》第十三章-int 指令

目录:https://blog.csdn.net/qq_43098197/article/details/124532401

int 指令

  • 格式:int n

  • n 为中断码

  • 作用:引发中断过程,引发 n 号中断的中断过程。

  • 执行过程:

    1. 去中断类型码 n
    2. 标志寄存器入栈,IF=0,TF=0
    3. CS、IP 入栈
    4. (IP)=(n*4),(CS)=(n*4+2)
  • 使用场景之一:可以供应用程序调用已经编写好的中断例程。

使用 iret 实现 loop 指令功能

程序:在屏幕中间显示 80 个 “!” 。

assume cs:code

code segment
    start:	mov ax,0b800h				; 向8086CPU显存的地址
        	mov di,160 * 12				; 显示位置
        	mov bx, offset s - offset se; 跳转的位移(偏移量)
        	mov cx,80					; 循环次数
    s:		mov byte ptr es:[di], '!'
        	add di, 2
        	int 7ch						; 进入中断处理程序
    se:		nop
        	mov ax,4c00h
        	int 21h
code ends

end start

使用 iret 实现 loop:

lp: 	push bp
		mov bp,sp
		dec cx
		jcxz lpret
		add [bp+2], bx
lpret:	pop bp
		iret

当执行 int 7ch 后会执行中断过程,中断过程完成后,栈中内容如下:

在这里插入图片描述

进入中断例程,因为用到了 bp,因此入栈保存它,程序完成后在还原。然后 dec cx ,循环次数减一,jcxz lpret 当循环次数为 0 时,不再进行偏移(循环),不为 0,则 [bp+2] 指向栈中 ip,并且根据偏移量 bx 修改它,接着还原 bp,最后将栈中数据 iret,从而根据修改 ip 达到循环的效果。

BIOS 和 DOS 所提供的中断例程

BIOS(基本输入输出系统),主要包含以下几部分内容:

  1. 硬件系统的检测和初始化程序。
  2. 外部中断和内部中断的中断例程。
  3. 用于对硬件设备进行 IO 操作的中断例程。
  4. 其它和硬件系统相关的中断例程。

BIOS 和 DOS 所提供的中断例程包含了许多子程序,可以用 int 指令直接调用。

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

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

一般来说: 自己编写中断例程,需要先将程序放到一段连续的内存空间中,然后才可以使用它。

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

  1. 系统开机,CPU 一通电,初始化 CS=0FFFH, IP=0, 自动从 FFFF:0000 单元开始执行程序。

  2. FFFF:0000 处有一条跳转指令,转去执行 BIOS 中的硬件系统检测和初始化程序。

  3. 初始化程序:建立 BIOS 的中断向量表。

    BIOS 所提供的中断例程都是固化到 ROM 中的程序,一直存在内存中,因此只需要记录程序入口即可。

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

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

BIOS 中断例程应用

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

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

int 10h

  • 包含多个和屏幕输出相关的子查询。

来传递内部子程序的编号。

int 10h

  • 包含多个和屏幕输出相关的子查询。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值