博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
中断体验:观察自定义中断的安装及触发
阅读量:6605 次
发布时间:2019-06-24

本文共 1481 字,大约阅读时间需要 4 分钟。

【说明】中断机制是一种重要的解决问题的手段。针对初学者不能对中断的相关技术有直观的认识,特设计了这个学习活动。

【知识准备】中断向量表;中断处理过程;中断安装程序

【体验步骤】

步骤1 自定义78h号中断的中断处理例程,并将其安装到内存中

;文件名: ptest.asmassume cs:codecode segmentstart:mov ax,cs      mov ds,ax      mov ax,0      mov es,ax      ;安装中断例程      lea si, do_78h      mov di,200h      mov cx,offset do78h_end - offset do_78h      cld      rep movsb      ;设置中断向量表      mov word ptr es:[78h*4],200h      mov word ptr es:[78h*4+2],0      mov ax,4c00h      int 21h      ;定义中断例程:显示"flying"; do_78h: jmp short istart       msg db 'flying!-Piao Guo....'istart:       push ds       push es       push si       push di       push ax       push cx       mov ax, cs       mov ds, ax       mov si, 202h       mov ax,0b800h       mov es,ax       mov di,160*24       mov ah, 11001111b ;闪烁红底加亮白字       mov cx,offset istart - offset msg    s: mov al,[si]       mov es:[di],ax  ;字符与属性一起移入       inc si       add di,2       loop s       pop cx       pop ax       pop di       pop si       pop es       pop ds      iretdo78h_end:nopcode endsend start

编译、连接及运行过程如下:

这里写图片描述

请说出来:运行以后什么也看到,程序的作用是什么?

步骤2 编程序,触发中断78h

;文件名: pa.asmassume cs:code, ss:stackstack segment stack       db  16 dup (0)stack endscode segmentstart: int 78h       mov ax,4c00h       int 21hcode endsend start

编译、连接、运行程序:

这里写图片描述

请说出:在运行pa时,发生了什么?为什么?

步骤3 在debug中载入pa.exe并单步运行,观察寄存器的变化

重点关注:CS、IP,以及标志寄存器中IF的值,如图,EI(允许)或DI(关闭)
这里写图片描述

一边观察,一边说出运行中涉及的中断的机制

步骤4 在debug中调用int 78h

按下面操作工作:
这里写图片描述

请说出,调用int 78时发生了什么?

步骤5:关闭DOSBOX,再打开,不做步骤1,直接从步骤2开始重做上面的工作。

请说出:你看到了什么?为什么会是这样?

你可能感兴趣的文章
React-Native 之 GD (十六)首页筛选功能
查看>>
UI概念体系要素
查看>>
SSISDB5:使用TSQL脚本执行Package
查看>>
performSelectorInBackground V.S detachNewThreadSelector?
查看>>
linux,Centos,bash: service: command not found
查看>>
【转】UIColor对颜色的自定义
查看>>
php编译报错 configure: error: Please reinstall the libcurl distribution - easy.h should be in <curl-...
查看>>
asp.net后台进程做定时任务
查看>>
Ural_1671. Anansi's Cobweb(并查集)
查看>>
Web墨卡托坐标与WGS84坐标互转
查看>>
给vs2012换肤
查看>>
java接口中多继承的问题
查看>>
索引笔记《二》确定需要建立索引的列
查看>>
libjpeg的问题
查看>>
MySQL数据库学习笔记(八)----JDBC入门及简单增删改数据库的操作
查看>>
git 显示多个url地址推送
查看>>
Java Web之Filter
查看>>
HTTP状态码详解
查看>>
Java_动态加载
查看>>
为什么国外程序员爱用苹果 Mac 电脑?
查看>>