📄 service_isr.s
字号:
;/** service_isr.s; **; ** Original Author: Kasper Verdich Lund; ** Date: 11.15.99; **; ** Description:; **; ** 0.0.1 11.15.99 Kasper Verdich Lund - (no comments); ** 0.0.2 12.22.99 Guido de Jong - more services implemented; **; ** This program is free software, you can redistribute it and/or; ** modify it under the terms of the GNU General Public License; ** as published by the Free Software Foundation; either version; ** 2 of the License, or (at your option) any later version.; **; ** This program is distributed in the hope that it will be; ** useful, but WITHOUT ANY WARRANTY; without even the implied; ** warranty or MERCHANTABILITY or FITNESS FOR A PARTICULAR; ** PURPOSE. See the GNU General Public License for more; ** details.; **; ** You should have received a copy of the GNU General Public; ** License along with this program; if not, write to the; ** Free Software Foundation, Inc., 59 Temple Place, Suite 330,; ** Boston, MA 02111-1307 USA; **; *********************************************************Apostle OS**/ SECTION .text GLOBAL __SendTo GLOBAL __ReceiveFrom GLOBAL __CallRemote GLOBAL __SendReceive GLOBAL __Unmap GLOBAL __CreateProcess GLOBAL __Exit GLOBAL __ProcessID GLOBAL __Yield GLOBAL __Sleep GLOBAL __EnableMultithreading GLOBAL __DisableMultithreading GLOBAL __service0x90 GLOBAL __service0x91 EXTERN SendTo EXTERN ReceiveFrom EXTERN CallRemote EXTERN SendReceive EXTERN Unmap EXTERN CreateProcess EXTERN Exit EXTERN ProcessID EXTERN Yield EXTERN Sleep EXTERN EnableMultithreading EXTERN DisableMultithreading EXTERN service0x90 EXTERN service0x91 EXTERN halt ALIGN 4__SendTo: push edi push esi push ebp push ebx push ecx push edx push eax mov ax,0x23 mov ds,ax ; reset ds to default call SendTo add esp,+28 ; do not pop regs! iret ALIGN 4__ReceiveFrom: push edi push esi push ebp push ebx push ecx push edx push eax mov ax,0x23 mov ds,ax ; reset ds to default call ReceiveFrom add esp,+28 ; do not pop regs iret ALIGN 4__CallRemote: push edi push esi push ebp push ebx push ecx push edx push eax mov ax,0x23 mov ds,ax ; reset ds to default call CallRemote add esp,+28 ; do not pop regs! iret ALIGN 4__SendReceive: push edi push esi push ebp push ebx push ecx push edx push eax mov ax,0x23 mov ds,ax ; reset ds to default call SendReceive add esp,+28 ; do not pop regs iret ALIGN 4__Unmap: push esi push eax mov ax,0x23 mov ds,ax ; reset ds to default call Unmap add esp,+8 ; do not pop regs iret ALIGN 4__CreateProcess: push esi push eax mov ax,0x23 mov ds,ax ; reset ds to default call CreateProcess add esp,+8 ; do not pop regs iret ALIGN 4__Exit: mov ax,0x23 mov ds,ax ; reset ds to default call Exit iret ALIGN 4__ProcessID: mov ax,0x23 mov ds,ax ; reset ds to default call ProcessID iret ALIGN 4__Yield: push eax push ecx push edx push ebx push ebp push esi push edi mov ax,0x23 mov ds,ax ; reset ds to default call Yield pop edi pop esi pop ebp pop ebx pop edx pop ecx pop eax call halt ; this shouldn't happen :-( ALIGN 4__Sleep: push eax mov ax,0x23 mov ds,ax ; reset ds to default call Sleep add esp,+4 ; do not pop regs iret ALIGN 4__EnableMultithreading: pusha mov ax,0x23 mov ds,ax ; reset ds to default call EnableMultithreading popa iret ALIGN 4__DisableMultithreading: mov ax,0x23 mov ds,ax ; reset ds to default call DisableMultithreading iret ALIGN 4__service0x90: mov ax,0x23 mov ds,ax ; reset ds to default call service0x90 iret ALIGN 4__service0x91: mov ax,0x23 mov ds,ax ; reset ds to default call service0x91 iret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -