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
答案 0 :(得分:3)
int 21h
完全取决于操作系统。它会产生一个"软件中断"这实际上是操作系统的陷阱,用于处理程序编号21(十六进制)的操作系统处理程序。对于DOS,处理程序0x21是Function Dispatcher,它解释调用者的寄存器AH以指定要分派的函数。
我的猜测是,这会在Linux等不同的操作系统上完全不同,但Linux可能保留了一些DOS约定。
这些是基于操作系统的系统调用,因此我不确定您要尝试做什么。例如,试图通过回避操作系统来访问硬件是不太可能取得成果的。