diff --git a/Worksheet2/source/loader.asm b/Worksheet2/source/loader.asm
new file mode 100644
index 0000000000000000000000000000000000000000..c20fc49396d737a4f18a95e4cff2057e7224683f
--- /dev/null
+++ b/Worksheet2/source/loader.asm
@@ -0,0 +1,32 @@
+global loader          ; 
+MAGIC_NUMBER equ 0x1BADB002 ; 
+FLAGS equ 0x0 ; 
+CHECKSUM equ -MAGIC_NUMBER ; 
+extern main ;
+; (magic number + checksum + flags should equal 0)
+
+section .text           ; 
+align 4                 ; 
+
+; Multiboot header
+dd MAGIC_NUMBER        ; 
+dd FLAGS               ; 
+dd CHECKSUM            ;
+
+loader:                 ; 
+    mov eax, 0xCAFEBABE ; 
+.loop:
+    jmp .loop           ; 
+
+; Second part of the code
+    global _start       ; 
+    extern sum_of_three ; 
+
+_start:
+    ; 
+    push dword 3         ; 
+    push dword 2         ; 
+    push dword 1         ;
+    call sum_of_three    ; 
+    hlt                  ; 
+
diff --git a/Worksheet2/source/loader.o b/Worksheet2/source/loader.o
new file mode 100644
index 0000000000000000000000000000000000000000..5b5c1644f300d04eee04e2a2006d7518572bc924
Binary files /dev/null and b/Worksheet2/source/loader.o differ
diff --git a/Worksheet2/source/task2.c b/Worksheet2/source/task2.c
new file mode 100644
index 0000000000000000000000000000000000000000..35075df8cb4690ea7fa60b425503f179c3c7e1ed
--- /dev/null
+++ b/Worksheet2/source/task2.c
@@ -0,0 +1,19 @@
+/* The C function */
+int sum_of_three(int arg1, int arg2, int arg3)
+{
+return arg1 + arg2 + arg3;
+}
+
+int multiply_two(int arg1, int arg2) 
+{
+    return arg1 * arg2;
+}
+
+void main() {
+    int result1 = sum_of_three(1,2,3);
+    int result2 = multiply_two(10,20);
+
+    while (1)
+    {}
+        
+}