dsp20tlh 发表于 2006-5-22 20:46:01

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的当前值的功能啊?

很是不理解,望高手指点!谢谢~~~~~~~~~~~~~~~

cock 发表于 2006-5-22 22:56:17

这是任务切换,保存当前任务环境,装入操作系统指定的下一个任务环境,用ret实现任务切换。

SW7005 发表于 2006-5-23 08:57:34

cock 发表于 2006-5-23 10:22:48

再细说一下。

8086中 INT80,是一个软件中断,执行的结果,CPU查找第80H号中断向量,按中断向量提供的地址执行一个长调用。在调用过程中,PC和PSW已保存,其它要保存的寄存器,应在中断程序中处理。如果是单片机如AVR系列、80C196,直接把OS_TASK_SW()用对应的程序替代即可.

dsp20tlh 发表于 2006-5-23 14:23:02

多谢cock的答复。

从你的回答中我是这么理解的,不知道对不对:

1、宏OS_TASK_SW()就是一条汇编指令 INT 080H

2、这条指令完成的功能有两个:CPU查找第80H号中断向量;同时保存PC和PSW的值。

dsp20tlh 发表于 2006-5-23 18:17:06

ding一下~~~~~~

cock 发表于 2006-5-24 00:48:13

8086及后续机就是这样

dsp20tlh 发表于 2006-5-24 16:15:44

呵呵,了解,谢谢~~
页: [1]
查看完整版本: ucosII中的一个疑问:宏OS_TASK_SW()实现的功能是什么?