From 0a383f6a24bd0ff7d7ddca316c6a45583fcca823 Mon Sep 17 00:00:00 2001
From: Daniel Kibblewhite <daniel2.kibblewhite@live.uwe.ac.uk>
Date: Wed, 13 Nov 2024 10:31:11 +0000
Subject: [PATCH] updated task2 complete nearly finished md file

---
 ws1/README.md                            |  79 +++++++++++++++++++++
 ws1/src/task2.asm                        |  86 -----------------------
 ws1/src/{task2_test => task2}/asm_io.asm |   0
 ws1/src/{task2_test => task2}/asm_io.inc |   0
 ws1/src/task2/asm_io.o                   | Bin 0 -> 3648 bytes
 ws1/src/task2/driver.c                   |   7 ++
 ws1/src/task2/driver.o                   | Bin 0 -> 1348 bytes
 ws1/src/task2/task2                      | Bin 0 -> 18468 bytes
 ws1/src/{task2_test => task2}/task2.asm  |   0
 ws1/src/task2/task2.o                    | Bin 0 -> 2464 bytes
 ws1/src/task2_test/driver.c              |   6 --
 ws1/test.md                              |   3 -
 12 files changed, 86 insertions(+), 95 deletions(-)
 delete mode 100644 ws1/src/task2.asm
 rename ws1/src/{task2_test => task2}/asm_io.asm (100%)
 rename ws1/src/{task2_test => task2}/asm_io.inc (100%)
 create mode 100644 ws1/src/task2/asm_io.o
 create mode 100644 ws1/src/task2/driver.c
 create mode 100644 ws1/src/task2/driver.o
 create mode 100755 ws1/src/task2/task2
 rename ws1/src/{task2_test => task2}/task2.asm (100%)
 create mode 100644 ws1/src/task2/task2.o
 delete mode 100644 ws1/src/task2_test/driver.c
 delete mode 100644 ws1/test.md

diff --git a/ws1/README.md b/ws1/README.md
index e69de29..5d66745 100644
--- a/ws1/README.md
+++ b/ws1/README.md
@@ -0,0 +1,79 @@
+# Task 2 Documentation
+
+## Overview
+
+This document details the creation of an assembly program that prompts the user for their name and the number of times to print a welcome message. The program subsequently validates the input and performs various operations, including summing elements in an array.
+
+## Build Process
+
+### 1. Initial Setup
+
+Initially, I created a directory named `src`, where I stored the necessary files for the project, including:
+- `asm_io.asm`
+- `asm_io.inc`
+- `task2.asm`
+- `driver.c`
+
+Note that from task 1 we were already given the `asm_io.asm` & `asm_io.inc` & `driver.c` so it is just making the new assembler langauage work with the rest of the files already presented. 
+
+### 2. Requirements
+
+The assembly program is designed to accomplish the following objectives:
+
+1. Request the user's name.
+2. Ask for a number to specify how many times the welcome message should be printed, ensuring it falls between 50 and 100.
+3. Print the welcome message the designated number of times.
+4. Define and initialise an array of 100 integers with values from 1 to 100.
+5. Calculate and display the total sum of the array's elements.
+6. Prompt the user for a valid range (start and end) to sum the elements within the array.
+
+### 2. Now the fun bit...(not) coding !!
+
+### Task 2: Extending the Functionality
+
+In `task2.asm`, I incorporated loops, conditionals, and array operations as outlined in the PC Assembly Language book. The program now prompts the user for their name and the number of times to print a welcome message, validating that the input number is within the specified range.
+
+### Key parts of the task
+
+- **Welcome Message Programme**: 
+  The program prompts for the user’s name and counts how many times to print the welcome message.
+
+   ```asm
+    welcome_msg db "Hello Thanks for playing - may the odds ever be in your favour, ", 0 ; Welcome message string
+    prompt_name db "Please enter your Name (mine is Bob): ", 0 ; Prompt message for entering name
+    prompt_count db "Enter number of times to print (between 50 and 100): ", 0 ; Prompt for number of repetitions
+
+- **How to Handle Errors**:
+After prompting the user for the number of times to print the welcome message, the program should check if the input is within the specified range (50–100). If the input is invalid (less than 50 or greater than 100), the program should print an error message and return or exit instead of proceeding.
+
+  ```asm
+  ; --- Validating count ---
+  mov eax, [count] ; Move count into EAX for validation
+  cmp eax, 50 ; Compare count with 50
+  jl display_error ; Jump to error if less than 50
+  cmp eax, 100 ; Compare count with 100
+  jg display_error ; Jump to error if greater than 100
+
+- **Array Summing Programme**:
+  - Defined an array of 100 elements initialised with values from 1 to 100.
+  - Calculated and displayed the total sum of the array.
+
+- **Range-Specific Sum**: 
+  Extended the functionality to ask the user for a start and end range. The program validates the range before summing the elements within those limits and outputs the result.
+
+
+#### Task 3: Setting Up the Program
+
+Based on the assembly build process from Task1, I updated this to include task 2 - from here i was then able to create a make file to create all of the task using one commnd make
+
+To build the initial assembly project (`task2`), I used the following commands:
+
+```bash
+nasm -f elf task2.asm -o task2.o              # Assemble the assembly file
+nasm -f elf asm_io.asm -o asm_io.o            # Assemble the I/O library
+gcc -m32 -c driver.c -o driver.o              # Compile the C driver
+gcc -m32 driver.o task2.o asm_io.o -o task2   # Link to create the executable
+
+Because this is then set up to be able to run the command task2 we now use the command 
+```bash
+./task2
\ No newline at end of file
diff --git a/ws1/src/task2.asm b/ws1/src/task2.asm
deleted file mode 100644
index 612195c..0000000
--- a/ws1/src/task2.asm
+++ /dev/null
@@ -1,86 +0,0 @@
-%include "asm_io.inc"
-
-section .bss
-    name resb 50                  ; Reserve space for the name (max 50 characters)
-    count resb 4                  ; Space to store the count (4 bytes)
-
-section .text
-    global _start
-
-_start:
-    ; Prompt for name
-    mov eax, 4                    ; syscall: sys_write
-    mov ebx, 1                    ; file descriptor: stdout
-    mov ecx, promptName           ; message: "Enter your name: "
-    mov edx, promptNameLen        ; message length
-    int 0x80                      ; call kernel
-
-    ; Read name from user
-    mov eax, 3                    ; syscall: sys_read
-    mov ebx, 0                    ; file descriptor: stdin
-    mov ecx, name                 ; buffer
-    mov edx, 50                   ; number of bytes to read
-    int 0x80                      ; call kernel
-
-    ; Prompt for number of times to print welcome message
-    mov eax, 4                    ; syscall: sys_write
-    mov ebx, 1                    ; file descriptor: stdout
-    mov ecx, promptCount          ; message: "Enter number of times (51-99): "
-    mov edx, promptCountLen       ; message length
-    int 0x80                      ; call kernel
-
-    ; Read number of times from user (buffer for 4 bytes)
-    mov eax, 3                    ; syscall: sys_read
-    mov ebx, 0                    ; file descriptor: stdin
-    mov ecx, count                ; buffer
-    mov edx, 4                    ; number of bytes to read
-    int 0x80                      ; call kernel
-
-    ; Convert input string to integer (assumes input is in ASCII)
-    mov eax, [count]              ; get input value (in ASCII)
-    sub eax, '0'                  ; convert ASCII to integer (this setup assumes single digit input)
-
-    ; Validate the input
-    cmp eax, 51
-    jl print_error                ; If less than 51, jump to error
-    cmp eax, 99
-    jg print_error                ; If greater than 99, jump to error
-
-    ; Repeat welcome message
-    mov ebx, eax                  ; Store the count in EBX for the loop
-print_welcome:
-    mov eax, 4                    ; syscall: sys_write
-    mov ecx, welcomeMsg           ; message: "Welcome to the program!"
-    mov edx, welcomeMsgLen        ; message length
-    int 0x80                      ; call kernel
-
-    dec ebx                        ; Decrement the counter
-    jnz print_welcome             ; Loop until counter is zero
-
-    ; Exit program
-    mov eax, 1                    ; syscall: sys_exit
-    xor ebx, ebx                  ; status: 0
-    int 0x80                      ; call kernel
-
-print_error:
-    ; Print error message
-    mov eax, 4                    ; syscall: sys_write
-    mov ebx, 1                    ; file descriptor: stdout
-    mov ecx, errorMsg             ; message: "Error: Number must be between 51 and 99"
-    mov edx, errorMsgLen          ; message length
-    int 0x80                      ; call kernel
-
-    ; Exit program
-    mov eax, 1                    ; syscall: sys_exit
-    xor ebx, ebx                  ; status: 0
-    int 0x80                      ; call kernel
-
-section .data
-    promptName db "Enter your name: ", 0
-    promptNameLen equ $ - promptName
-    promptCount db "Enter number of times (51-99): ", 0
-    promptCountLen equ $ - promptCount
-    welcomeMsg db "Welcome to the program!", 10
-    welcomeMsgLen equ $ - welcomeMsg
-    errorMsg db "Error: Number must be between 51 and 99", 10
-    errorMsgLen equ $ - errorMsg
diff --git a/ws1/src/task2_test/asm_io.asm b/ws1/src/task2/asm_io.asm
similarity index 100%
rename from ws1/src/task2_test/asm_io.asm
rename to ws1/src/task2/asm_io.asm
diff --git a/ws1/src/task2_test/asm_io.inc b/ws1/src/task2/asm_io.inc
similarity index 100%
rename from ws1/src/task2_test/asm_io.inc
rename to ws1/src/task2/asm_io.inc
diff --git a/ws1/src/task2/asm_io.o b/ws1/src/task2/asm_io.o
new file mode 100644
index 0000000000000000000000000000000000000000..d2921f0c774600089db73d581638199c58d10228
GIT binary patch
literal 3648
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
I%7+Co060G;Hvj+t

literal 0
HcmV?d00001

diff --git a/ws1/src/task2/driver.c b/ws1/src/task2/driver.c
new file mode 100644
index 0000000..87c08b2
--- /dev/null
+++ b/ws1/src/task2/driver.c
@@ -0,0 +1,7 @@
+extern int asm_main(void);  // Declare the asm_main function
+
+int main() {
+    int ret_status;
+    ret_status = asm_main();  // Call the assembly function
+    return ret_status;        // Return its status
+}
diff --git a/ws1/src/task2/driver.o b/ws1/src/task2/driver.o
new file mode 100644
index 0000000000000000000000000000000000000000..d9c964d5c502ff05525b278dcc90cc8150982da0
GIT binary patch
literal 1348
zcmb<-^>JflWMqH=Mh0dE1doB?4HHDh1Wai#@H6m%<=Ge*7(VmM{SNJX8r=NkL-QMf
z7k~c$|IZ52+j$tw?sQS%=?3B0KPL}&v#1<qaCdgLQqTxZD$Oe?Rj|}E(KFCBECurn
z>x>Na3{3QlG$G;)EDQ_`JPZsBtPBhc?tY;RObiSMKw``c3=AS*w=gg;Rs}II)^IRN
z^RTdVFfuSGFfcI4K;?8mv@0J+E0Ys1t9vtZ?9szKEG!HR0t^fc4j?%O2CyAaCJF`e
z15AL0;p2Z88$>gMTmoW1F*BMe%wQKoB^ekPm>EDJh0NzbaKQ4MXnZa-K06wpk--Wo
z0`j8}0}}(X4k0Esa5zAffc<L*<1j${&yZ4-S(aL)m&_0!UtwXUm!4V@UyvMMl2MwM
zt(REA5by5e@8swc@9*Xo>>3gu;^^e#8qbheoEx8;n3>1Gz|X+Iz{CTI2QFR)25C@O
z@<GC%iHU*11tbrOIKAS^+>*p32EF2vA_$!UV-=<5=#`{alrZR}B$gyH=p_{wGk^v3
zu)9ewIX^cyHLrw0FE76&RnOfoRJXV!F*zH`PtPmWD=5k@NG&R<WY7Z{o|+M#R+N~V
z%Al8ClwVqa6a)mBZ43+yf=H@BX&)48p!5jBpmYer@(c{{yZ};e!@$4*iW3kUgkk9j
z6h5F>hNU|bCI$uxX!-_aFOXRv^Hrhdfzmige+Gy^!Z7o+85kHq>ItbcfSSh!vV?(w
z0c0M?E|`%p^L(J{K<YtqIavGwQX2|Y2T}vVGe86q2B`sYQyCZ-K&cjLEdxj$EMJ1;
zVQ#2_ng>(2g@J(~0HgqlVd^Rv7#NVl&xZ+;jzMt&O8X#npzr|M4>Jp71Pdbr!v_Wi
x23`gR25wLqg{FUyS+KAJsr$mnz+ewzKrzT15EGOJkk!R7F);LkB%m0k4gjTwhcW;F

literal 0
HcmV?d00001

diff --git a/ws1/src/task2/task2 b/ws1/src/task2/task2
new file mode 100755
index 0000000000000000000000000000000000000000..65be89037b0674a5f9b025f087ea54389d2bc985
GIT binary patch
literal 18468
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
Qb#t8<82*4HpctkO095i*D*ylh

literal 0
HcmV?d00001

diff --git a/ws1/src/task2_test/task2.asm b/ws1/src/task2/task2.asm
similarity index 100%
rename from ws1/src/task2_test/task2.asm
rename to ws1/src/task2/task2.asm
diff --git a/ws1/src/task2/task2.o b/ws1/src/task2/task2.o
new file mode 100644
index 0000000000000000000000000000000000000000..a81999e9eadc9848be5a1526d505734e202fe034
GIT binary patch
literal 2464
zcmb<-^>JflWMqH=Mh0dE1doBi0V-hvrZpHi7+An8QVEcmAj}Na*ucoZ5C#%}@?oa3
zGcYi4FfcH{)IDHgVAzL69S;Ko*qv-p{UCJ)Na_Tj;zCGffrJED7#Pez3@C<akzrt9
zV1kN)r~noQh5{xA29Wt6IgtB6W~!i>cYuw7VFt_)sGC6gbr={JI6(|3PT*i*uwZ0h
zV1?=jnFsQxM`}(^zCuVwVqSK!LRx;2LP1VqWoBNwg04btVx>Y!Myf)7O0hy}S!$6&
zQmR5`o<e1QX^}!&Vp)D^k&XgGKu&66ajHUUUP)>ZM9MEQH&sC+H#09)A+uP)DL+Zm
zN`b)@ET31Jo0M9lke{Ydl9`)YtWc7#P*9YaSE8Vilv+}rnwqCzYM_vqm!e>3V1UpC
zazk-RVo?cLV@9e%QDR<ts)B|gNI!<k)VvgY>WYf;i>wqp^U4x)GE*QX=`n<4q$(7b
z=7RJ=oLCI<D9B!jRhh*gFF>^VLHv+gT3iAO5KM>bF>pb{97HAT0Hxp;fBygfzaPZk
zDaXLTU~m8|V8d0yyz0@HW9$q&(is>Sz+zxxF-Xxu5Yha@h`;9`0|P_zj}-p?9SjT%
zod-cAL@|N|*7oS>&J+d)h8>{fuv-bFmf4~CFpFpNPlnPjJLaNVv5k>|VaIV)v0aP|
z3=2UL%|94x;=5%*{N~>&^&yrw>H|6tdO}1r4?FJyd8OADWCycIzoU2Q&rZ=zAOl$$
zq5fD1;(}cTCK3<t(1J;U1zz*-c#mRvBG@yB8T3*TOA;CMl8TEN^h#1IN*MHtGm1-!
zN)nS8^olEUAvBa<l$rxk19A>_3<?XF3=6}@|1dU)MlESTc^)|jg80k~jUa_^%*fEo
zfGCqdCBRGu1_n^%L6k5uEMs6`0EIM+znOu70TjwG{yqi<29U>L{BsNp44^=R@$WJ)
zFn~e|#(&Phzz_oW1S67OkP0S-FANL}po9YAfl82H3=9mQXo2xTg%l_%V0;!v1_n?J
z!}tP>3=E)XhVhjd85qPN9B@ft#K^#)jKp_iWMBwJ;)C2)i^NZ5WMFuR#Ls7BVBmzi
zpP8YSk%2)9iQmb{z@Ul5=Z5QLU;veOB4~VsUm^0^X!53Ld{FL#34zS>gmD-k`oq!q
zpbP{P0;w;8aiHoEZU^aSW?(2uEY3F4ODxW1C`wICiO<X{VE~tDNUY+LqRhN>h<tKJ
zVi8mU5;HG{p|~_DKBY9bAigLyy%@pEP0dB(B$i|#c*P}&$=M9$sX58{xvBBF#pw(M
zMfte}CGmNQxv4OAa(*e;MPLbVDGHNG%}Zeb7jN;Yppp%2Kyhhqd{Js~X-)~4i;&1m
zEzil!OJx8X4KXvZs3@_Lp|~`c0c>nM*er(Byc8%au{bwAH!(90;%|_~_?-Ow0<aPB
znRx}JCGpAmxdl0?B_PLU=9R=ly~2>0msygTn3GwY8V|Pw%1X&B231fHCnGzbA+;j2
zB)*_1KfNe1H#Zd?YoHv>$i%<^s@Iw17#P6yHZuc*1gO51XJAkV)tO8T450cFByR{3
zmx0vLjLZxS)*yLi28Iw2&BVYE36hs%V2A_pnHd<8q5KRGt;oPo2^H@G(M${s{UC8U
z28JmhT84oER9=A0od=a)3=)@PU|0d7Wf&ONg2b5_7&bxay-@l*lm?X#ApNhPd{9{e
z@*k)i0J;AsRQw;vJXr<?W<~}ECPfAYE=C3hkUD-4Uygx61Vk$`Fi1ni6+nDB1_o6S
Jtq2c31^^Uh=+giI

literal 0
HcmV?d00001

diff --git a/ws1/src/task2_test/driver.c b/ws1/src/task2_test/driver.c
deleted file mode 100644
index 1c33ae5..0000000
--- a/ws1/src/task2_test/driver.c
+++ /dev/null
@@ -1,6 +0,0 @@
-int __attribute__((cdecl)) asm_main( void );
-int main() {
-int ret_status;
-ret_status = asm_main();
-return ret_status;
-}
\ No newline at end of file
diff --git a/ws1/test.md b/ws1/test.md
deleted file mode 100644
index fb1e623..0000000
--- a/ws1/test.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# test
-## test
-### test
\ No newline at end of file
-- 
GitLab