kernel/system_call.asm

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.       

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值