kernel/system_call.asm

来源:互联网 发布:笔记本电池校正软件 编辑:程序博客网 时间:2024/06/03 10:04
Code:
  1. ;By Marcus Xing   
  2. ;kernel/system_call.asm   
  3. ;关于系统调用的代码,汇编写成   
  4.   
  5. ;-------------------------------------------------------------------------宏集合   
  6. RESET_FUNCTION_NO           equ     0       ;Reset系统调用的功能号   
  7. WRITE_FUNCTION_NO           equ     1       ;Write系统调用的功能号   
  8. SEND_RECEIVE_FUNCTION_NO    equ     2       ;SendReceive系统调用的功能号   
  9. SYSTEM_CALL_INT_VECTOR      equ     0x90    ;系统调用进入内核的中断向量号   
  10.   
  11. ;---------------------------------------------------------------------global集合   
  12. global  Reset   
  13. global  Write    
  14. global  Send_Receive   
  15.   
  16. [section .text]   
  17. [bits 32]   
  18. ;--------------------------------------------------------------------------Reset   
  19. ;重启,不会返回了   
  20. Reset:   
  21.     mov eax,RESET_FUNCTION_NO   
  22.     int SYSTEM_CALL_INT_VECTOR   
  23.        
  24. ;--------------------------------------------------------------------------Write   
  25. ;把Printf解析好的字符串交给系统调用在调用的进程的控制台打印出来   
  26. Write:   
  27.     mov eax,WRITE_FUNCTION_NO      
  28.     mov edx,[esp + 4]                       ;串地址->edx   
  29.     int SYSTEM_CALL_INT_VECTOR   
  30.     ret   
  31.        
  32. ;-------------------------------------------------------------------Send_Receive   
  33. ;收发消息   
  34. Send_Receive:   
  35.     mov eax,SEND_RECEIVE_FUNCTION_NO   
  36.     mov edx,[esp + 12]                      ;Message指针->edx   
  37.     mov ecx,[esp + 8]                       ;源进程pid->ecx   
  38.     mov edi,[esp + 4]                       ;功能号function->ebx   
  39.     int SYSTEM_CALL_INT_VECTOR   
  40.     ret   
  41.       

 

原创粉丝点击