《汇编语言》讲稿_13_第1页
《汇编语言》讲稿_13_第2页
《汇编语言》讲稿_13_第3页
《汇编语言》讲稿_13_第4页
《汇编语言》讲稿_13_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第13章int指令 引言 中断信息可以来自CPU的内部和外部 当CPU的内部有需要处理的事情发生的时候 将产生需要马上处理的中断信息 引发中断过程 在上一章中 我们讲解了中断过程和两种内中断的处理 这一章中 我们讲解另一种重要的内中断 由int指令引发的中断 13 1int指令 int格式 intn n为中断类型码 它的功能是引发中断过程 CPU执行intn指令 相当于引发一个n号中断的中断过程 执行过程如下 1 取中断类型码n 2 标志寄存器入栈 IF 0 TF 0 3 CS IP入栈 4 IP n 4 CS n 4 2 从此处转去执行n号中断的中断处理程序 13 1int指令 可以在程序中使用int指令调用任何一个中断的中断处理程序 比如 下面的程序 assumecs codecodesegmentstart movax 0b800hmoves axmovbyteptres 12 160 40 2 int0codeendsendstart 13 1int指令 这个程序在Windows2000中的DOS方式下执行时 将在屏幕中间显示一个 然后显示 Divideoverflow 后返回到系统中 是我们编程显示的 而 Divideoverflow 是哪里来的呢 我们的程序中又没有做除法 不可能产生除法溢出 13 1int指令 程序是没有做除法 但是在结尾使用了int0指令 CPU执行int0指令时 将引发中断过程 执行0号中断处理程序 而系统设置的0号中断处理程序的功能是显示 Divideoverflow 然后返回到系统 13 1int指令 可见 int指令的最终功能和call指令相似 都是调用一段程序 一般情况下 系统将一些具有一定功能的子程序 以中断处理程序的方式提供给应用程序调用 13 1int指令 我们在编程的时候 可以用int指令调用这些子程序 当然 也可以自己编写一些中断处理程序供别人使用 以后 我们可以将中断处理程序简称为中断例程 13 2BIOS中断例程应用 下面我们举几个例子 来看一下BIOS中断例程的应用 int10h中断例程是BIOS提供的中断例程 其中包含了多个和屏幕输出相关的子程序 13 2BIOS中断例程应用 一般来说 一个供程序员调用的中断例程中往往包括多个子程序 中断例程内部用传递进来的参数来决定执行哪个子程序 BIOS和DOS提供的中断例程 都用ah来传递内部子程序的编号 13 2BIOS中断例程应用 我们看一下int10h中断例程的设置光标位置功能 movah 2movbh 0movdh 5movdl 12int10h 13 2BIOS中断例程应用 ah 2表示调用第10h号中断例程的2号子程序 功能为设置光标位置 可以提供光标所在的行号 80 25字符模式下 0 24 列号 80 25字符模式下 0 79 和页号作为参数 bh 0 dh 5 dl 12 设置光标到第0页 第5行 第12列 13 2BIOS中断例程应用 bh中页号的含义 内存地址空间中 B8000h BFFFFh共32K的空间 为80 25彩色字符模式的显示缓冲区 一屏的内容在显示缓冲区中共占4000个字节 13 2BIOS中断例程应用 显示缓冲区分为8页 每页4K 4000 显示器可以显示任意一页的内容 一般情况下 显示第0页的内容 也就是说 通常情况下 B8000 B8F9F中的4000个字节的内容将出现在显示器上 13 2BIOS中断例程应用 再看一下int10h中断例程的在光标位置显示字符功能 movah 9 置光标moval a 字符movbl 7 颜色属性movbh 0 第0页movcx 3 字符重复个数int10h 13 2BIOS中断例程应用 ah 9表示调用第10h号中断例程的9号子程序 功能为在光标位置显示字符 可以提供要显示的字符 颜色属性 页号 字符重复个数作为参数 13 2BIOS中断例程应用 bh 中的颜色属性格式如下 可以看出 和显存中的属性字节的格式相同 13 2BIOS中断例程应用 编程 在屏幕的5行12列显示3个红底高亮闪烁绿色的 a 程序源码注意 闪烁的效果必须在全屏DOS方式下才能看到 13 3DOS中断例程应用 int21h中断例程是DOS提供的中断例程 其中包含了DOS提供给程序员在编程时调用的子程序 我们从前一直使用的是int21中断例程的4ch号功能 即程序返回功能 如下 movah 4ch 程序返回moval 0 返回值int21h 13 3DOS中断例程应用 ah 4ch表示调用第21h号中断例程的4ch号子程序 功能为程序返回 可以提供返回值作为参数 我们前面使用这个功能的时候经常写作 movax 4c00hint21h 13 3DOS中断例程应用 我们看一下int21h中断例程的在光标位置显示字符串的功能 ds dx指向字符串 要显示的字符串需用 作为结束符movah 9 功能号9 表示在光标位置显示字符串int21h 13 3DOS中断例程应用 ah 9表示调用第21h号中断例程的9号子程序 功能为在光标位置显示字符串 可以提供要显示字符串的地址作为参数 13 3DOS中断例程应用 编程 在屏幕的5列12行显示字符串 Welcometomasm 源代码 13 3DOS中断例程应用 上述程序在屏幕的5列12行显示字符串 Welcometomasm 直到遇见 本身并不显示 只起到边界的作用 如果字符串比较长 遇到行尾 程序会自动转到下一行开头处继续显示 如果到了最后一行 还能自动上卷一行 13 3DOS中断例程应用 DOS为程序员提供了许多可以调用的子程序 都包含在int21h中断例程中 我们这里只对原理进行了讲解 对于DOS提供的所有可调用子程序的情况 读者可以参考相关的书籍 DOS21号中断2号功能 MOVDL 1 将数值01h装入DL寄存器MOVAH 2 将数值02h装入ah寄存器INT21 调用DOS21号中断2号功能 用来逐个显示装入DL的字符 MOVCX 0100 装入循环次数MOVDL 00 装入第一个ASCII码 随后每次循环装入新码s MOVAH 02INT21INCDL INC 递增指令 每次将数据寄存器DL内的数值加1LOOPs LOOP 循环指令 每执行一次LOOP CX值减1 并跳 到循环的起始地址105 直到CX为0 循环停

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论