Это возможно, но это кажется невероятно утомительным и медленным способом разработки программного обеспечения в сборке в эти дни.
Предполагая, что вы бежите на платформе i386 (системный вызов ABI отличается для каждой платформы), посмотрите на uClibcs Libc/sysdeps/Linux/i386/syscall.S:
.text
.global syscall
.type syscall,%function
syscall:
pushl %ebp
pushl %edi
pushl %esi
pushl %ebx
movl 44(%esp),%ebp /* Load the 6 syscall argument registers */
movl 40(%esp),%edi
movl 36(%esp),%esi
movl 32(%esp),%edx
movl 28(%esp),%ecx
movl 24(%esp),%ebx
movl 20(%esp),%eax /* Load syscall number into %eax. */
int $0x80
popl %ebx
popl %esi
popl %edi
popl %ebp
cmpl $-4095,%eax
jae __syscall_error
ret /* Return to caller. */
.size syscall,.-syscall
Это предполагает все в стек были загружены аргументы syscall, а также номер syscall.
Вы можете найти номера системного вызова в ядрах Linux, включая/asm-generic/unistd.h.
Теперь, когда вы знаете, как звонить на системные вызовы с сборки, вам все равно нужно знать, какие системные вызовы вызывать, конечно. Я бы предложил прочитать на Linux Framebuffer. Взаимодействие с X будет еще сложнее.
для окон http://showmedo.com/videotutorials/video?name=3200020&fromSeriesID=320 – 0x90
+1 для попытки кодирования игры в сборке. :) –