From bb76f318b7842c6e0f8ed60d315d09914e5a5da7 Mon Sep 17 00:00:00 2001
From: "Le10.Anh@live.uwe.ac.uk" <le10.anh@live.uwe.ac.uk>
Date: Thu, 12 Dec 2024 19:38:05 +0000
Subject: [PATCH] Upload New File

---
 src/task2_1.asm | 81 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 81 insertions(+)
 create mode 100644 src/task2_1.asm

diff --git a/src/task2_1.asm b/src/task2_1.asm
new file mode 100644
index 0000000..bd2b056
--- /dev/null
+++ b/src/task2_1.asm
@@ -0,0 +1,81 @@
+segment .data
+    prompt db "Enter your name: ", 0
+    format db "%s", 0
+    welcome_msg db "Welcome, %s!", 0
+    newline db 10, 0
+    count_prompt db "Enter the number of times to print the welcome message: ", 0
+    count_format db "%d", 0
+    invalid_count_msg db "The number of times to print the welcome message must be greater than 50 and less than 100!", 0
+
+segment .bss
+    name resb 50 ; Reserve space for the name (50 bytes)
+    count resd 1 ; Reserve space for the count (4 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 count prompt
+    push count_prompt
+    call printf
+    add esp, 4          ; Clean up the stack
+
+    ; Read the count
+    push count          ; Address of the buffer to store the count
+    push count_format   ; Format string for scanf
+    call scanf
+    add esp, 8          ; Clean up the stack (2 arguments)
+
+    ; Check if the count is valid
+    mov eax, [count]
+    cmp eax, 50
+    jl invalid_count
+    cmp eax, 100
+    jg invalid_count
+
+    ; Print the welcome message
+    mov ecx, [count]
+    mov ebx, ecx        ; Sao chép giá trị của ecx vào ebx
+    print_welcome:
+        push name           ; Push the name to print
+        push welcome_msg
+        call printf
+        add esp, 8        ; Clean up the stack (2 arguments)
+        dec ebx            ; Giảm giá trị của ebx
+        jnz print_welcome  ; Nếu ebx khác 0 thì tiếp tục loop
+
+    ; 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
+
+invalid_count:
+    ; Print the invalid count message
+    push invalid_count_msg
+    call printf
+    add esp, 4          ; Clean up the stack
+
+    ; Exit the program
+    mov eax, 1          ; syscall: exit
+    xor ebx, ebx        ; exit code 0
+    ret
+    int 0x80
\ No newline at end of file
-- 
GitLab