syscalls: done with open, write, close syscalls

This commit is contained in:
2025-06-20 23:06:01 +03:00
parent 4ccae473ca
commit bf7d96865a
4 changed files with 88 additions and 32 deletions
BIN
View File
Binary file not shown.
+31 -27
View File
@@ -1,29 +1,33 @@
section .text
global _start ;must be declared for using gcc
_start: ;tell linker entry point
mov edx, len ;message length
mov ecx, msg ;message to write
mov ebx, 1 ;file descriptor (stdout)
mov eax, 4 ;system call number (sys_write)
int 0x80 ;call kernel
mov eax, 1 ;system call number (sys_exit)
int 0x80 ;call kernel
mov eax, 4
mov ebx, 1
mov ecx, msg2
mov edx, len2
int 0x80
mov eax, 1
int 0x80
jmp $
section .data
file_path db '/ebalo/huy.txt', 0 ; Specific file path, null-terminated
message db 'Hello, World from KatauOS!', 10, 0 ; Message to write, with newline
message_len equ $ - message - 1 ; Length of message (14 bytes, excluding null)
msg db 'Hello, world!',0x0 ;our dear string
len equ $ - msg ;length of our dear string
msg2 db 'seems like KatauOS just executed this ELF-file!!',0x0
len2 equ $ - msg2
section .text
global _start
_start:
; Open the file
mov eax, 5 ; System call number for sys_open
mov ebx, file_path ; Pointer to file path
mov ecx, 65 ; Flags: O_WRONLY (1) | O_CREAT (64)
mov edx, 0x1A4 ; Mode: 0644 (rw-r--r--)
int 0x80 ; Invoke system call
mov edi, eax ; Save file descriptor in edi
; Write to the file
mov eax, 4 ; System call number for sys_write
mov ebx, edi ; File descriptor
mov ecx, message ; Pointer to message
mov edx, message_len ; Number of bytes to write
int 0x80 ; Invoke system call
; Close the file
mov eax, 6 ; System call number for sys_close
mov ebx, edi ; File descriptor
int 0x80 ; Invoke system call
; Exit the program
mov eax, 1 ; System call number for sys_exit
xor ebx, ebx ; Return status 0
int 0x80 ; Invoke system call
BIN
View File
Binary file not shown.