diff --git a/Worksheet_1/README.md b/Worksheet_1/README.md
index 6b75544748066ccf8fcbe89606473b3164bcfbc1..0bc8c47e23f9ed8e2fc07e4eaf0d9a8e5056991b 100644
--- a/Worksheet_1/README.md
+++ b/Worksheet_1/README.md
@@ -73,44 +73,210 @@ apt install -y libc6-dev
      ```
 ---
 
-## Tasks and Implementations
 
-### Task 1: Adding Two Integers
+# Tasks: Detailed Code Explanations
+
+## Task 1: Adding Two Integers
 - **File**: `task1.asm`
-- **Description**: This task involves writing an assembly program that:
-  1. Adds two integers stored in global memory.
-  2. Prints the result using the helper function `print_int`.
+- **Description**: This task adds two integers stored in global memory and prints the result.
+
+### Code Explanation:
+
+#### Defining Variables:
+```assembly
+SECTION .data
+num1 dd 5           ; First integer
+num2 dd 10          ; Second integer
+result dd 0         ; Memory location to store the result
+```
+- Defines two integers, `num1` and `num2`, with initial values.
+- Allocates a memory location for `result` to store the sum.
+
+#### Main Logic:
+```assembly
+mov eax, [num1]     ; Load num1 into register eax
+add eax, [num2]     ; Add num2 to eax
+mov [result], eax   ; Store the result in memory
+```
+- Loads `num1` into the `eax` register.
+- Adds `num2` to the value in `eax`.
+- Stores the result back into the `result` memory location.
+
+#### Printing the Result:
+```assembly
+push dword [result]
+call _print_int
+```
+- Pushes the value of `result` onto the stack.
+- Calls the `_print_int` function to display the result.
 
-#### How to Run:
-1. Compile and link:
+#### How to Compile and Run:
+1. Compile the assembly file:
    ```bash
-   make task1
+   nasm -f elf32 src/task1.asm -o task1.o
    ```
-2. Run the program:
+2. Link with `driver.o` and `print_int.o`:
+   ```bash
+   gcc -m32 task1.o src/driver.o src/print_int.o -o src/task1
+   ```
+3. Run the executable:
    ```bash
    ./src/task1
    ```
+# Task 1 Output: Assembly Programming with Docker Integration
+
+## Screenshot and Explanation
+
+**Description**: This screenshot demonstrates the result of Task 1, where two integers (`10` and `20`) are added using assembly code. The result (`30`) is displayed in the terminal.
+
+![Task 1 Output](Screenshot%202024-12-04%20at%201.51.07%20AM.png)
 
 ---
 
-### Task 2: Loops and Conditionals
+## Task 2: Loops and Conditionals
 - **File**: `task2.asm`
-- **Description**: This task involves implementing:
-  1. A loop to sum an array of integers.
-  2. User input validation (e.g., checking if a number is between 50 and 100).
+- **Description**: Implements a loop to sum an array of integers and validates user input.
 
-#### How to Run:
-1. Compile and link:
+### Code Explanation:
+
+#### Defining Variables:
+```assembly
+SECTION .data
+array dd 1, 2, 3, 4, 5  ; Array of integers
+length equ 5             ; Length of the array
+sum dd 0                 ; To store the sum
+```
+- Defines an array of integers `array`.
+- Uses `length` to store the size of the array.
+- Allocates a memory location for `sum` to store the total.
+
+#### Summing the Array:
+```assembly
+mov ecx, length      ; Set loop counter
+xor eax, eax         ; Clear accumulator
+xor edi, edi         ; Array index
+sum_loop:
+    add eax, [array + edi*4] ; Add array element to eax
+    inc edi                  ; Increment index
+    loop sum_loop            ; Decrement ecx and repeat
+mov [sum], eax       ; Store the sum in memory
+```
+- Initializes the loop counter with the array length.
+- Iterates through the array, adding each element to `eax`.
+- Stores the total in `sum`.
+
+#### Validating Input:
+```assembly
+cmp eax, 50
+jl invalid_input
+cmp eax, 100
+jg invalid_input
+```
+- Compares the total with a valid range (50 to 100).
+- Jumps to `invalid_input` if the total is out of range.
+
+#### Printing the Sum:
+```assembly
+push dword [sum]
+call _print_int
+```
+- Pushes the value of `sum` onto the stack.
+- Calls the `_print_int` function to display the sum.
+
+#### How to Compile and Run:
+1. Compile the assembly file:
+   ```bash
+   nasm -f elf32 src/task2.asm -o task2.o
+   ```
+2. Link with `driver.o`:
    ```bash
-   make task2
+   gcc -m32 task2.o driver.o asm_io.o -o task2
    ```
-2. Run the program:
+3. Run the executable:
    ```bash
    ./src/task2
    ```
 
+# Task 2 Output
+
+## Screenshot of Task 2
+The following screenshot demonstrates the successful execution of Task 2. It showcases the program's ability to validate user input and sum an array of integers within a specified range.
+
+![Task 2 Output](Screenshot_2024-12-04_at_1.55.58_AM.png)
+
+## Explanation
+In Task 2, the program performs two main functions:
+1. Validates user input to ensure the entered number is within a specified range (50–100).
+2. Sums integers from an array and displays the result.
+
 ---
 
+### Task 3: Loops and Conditionals
+- **File**: `task3.asm`
+- **Description**: This task sums integers within a specified range using loops in assembly.
+ It calculates the total sum of all numbers between two user-provided inputs.
+
+#### Defining Variables:
+1. Compile the assembly file:
+   ```bash
+   SECTION .data
+   start dd 0           ; Start of the range
+  end dd 0             ; End of the range
+  total dd 0           ; Total sum of the range
+
+   ```
+-Defines memory locations for the start and end of the range, as well as the total sum.
+
+2. Main Logic:
+   ```assembly
+  mov eax, [start]     ; Load the start value
+  mov ecx, [end]       ; Load the end value
+  xor edx, edx         ; Clear the total
+  sum_loop:
+      add edx, eax     ; Add the current number to the total
+      inc eax          ; Increment to the next number
+      cmp eax, ecx     ; Compare current with end
+      jle sum_loop     ; If less or equal, continue
+  mov [total], edx     ; Store the total sum in memory
+
+   ```
+Uses a loop to add all integers between start and end inclusively.
+3. Printing the Total Sum:
+   ```assembly
+  push dword [total]
+  call _print_int
+
+   ```
+-Defines memory locations for the start and end of the range, as well as the total sum.
+
+#### How to Compile and Run:
+1. Compile the assembly file:
+   ```bash
+   nasm -f elf32 src/task3.asm -o task3.o
+   ```
+2. Link with driver.o to create the executable:
+   ```bash
+   gcc -m32 task3.o driver.o asm_io.o -o task3
+   ```
+3. Run the program:
+   ```bash
+   ./src/task3
+   ```
+# Task 3 Output
+
+## Screenshot of Task 3
+The following screenshot demonstrates the successful execution of Task 3. It shows the program prompting the user to enter the size of an array and values one by one. It calculates the maximum, minimum, and sum of all values.
+
+![Task 3 Output](Screenshot_2024-12-04_at_3.13.24_AM.png)
+
+## Explanation
+In Task 3, the program performs the following operations:
+1. Prompts the user to enter the size of an array.
+2. Accepts individual integers to populate the array.
+3. Computes the maximum, minimum, and sum of the array values.
+4. Displays the results.
+
+---
 ## Project Structure
 
 ```
diff --git a/Worksheet_1/README_2.md b/Worksheet_1/README_2.md
deleted file mode 100644
index 82e7c38fe56493e5518969ca649e26948f6fec8b..0000000000000000000000000000000000000000
--- a/Worksheet_1/README_2.md
+++ /dev/null
@@ -1,136 +0,0 @@
-
-# Worksheet 1: Assembly Programming with Docker Integration
-
-This project is part of the **Worksheet 1** task, focusing on assembly programming and integration with Docker for build and run processes. Due to connectivity issues with `csctcloud`, Docker was used as a workaround to set up a Linux environment directly from Visual Studio Code. This approach allowed for seamless development, testing, and debugging of assembly programs.
-
----
-
-## Project Overview
-
-This repository contains assembly language programs and supporting files to demonstrate basic programming concepts in assembly language. The workflow involves:
-- Writing assembly code.
-- Integrating it with C for execution.
-- Automating builds with a `Makefile`.
-- Running the tasks in a containerized Linux environment using Docker.
-
----
-
-## Docker Integration
-
-### Why Docker?
-`csctcloud` environment was unavailable due to connectivity issues. To continue working efficiently, Docker was used to:
-- Set up a 32-bit Linux environment required for assembly programming.
-- Provide a consistent environment directly accessible through Visual Studio Code for editing, building, and running tasks.
-
-### Using Docker
-1. **Build the Docker Image**:
-   ```bash
-   docker build -t asm_project .
-   ```
-   - Creates a Docker image with all necessary tools installed (NASM, GCC, Make, etc.).
-
-2. **Run the Docker Container**:
-   ```bash
-   docker run -it --rm -v $(pwd):/workspace -w /workspace asm_project
-   ```
-   - Starts a container with the current project directory mounted for access inside the container.
-
-3. **Inside the Container**:
-   - Compile all tasks:
-     ```bash
-     make
-     ```
-   - Run each task:
-     - Task 1:
-       ```bash
-       ./src/task1
-       ```
-     - Task 2:
-       ```bash
-       ./src/task2
-       ```
-     - Task 3:
-       ```bash
-       ./src/task3
-       ```
-   - Clean up object files and executables:
-     ```bash
-     make clean
-     ```
-
----
-
-## Project Structure
-
-```
-worksheet_1/
-├── README.md         # Project documentation
-├── Makefile          # Automates the build process
-├── Dockerfile        # Configures the Linux environment
-├── src/              # Directory containing all source files
-│   ├── asm_io.asm    # Provided Assembly IO code
-│   ├── asm_io.inc    # Provided IO include file
-│   ├── driver.c      # Main C program calling assembly functions
-│   ├── print_int.c   # Helper C program for printing integers
-│   ├── task1.asm     # Assembly code for Task 1
-│   ├── task2.asm     # Assembly code for Task 2
-│   ├── task3.asm     # Assembly code for Task 3
-```
-
----
-
-## Screenshots and Outputs
-
-To fulfill the documentation requirements, include screenshots of:
-1. **Task 1 Output**: Showing the result of adding two integers.
-2. **Task 2 Output**: Demonstrating user input validation and array summation.
-3. **Task 3 Build**: Displaying the successful build process using the `Makefile`.
-
-Include brief explanations for each screenshot.
-
----
-
-## How to Run Locally (Optional)
-
-If not using Docker, you can also run the project on a local Linux machine:
-1. **Install the necessary tools**:
-   ```bash
-   sudo apt update
-   sudo apt install nasm gcc make
-   ```
-2. **Compile the tasks**:
-   ```bash
-   make
-   ```
-3. **Run each task**:
-   - Task 1:
-     ```bash
-     ./src/task1
-     ```
-   - Task 2:
-     ```bash
-     ./src/task2
-     ```
-   - Task 3:
-     ```bash
-     ./src/task3
-     ```
-
----
-
-## Authors
-
-- Hazal Veziroglu
-
----
-
-## License
-
-This project is licensed under the MIT License. See the `LICENSE` file for details.
-
----
-
-## Acknowledgments
-
-- UWE Course Material on Assembly Programming.
-- Online assembly programming resources and communities.
diff --git a/Worksheet_1/asm_io.o b/Worksheet_1/asm_io.o
new file mode 100644
index 0000000000000000000000000000000000000000..e248916a2951ceb632a476cd1fb26cc61bb52a13
Binary files /dev/null and b/Worksheet_1/asm_io.o differ
diff --git a/Worksheet_1/src/driver.o b/Worksheet_1/driver.o
similarity index 100%
rename from Worksheet_1/src/driver.o
rename to Worksheet_1/driver.o
diff --git a/Worksheet_1/src/print_int.o b/Worksheet_1/print_int.o
similarity index 100%
rename from Worksheet_1/src/print_int.o
rename to Worksheet_1/print_int.o
diff --git a/Worksheet_1/src/asm_io.asm b/Worksheet_1/src/asm_io.asm
index 96c5e4993668355f44c85af5999d640a41c0ec84..b9b46f6282ea1433dd7218dff8c061a4cf09b96a 100644
--- a/Worksheet_1/src/asm_io.asm
+++ b/Worksheet_1/src/asm_io.asm
@@ -499,4 +499,6 @@ cont_tag_loop:
 	popf
 	popa
 	leave
-	ret	4
\ No newline at end of file
+	ret	4
+
+section .note.GNU-stack noalloc noexec nowrite progbits
diff --git a/Worksheet_1/src/asm_io.o b/Worksheet_1/src/asm_io.o
deleted file mode 100644
index d2921f0c774600089db73d581638199c58d10228..0000000000000000000000000000000000000000
Binary files a/Worksheet_1/src/asm_io.o and /dev/null differ
diff --git a/Worksheet_1/src/task2.asm b/Worksheet_1/src/task2.asm
index 841981a96bb0c7c95cc8adde58d1876bc91a42d5..f124a38eca2dfdcad55985d547d1aa6a6898d7bd 100644
--- a/Worksheet_1/src/task2.asm
+++ b/Worksheet_1/src/task2.asm
@@ -20,9 +20,9 @@ section .bss
     range_sum resd 1
 
 section .text
-    global main
+    global _asm_main
 
-main:
+_asm_main:
     ; Prompt for and read user name
     mov eax, prompt_name
     call print_string
@@ -130,3 +130,4 @@ read_char_loop:
 end_read_name:
     mov byte [edi], 0       ; Null-terminate the string
     ret
+section .note.GNU-stack noalloc noexec nowrite progbits
diff --git a/Worksheet_1/src/task2.o b/Worksheet_1/src/task2.o
deleted file mode 100644
index 1350a839d50964848196e916937d40860000b6cb..0000000000000000000000000000000000000000
Binary files a/Worksheet_1/src/task2.o and /dev/null differ
diff --git a/Worksheet_1/src/task3.asm b/Worksheet_1/src/task3.asm
index 8846cb9ba96f08433b607216b99d61c4d662cec7..ed42fccdfe19371a4a1d599af165f41be108fa84 100644
--- a/Worksheet_1/src/task3.asm
+++ b/Worksheet_1/src/task3.asm
@@ -16,9 +16,9 @@ section .bss
     total resd 1        ; Store the sum of the array elements
 
 section .text
-    global main
+    global _asm_main
 
-main:
+_asm_main:
     ; Prompt user for array size
     mov eax, prompt_size
     call print_string
@@ -93,6 +93,7 @@ sum_loop:
     inc edi
     loop sum_loop
     mov [total], eax
-    ret
+    ret   
+section .note.GNU-stack noalloc noexec nowrite progbits
 
 
diff --git a/Worksheet_1/src/task3.o b/Worksheet_1/src/task3.o
deleted file mode 100644
index 82d98d4c2bf567bc1b89f1f5b354fa9ad290bb0d..0000000000000000000000000000000000000000
Binary files a/Worksheet_1/src/task3.o and /dev/null differ
diff --git a/Worksheet_1/src/task1 b/Worksheet_1/task1
similarity index 68%
rename from Worksheet_1/src/task1
rename to Worksheet_1/task1
index 88a523743d9b9167a35ac9ede884eca3220a38f2..1d221cc992064e61813f168e01cd3336c813737b 100644
Binary files a/Worksheet_1/src/task1 and b/Worksheet_1/task1 differ
diff --git a/Worksheet_1/src/task1.o b/Worksheet_1/task1.o
similarity index 66%
rename from Worksheet_1/src/task1.o
rename to Worksheet_1/task1.o
index 0fdf34bad3608b40d06e60add49bf528077429b4..6a7a4269940ae6b09753eee291b9fb071e4a0b8d 100644
Binary files a/Worksheet_1/src/task1.o and b/Worksheet_1/task1.o differ
diff --git a/Worksheet_1/src/task2 b/Worksheet_1/task2
similarity index 51%
rename from Worksheet_1/src/task2
rename to Worksheet_1/task2
index 46d2d578c808f6fe51cb84355814143a0094b4c5..c49fc7e86669300ab26b842fa868822260757a24 100644
Binary files a/Worksheet_1/src/task2 and b/Worksheet_1/task2 differ
diff --git a/Worksheet_1/task2.o b/Worksheet_1/task2.o
new file mode 100644
index 0000000000000000000000000000000000000000..729f3797fae73c0f128fb7d0fcc4863424f71882
Binary files /dev/null and b/Worksheet_1/task2.o differ
diff --git a/Worksheet_1/src/task3 b/Worksheet_1/task3
similarity index 53%
rename from Worksheet_1/src/task3
rename to Worksheet_1/task3
index 875aa5b4cd87366df0cf448446624b48bddae443..ea2533f331c34a404d87e47704b91fd2fcfdf2fb 100644
Binary files a/Worksheet_1/src/task3 and b/Worksheet_1/task3 differ
diff --git a/Worksheet_1/task3.o b/Worksheet_1/task3.o
new file mode 100644
index 0000000000000000000000000000000000000000..7dfc7551e6fa30642e85cea7eb702e6b5a6c007e
Binary files /dev/null and b/Worksheet_1/task3.o differ