ucosII中的一个疑问:宏OS_TASK_SW()实现的功能是什么?
从邵贝贝翻译的书中看宏OS_TASK_SW()好象只是把PC指向一个中断向量#define OS_TASK_SW()asm INT 080H,让程序执行中断子服务程序.但从书中另一处说到:调用含有软中断指令的函数OS_TASK_SW(),强制处理器保存PSW和PC的当前值.是不是说asm INT 080H 同时还有强制处理器保存PSW和PC的当前值的作用?
但从这条汇编指令里面看不到能实现保存PSW和PC的当前值的功能啊?
很是不理解,望高手指点!谢谢~~~~~~~~~~~~~~~ 这是任务切换,保存当前任务环境,装入操作系统指定的下一个任务环境,用ret实现任务切换。 哦 再细说一下。
8086中 INT80,是一个软件中断,执行的结果,CPU查找第80H号中断向量,按中断向量提供的地址执行一个长调用。在调用过程中,PC和PSW已保存,其它要保存的寄存器,应在中断程序中处理。如果是单片机如AVR系列、80C196,直接把OS_TASK_SW()用对应的程序替代即可. 多谢cock的答复。
从你的回答中我是这么理解的,不知道对不对:
1、宏OS_TASK_SW()就是一条汇编指令 INT 080H
2、这条指令完成的功能有两个:CPU查找第80H号中断向量;同时保存PC和PSW的值。 ding一下~~~~~~ 8086及后续机就是这样 呵呵,了解,谢谢~~
页:
[1]