高分悬赏INT 与 CALL FAR指令的区别?

2025-01-01 10:57:17
推荐回答(1个)
回答1:

CALL FAR 段间直接调用
执行操作:① (SP) ← (SP)-2,((SP)) ← (CS)当前
(SP) ← (SP)-2,((SP)) ← (IP)当前
② (IP) ← 偏移地址(在指令的第2、3个字节中)
(CS) ← 段地址(在指令的第4、5个字节中)

INT n 中断指令(interrupt),n为中断类型号
执行操作:① 入栈保存FLAGS:(SP) ← (SP)-2,((SP)) ← (FLAGS)
② 入栈保存返回地址:(SP) ← (SP)-2,((SP)) ← (CS)
(SP) ← (SP)-2,((SP)) ← (IP)
③ 转中断处理程序:(IP) ← (n×4)
(CS) ← (n×4+2)
CALL FAR 远调用
远调用适用于调用程序(也称为主程序)和子程序不在同一段中的情况,所以也叫做段间调用。和近调用指令一样,远调用指令中的寻址方式也可用直接方式和间接方式。

INT虽然也是一种远调用,但一般只用于调用中断例行程序(又称中断服务程序)。执行中断指令时,首先要入栈保存调用程序执行的现场,即当时的标志寄存器的值和断点的地址,然后,根据中断类型号(n×4)到中断向量表中取得中断例行程序的入口地址,分别送给IP和CS,以实现调用中断例行程序的功能。
并且INT指令执行后,把IF和TF置0,但不影响其它标志位。