From 8993161cc478701cd488635e1548c7e7f3040eb5 Mon Sep 17 00:00:00 2001 From: "Leo Trung (Student)" <dao2.trung@live.uwe.ac.uk@csctcloud.prxhn32zsyjupl12zde3wlfkch.cwx.internal.cloudapp.net> Date: Thu, 12 Dec 2024 20:39:33 +0000 Subject: [PATCH] Worksheet 1 task 2 and 3 completion --- src/Makefile | 25 +++++++++++ src/task2.asm | 51 --------------------- src/{test => task2_1} | Bin 17660 -> 17944 bytes src/task2_1.asm | 98 +++++++++++++++++++++++++++++++++++++++++ src/task2_1.o | Bin 0 -> 1456 bytes src/{test1 => task2_2} | Bin 17660 -> 17640 bytes src/task2_2.asm | 42 ++++++++++++++++++ src/task2_2.o | Bin 0 -> 800 bytes src/task2_3 | Bin 0 -> 17888 bytes src/task2_3.asm | 73 ++++++++++++++++++++++++++++++ src/task2_3.o | Bin 0 -> 1280 bytes src/test.asm | 41 ----------------- src/test.o | Bin 944 -> 0 bytes src/test1.asm | 43 ------------------ src/test1.o | Bin 944 -> 0 bytes 15 files changed, 238 insertions(+), 135 deletions(-) create mode 100644 src/Makefile delete mode 100644 src/task2.asm rename src/{test => task2_1} (55%) create mode 100644 src/task2_1.asm create mode 100644 src/task2_1.o rename src/{test1 => task2_2} (55%) create mode 100644 src/task2_2.asm create mode 100644 src/task2_2.o create mode 100755 src/task2_3 create mode 100644 src/task2_3.asm create mode 100644 src/task2_3.o delete mode 100644 src/test.asm delete mode 100644 src/test.o delete mode 100644 src/test1.asm delete mode 100644 src/test1.o diff --git a/src/Makefile b/src/Makefile new file mode 100644 index 0000000..ae841a0 --- /dev/null +++ b/src/Makefile @@ -0,0 +1,25 @@ +all: task1 task2_1 task2_2 task2_3 + +task1: task1.asm + nasm -f elf task1.asm -o task1.o + nasm -f elf asm_io.asm -o asm_io.o + gcc -m32 -c driver.c -o driver.o + gcc -m32 driver.o task1.o asm_io.o -o task1 + +task2_1: task2_1.asm + nasm -f elf task2_1.asm -o task2_1.o + nasm -f elf asm_io.asm -o asm_io.o + gcc -m32 -c driver.c -o driver.o + gcc -m32 driver.o task2_1.o asm_io.o -o task2_1 + +task2_2: task2_2.asm + nasm -f elf task2_2.asm -o task2_2.o + nasm -f elf asm_io.asm -o asm_io.o + gcc -m32 -c driver.c -o driver.o + gcc -m32 driver.o task2_2.o asm_io.o -o task2_2 + +task2_3: task2_3.asm + nasm -f elf task2_3.asm -o task2_3.o + nasm -f elf asm_io.asm -o asm_io.o + gcc -m32 -c driver.c -o driver.o + gcc -m32 driver.o task2_3.o asm_io.o -o task2_3 \ No newline at end of file diff --git a/src/task2.asm b/src/task2.asm deleted file mode 100644 index 23a3c9f..0000000 --- a/src/task2.asm +++ /dev/null @@ -1,51 +0,0 @@ -%include "asm_io.inc" - -section .data - prompt_name db "Enter your name: ", 0 - prompt_times db "Enter the number of times (51-99) to print the welcome message: ", 0 - invalid_input db "Invalid input! Please enter a number between 51 and 99.", 10, 0 - welcome_msg db "Welcome, %s!", 10, 0 - -section .bss - name resb 50 ; Reserve space for the name (50 bytes) - times resd 1 ; Reserve space for the number (4 bytes) - -section .text - extern asm_main ; Declared in driver.c - global asm_main - -asm_main: - ; Prompt for name - mov eax, prompt_name ; Load the address of the prompt string - call print_string ; Print the string - - mov eax, name ; Load the address of the name buffer - mov ebx, 50 ; Set max input length - call read_string ; Read user input into the name buffer - -ask_times: - ; Prompt for the number of times - mov eax, prompt_times ; Load the address of the prompt string - call print_string ; Print the string - - call read_int ; Read an integer from the user - mov [times], eax ; Store the input number in the `times` variable - - ; Validate the input (51 <= times <= 99) - mov eax, [times] ; Load the number into eax - cmp eax, 51 ; Check if less than 51 - jl invalid_input_msg ; Jump if invalid - cmp eax, 99 ; Check if greater than 99 - jg invalid_input_msg ; Jump if invalid - jmp print_messages ; Valid input, proceed - -invalid_input_msg: - mov eax, invalid_input ; Load the invalid input message - call print_string ; Print the string - jmp ask_times ; Re-prompt the user - -print_messages: - mov ecx, [times] ; Load the number of times into ecx (loop counter) - -print_loop: - mov eax, welcome_msg ; Lo diff --git a/src/test b/src/task2_1 similarity index 55% rename from src/test rename to src/task2_1 index 0f67137503f75efd5016ec14f8b0384f4c20e021..5aa87c0b59e588653a21e9a56db8c353debbcfcb 100755 GIT binary patch delta 3312 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 Hqk}L2dLcUD delta 2787 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 diff --git a/src/task2_1.asm b/src/task2_1.asm new file mode 100644 index 0000000..72f2d4a --- /dev/null +++ b/src/task2_1.asm @@ -0,0 +1,98 @@ +segment .data + prompt_num db "Enter number of times to print the message: ", 0 + prompt db "Enter your name: ", 0 + error_prompt db "You have entered a number that does not satisfy the requirement", 0 + format db "%s", 0 + format_digit db "%d", 0 + welcome_msg db "Welcome, %s!", 0 + newline db 10, 0 +segment .bss + name resb 50 ; Reserve space for the name (50 bytes) + num resb 1 + counter resb 1 + +segment .text + extern printf + extern scanf + +global asm_main +asm_main: + ; Print the prompt + push prompt + call printf + add esp, 4 ; Clean up the stack + + ; Read the input + push name ; Address of the buffer to store the input + push format ; Format string for scanf + call scanf + add esp, 8 ; Clean up the stack (2 arguments) + + ;Print the number prompt + push prompt_num + call printf + add esp, 4 + + ; Read the number input + push num + push format_digit + call scanf + add esp, 8 + + ; Loop + mov al, [num] ; Load the value of 'num' into register AL + mov [counter], al ; Store it in the counter variable + + + ; Check if num > 50 + cmp al, 50 ; Compare num with 50 + jle error_exit ; If num <= 50, jump to error_exit + + ; Check if num < 100 + cmp al, 100 ; Compare num with 100 + jge error_exit ; If num >= 100, jump to error_exit + + + + loop_start: + ; Do something here (inside the loop) + ; Print the welcome message + push name ; Push the name to print + push welcome_msg + call printf + add esp, 8 ; Clean up the stack (2 arguments) + + ; Print newline + push newline + call printf + add esp, 4 + + ; Decrement the counter + dec byte [counter] ; Decrement the value of 'counter' + + ; Check if the counter is zero + cmp byte [counter], 0 ; Compare counter with 0 + jne loop_start ; If not zero, jump back to loop_start + + + ; Exit the program + mov eax, 1 ; syscall: exit + xor ebx, ebx ; exit code 0 + ret + int 0x80 + +error_exit: + ; Exit with error code + push error_prompt + call printf + add esp, 4 + + ;Print newline before exiting + push newline + call printf + add esp, 4 + + ;Exit with error code + mov eax, 60 ; System call for exit + mov edi, 1 ; Exit code 1 (error) + syscall \ No newline at end of file diff --git a/src/task2_1.o b/src/task2_1.o new file mode 100644 index 0000000000000000000000000000000000000000..4350d87e98baddc4e272ddabdf7a786ea9b3ebfc GIT binary patch literal 1456 zcmb<-^>JflWMqH=Mh0dE1doBi0V-hvrZpHi7+An8QVEcmAj}Na*ucoZFa^p6Q7}{4 z85kHi7#J8}>J*q57$A0oR58G9=V4#~yORwf%m7li4$1~m0w98cfk6n#ERfIzCI$vG z5Ce)qZUQl77#J9sKny4rU}j)&U}RtbnJ>ryu@_{f3YvKVEDQ`2p?W|R%sd?i1_n-$ z02F^<VPM$7z`(!?)erJ7$e*rxC8<RUd8N5YsYMF;X$mEoxv9kpCHV>kMVWae3MCn- z3c0Dp#fj;uRtgLd#g+M`MGAR|xge3q{8ELC#IjU{RFFBTDGG@&vq~}&OB7P_Q;QYy z@=Fwo6H79S(<;H{6{QxIW)`L9rskC}s1`G*rZ9x3<|OCmrs^oD7ArDvL0t@?GISXj z7+(DO|NnpU5ta;)SVlcUgaa%Bmo{QxV901fl3oB3S!B$>z+hukXJeC6YXR1f(Tb!d zV-kYH@{bp!xWN`gGL&B00SZpT+lS9KWY{CALea9rhJk@$KS&`zC~);s5=#;p^pc8; z8T3k0D@qvjiZhB!ib@ib81#xOb0IX8UzC~yQ3LW9b__BXCd0z;@jr|WqET}SD9s|L zAP}FKffu9@ju{yw7#J8pK?)IKWRPcIU;udy#s{SvPyoaDpnw2{D2xxvkD$<l@qHK= z7(f9C<A*>PP?Cuul7WE%6bTRkCWcrB1_qFsFn%=y1496W15TN33=9k%Nc>bdn}Gq8 z{&UdyMJRk`28NQv;%uXML%qb}T!w<8{M>?)_`FgWlOeUJD8DEkBF>POUzD3z0;S?p zGSf3l7|J0@F+R6Aogpu^JSQ_Rl>wC289;_4=a+(#IRiLvq%jmHC+4LwBo^n!=O$+6 zG34au7sMBrBo>uGtx2uOEJ1P}m<ftcMkYwUW)fsz-~*K-%nS^|AexB*96wA#3=9fT zzAC6(5QM}TBQqo{LHf->;zE$P1BttU)H5?M1VZUB5Y5EE5Dii%$iR>c<%7~c$lgK_ epP7N797=bBXeI`RKB)R>Q2uNvAMAJr1_l6fklQK% literal 0 HcmV?d00001 diff --git a/src/test1 b/src/task2_2 similarity index 55% rename from src/test1 rename to src/task2_2 index 82dc7e1279aa15c6de4c0a5f546b1657e2d4d406..a6b9634d0dd374cced68c38ce91c159c595938cf 100755 GIT binary patch delta 2714 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 aBF*Yx#lWCE`Jjt3YqC89!=K3;9fSenZ^y>~ delta 2828 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 diff --git a/src/task2_2.asm b/src/task2_2.asm new file mode 100644 index 0000000..fbcc6a2 --- /dev/null +++ b/src/task2_2.asm @@ -0,0 +1,42 @@ +section .data + sum_prompt db "The sum of the numbers is: %d", 10, 0 ; Format string for sum + total db 0 ; Reserve space for the sum result + +section .bss + sum resd 1 ; Reserve space for the sum (4 bytes) + +section .text + extern printf + +global asm_main +asm_main: + + ; Initialize registers + xor eax, eax ; Clear eax, we'll use it to store the sum + + ; Calculate sum of integers from 1 to 100 + mov ecx, 1 ; Start loop counter at 1 + mov ebx, 100 ; Upper limit of the loop + +calculate_sum: + add eax, ecx ; Add the current counter value to the sum (in eax) + inc ecx ; Increment the counter + cmp ecx, ebx ; Compare counter with 100 + jle calculate_sum ; Loop if counter is <= 100 + + ; Now eax contains the sum of numbers from 1 to 100 + + ; Store the sum in the variable sum + mov [sum], eax + + ; Print the sum using printf + push eax ; Push the sum onto the stack (argument for printf) + push sum_prompt ; Push the format string + call printf ; Call printf + add esp, 8 ; Clean up the stack (2 arguments) + + ; Exit the program + mov eax, 1 ; syscall: exit + xor ebx, ebx ; exit code 0 + ret + int 0x80 diff --git a/src/task2_2.o b/src/task2_2.o new file mode 100644 index 0000000000000000000000000000000000000000..f819ab729a310e642ec0482d0379f6ddef12e0f8 GIT binary patch literal 800 zcmb<-^>JflWMqH=Mh0dE1doBi0V-hvrZpHi7+An8QVEcmAj}Na*ucoZpa5lqD4412 z3=9k$3=9k~bqg37P;7*$<6&R`yORy1nSp@;q|N}!22lbaf`NfS2+1sv&;>>Y1~U)? zia~AyF=ZGS7??l|C>CI1VA#OGzyLCzlL6uekeMoI<{e-{gb_$9%sd?i1_qEmkQf*< zGcZUnFfgz}^@IEY@@Gg!szPyTu0npALP<udLSAWZQfg7LLT0g*f@%sE1B2m#oggE3 zr-1x>!qM_(-Ot4!^8zwJ<cmN5|Nn13!m$IS#_;yxvkeS-DTyVC40=h$#SD5SsTCy* zdc_&VB}FBPNep_$mAMca$}dXIfv5qQg&l(ohRLuneEbh%gJ{&00*W)_5Crj=8F)bo z;g}H|2J%RJIXD}{U}7+0U|;~nEr<s)K?%YDlc4a|1hXK704SA|Bo=2I#T)4*7Uwb) zm*&P76y@g@lrWU!mn7zZ1Q-g6GV@B(7!r$f<8u=;^B9s7bCOGQ5=&C!i%WAEL_p!n S%)lT8qL~;NKyG6~iZ}pW6Hm+l literal 0 HcmV?d00001 diff --git a/src/task2_3 b/src/task2_3 new file mode 100755 index 0000000000000000000000000000000000000000..b46291db5d70dea9b1e48700aaabaa74f164cd97 GIT binary patch literal 17888 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 Xvp{m7?gp~DC<g|HKOhMxhN%Mpz{!Q% literal 0 HcmV?d00001 diff --git a/src/task2_3.asm b/src/task2_3.asm new file mode 100644 index 0000000..dfeacf0 --- /dev/null +++ b/src/task2_3.asm @@ -0,0 +1,73 @@ +section .data + sum_prompt db "The sum of the numbers is: %d", 10, 0 ; Format string for sum + prompt_start db "Enter the start of the range: ", 0 + prompt_end_range db "Enter the end of the range: ", 0 + format db "%d", 0 + newline db 10, 0 + total db 0 ; Reserve space for the sum result + +section .bss + sum resd 1 ; Reserve space for the sum (4 bytes) + start_range resd 1 + end_range resd 1 + +section .text + extern printf + extern scanf + +global asm_main +asm_main: + ; Print start prompt + push prompt_start + call printf + add esp, 4 + + ; Scan start range + push start_range + push format + call scanf + add esp, 8 + + ; Print end range prompt + push prompt_end_range + call printf + add esp, 4 + + ; Scan end range + push end_range + push format + call scanf + add esp, 8 + + ; Initialize sum register (eax = 0) + xor eax, eax ; Clear eax register to store the sum + + ; Load start and end range values into registers + mov ecx, [start_range] ; Start range (ecx) + mov ebx, [end_range] ; End range (ebx) + +calculate_sum: + cmp ecx, ebx ; Compare start value (ecx) with end value (ebx) + jg done_calculation ; If start > end, exit the loop + + add eax, ecx ; Add current value of ecx to eax (sum) + inc ecx ; Increment ecx to move to the next number + jmp calculate_sum ; Repeat the loop + +done_calculation: + ; Now eax contains the sum of numbers from start_range to end_range + + ; Store the sum in the sum variable (optional) + mov [sum], eax + + ; Print the sum using printf + push eax ; Push the sum onto the stack (argument for printf) + push sum_prompt ; Push the format string + call printf ; Call printf + add esp, 8 ; Clean up the stack (2 arguments) + + ; Exit the program + mov eax, 1 ; syscall: exit + xor ebx, ebx ; exit code 0 + ret + int 0x80 diff --git a/src/task2_3.o b/src/task2_3.o new file mode 100644 index 0000000000000000000000000000000000000000..cd8ac57b26fa344688fe484d606d2b0c44950ca5 GIT binary patch literal 1280 zcmb<-^>JflWMqH=Mh0dE1doBi0V-hvrZpHi7+An8QVEcmAj}Na*ucoZkO*aiD4412 z3=9k$3=9k~bsrcR7<fPmpctkOBnC2%4Jr;&R|I8)C;<?`z`!7cWEM!MfQf;@48(w9 zkQpGR3<CoL6NmxD8<-dv3>X<0K<0zY0@(|qRnW|Pz|6of3#tc1!OYWPU|`?`2|#fJ z3j;$10|NsqR6oc(kUv8*QWc6za~1N_6iPBu74k}RlTwR{6*7yh6jW2V7+mv8Qj5Sc z#U+VFB`{@0iFxU%RtiYcsd*{rlBy{TTu|E)RE9hQ1H+3y|NsAQKEjd#az#coLWCp3 z4#8o`067pv+VDU(FGx?fEJ(`oW<4w83CGvp7lX_X$N-U0qd9hf0>be2;j;}OQ6#LF zl30?+pqEr!%%E42T2aEFSDaB?QdE+d#GqGPnG2zz{G!wxh#DmQXiShbFd-I(kN;t8 z5RICWL1_v(hCzI0240XtIA&y!U|?VX1rbDukwKM#fdLdIFg_^lfC3E0w`E{ph=Xt# z7#J8CTp1V`5|H@ba5jj+#Nf}sfRuxn7(ix$!V)A4N`ci33=BRH4mhQBGB7ZNBJoq< zYz78UddxxNqvio-28NQv;%uXMW4*-UT!!M(-1vf`{M>>P1_%`oPE{~YYF<h_IAt-U z<rn29mN4X{mgi*Vr81P{mn7zZbTfd}Llq&E7ZhdYm83BgCnx5mF(ek}#^)wx<}oBE z<|LQqB$lMc7nkNTq~zzN#>0d%^YftY2E`vE6C|H82{175fkKg)fk7BVGckbUgGrEq zK>^AK#Ro{8E{M;}z+eQTnHU(%LHSpZfx!vHXJ%mVfYM=5ItD~DLCPGEeyH^f09O{S A2><{9 literal 0 HcmV?d00001 diff --git a/src/test.asm b/src/test.asm deleted file mode 100644 index 60e4c11..0000000 --- a/src/test.asm +++ /dev/null @@ -1,41 +0,0 @@ -segment .data - prompt db "Enter your name: ", 0 - format db "%s", 0 - welcome_msg db "Welcome, %s!", 0 - newline db 10, 0 -segment .bss - name resb 50 ; Reserve space for the name (50 bytes) - -segment .text - extern printf - extern scanf - -global asm_main -asm_main: - ; Print the prompt - push prompt - call printf - add esp, 4 ; Clean up the stack - - ; Read the input - push name ; Address of the buffer to store the input - push format ; Format string for scanf - call scanf - add esp, 8 ; Clean up the stack (2 arguments) - - ; Print the welcome message - push name ; Push the name to print - push welcome_msg - call printf - add esp, 8 ; Clean up the stack (2 arguments) - - ; Print newline - push newline - call printf - add esp, 4 - - ; Exit the program - mov eax, 1 ; syscall: exit - xor ebx, ebx ; exit code 0 - ret - int 0x80 \ No newline at end of file diff --git a/src/test.o b/src/test.o deleted file mode 100644 index 80cb795da7a45f9eea54d6014ee8e95195c3c1ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 944 zcmb<-^>JflWMqH=Mh0dE1doBi0V-hvrZpHi7+An8QVEcmAj}Na*ucoZpaNxsD4412 z3=9k$3=9k~bsHEN7>qy)pctl(hk*g?PBy4GNSz0i4Wa}<1Oo$u5RzG7AtnX}GcW@} zfZPOP$uKZ5Fo76Q?7+mpaDjn=0c1WG0|VICATvR3hPe%-RDhX*!5zeaVwib43=9mM zP%#jdz|6o9z`(%33Uv?2A0U6a=9Q!tDOBc{7AfQ<=B8RHFsK$Ygs0{t=jW#CD5w@I zGJtFcnE=5VAnL`R|Ns9tA7KG=GC*F0if}+gL>U+u;37&04$BUZ^9*kvKHC5?28{Jm z5=#;p^pc8;8T3k0D@qvjiZhB!ib@ib81#xOb0IX8UzC~yQ3KYAl>k`)lVD-^_#egw z(Wog46vxOR4&pPT`IeDE5E_Rd{h%0^U|?VXc@M@1#RtfTFg_^UA#4!I#9#=bpcoW? z7Em^b0`cuY3@8==rMi;T;u5{Y;#`J;qWs)~5{9(=qTIw1hH^-h#OD^LGvuX~=Va!k zGJqnCp`a);uOyA3I5{ydjUll(H$FEpGY@JYG>tMcLDCTu7Xt$yNQ{|*K^R0cF))Dq g!^F+Npa9}CGcc%vXeI^*El_&of~0+resd@v0CCA-!~g&Q diff --git a/src/test1.asm b/src/test1.asm deleted file mode 100644 index 35f5959..0000000 --- a/src/test1.asm +++ /dev/null @@ -1,43 +0,0 @@ -segment .data - prompt db "Enter your name: ", 0 - format db "%s", 0 - welcome_msg db "Welcome, %s!", 0 - newline db 10, 0 - number dd 0 - count db 0 -segment .bss - name resb 50 ; Reserve space for the name (50 bytes) - -segment .text - extern printf - extern scanf - -global asm_main -asm_main: - ; Print the prompt - push prompt - call printf - add esp, 4 ; Clean up the stack - - ; Read the input - push name ; Address of the buffer to store the input - push format ; Format string for scanf - call scanf - add esp, 8 ; Clean up the stack (2 arguments) - - ; Print the welcome message - push name ; Push the name to print - push welcome_msg - call printf - add esp, 8 ; Clean up the stack (2 arguments) - - ; Print newline - push newline - call printf - add esp, 4 - - ; Exit the program - mov eax, 1 ; syscall: exit - xor ebx, ebx ; exit code 0 - ret - int 0x80 \ No newline at end of file diff --git a/src/test1.o b/src/test1.o deleted file mode 100644 index 798af099283855e8416c322fece231be2ebb8f04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 944 zcmb<-^>JflWMqH=Mh0dE1doBi0V-hvrZpHi7+An8QVEcmAj}Na*ucoZpaNxsD4412 z3=9k$3=9k~bsHEN7>qy)pctl(hk*g?PBy4GNSz0i4Wa}<1Oo$u5RzG7AtnX}GcW@} zfZPOP$uKZ5Fo76Q?7+mpaDjn=0c1WG0|VICATvR3hPe%-RDhX*0oh)dc{&UX44fbZ zP@KTbz!1Q|z`zQ156B-Nf4b(Cq!uYu=9d;J<R#{&S}8E77BhsW<|OCmrs^oD7ArD< zY=;`cz`&3JV!rtE|NsByBP?J}2FQz05e|rmC<6lnTto@MVc7w4p5g7oXB$AqfU#am zVo4%{UQ%%}gI-B$MG1pmaYk`TQAuJFgI;lEE`)~ii&AqSYQQ?N5+Dm;5-bcK|HIfI z8Z~8s;utx^L40NgZjeGaW(3C{$b%3eMg~a+1_qG#V0={u1_qE1VSHT(14=TXq#aQF zSwdw%6o_vRVnDF~DAkpu7MB?6B^Kv06cpv>7L+ig<rn29mN1k<;v_z|IGrIcwLB*? zFO>llV+;jFnRz8?48_Tbd1(xZ#kujhiJ5s&6Cr7okqMHHn79}i_(18FnSntVL^Clk gNPyBEHv@wLh|kQx0P+t=y%tEE3zGIhd~+xt0D*pC{r~^~ -- GitLab