x64汇编系统调用中断

时间:2018-04-20 20:32:56

标签: assembly

8位和16位装配OS是否独立,如何编写独立于OS的x64位汇编?

具体来说,我想跳过基于操作系统的系统调用,并使用像int21h这样的中断(或者在x64汇编上使用中断的特殊特技)等等。在这个例子中是关于如何编写手动系统调用,但我没有得到它。 39h中断吗?

代码:

Manual_WPM proc

mov r10, rcx
mov eax, 39h   ; Syscall Index for WPM (This one is for Win8.1)
syscall
ret

Manual_WPM endp 

end

1 个答案:

答案 0 :(得分:3)

int 21h完全取决于操作系统。它会产生一个"软件中断"这实际上是操作系统的陷阱,用于处理程序编号21(十六进制)的操作系统处理程序。对于DOS,处理程序0x21是Function Dispatcher,它解释调用者的寄存器AH以指定要分派的函数。

我的猜测是,这会在Linux等不同的操作系统上完全不同,但Linux可能保留了一些DOS约定。

这些基于操作系统的系统调用,因此我不确定您要尝试做什么。例如,试图通过回避操作系统来访问硬件是不太可能取得成果的。