子程序调用和中断指令
来源:互联网 发布:网络水军哪里找 编辑:程序博客网 时间:2024/04/28 10:27
子程序的调用及返回指令
1.调用call dst;
调用的时候ip或eip压栈将机器执行的当前值(即call指令的下一条指令的地址)压入堆栈以便子程序返回用。
2.返回ret
返回时ip出栈
带参数的返回指令 ret N
N是一个16位的常数(偶数),该指令是将返回地址弹入ip或eip后在执行sp/esp+N -->sp/esp.
该指令允许返回地址出栈后修改堆栈的指针,这便于调用子程序以前把子程序所需要的参数入栈,
以便子程序运行时使用这些参数。当子程序返回后,这些参数已不再使用,就可以修改指针使其指向参数入栈
以前的值。
中断指令
中断服务程序可以被认为是一种特殊的子程序,可以被存放在主存的任何位置。中断服务程序的首(起始、入口)地址,被安排在中断向量表中。
中断向量表设置在主存的最低1KB区域内,物理地址000H ~ 3FFH。向量表从0开始,每4个字节(双字)对应一个中断,低字存放中断服务程序的偏移地址IP,高字存放其段地址CS。中断向量号n的中断服务程序存放在中断向量表4×n的物理地址处。
中断时,为保证中断服务程序正确返回原来的程序,要把被中断程序的断点处逻辑地址CS : IP压入堆栈保存,还要保存反映现场状态的标志寄存器FLAGS。然后,将中断服务程序的入口地址送CS和IP寄存器转去执行中断服务程序。
中断服务程序执行完后返回原程序时,应恢复堆栈中保存的断点地址CS : IP,以及标志寄存器。中断返回指令IRET实现从中断服务程序返回原程序
1. int n ;产生中断类型为n的中断
2. into;溢出中断指令
3. iret;中断返回指令 相关内容要出栈
int 21h;系统功能调用指令
通过用int 21h;再调用每个功能事先规定的功能号,就可以进入相应的中断服务程序入口。
如何使用21号中断?
答:把功能调用编号置于寄存器AH中,设置入口参数,cpu执行int 21h,最后给出出口参数。
举例:
mov ah,1;功能号01h->ah
int 21h;调用21h号软中断
功能:等待键盘输入,并回送显示器。
mov dl,41h; 将字符A的ASCII码,送->DL
mov ah,2; 21h的2软中断,将dl内容显示到屏幕上
int 21h
mov ah,4ch;
int 21h; 功能号4ch终止程序,返回dos
- 子程序调用和中断指令
- 子程序调用和中断的几个概念
- 中断调用与子程序调用
- 程序中断和调用子程序有何区别
- 计算机组成原理调用中断服务程序和调用子程序有何区别
- 中断调用与子程序设计实验
- 十八、使用call和ret指令实现子程序的调用和返回
- 调用子程序
- 汇编语言子程序调用call和ret
- 关于ARM子程序跳转和中断跳转的流水线问题
- 关于ARM子程序跳转和中断跳转的流水线问题
- 中断服务子程序
- 中断服务子程序
- 中断服务子程序
- 中断服务子程序
- 中断服务子程序
- 中断服务子程序
- 中断服务子程序 ISR
- 《Thinking in C++》练习题答案——3-1
- 孙鑫VC++视频教程笔记(十四)网络编程(转载)
- java中的集合类
- 多线程概述
- stdin, stdout, stderr 从定向
- 子程序调用和中断指令
- setsockopt()用法
- 有关元素元素位置的属性
- SOCKET 函数大全
- C#中实现Web文件的上传类
- J2SDK环境变量设置
- Java数据库连接池技术
- linux内核链表
- 愁啊