diff --git a/Worksheet_1/README_2.md b/Worksheet_1/README_2.md new file mode 100644 index 0000000000000000000000000000000000000000..82e7c38fe56493e5518969ca649e26948f6fec8b --- /dev/null +++ b/Worksheet_1/README_2.md @@ -0,0 +1,136 @@ + +# 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.