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) + {} + +}