Header Ads

Write an assembly language program that calculates the sum of all even numbers from 1 to N

Statement

Write an assembly language program that calculates the sum of all even numbers from 1 to N, where N is the largest digit of your VUID. Use jumps and labels to implement the necessary loops and conditionals. Store the final sum in a variable named sum.

Requirements:

  • Calculate the sum of all even numbers from 1 to N, where N is the largest digit of your VUID.
  • Use jumps and labels to implement loops and conditionals.
  • Store the final sum in a variable named sum.

Solution:

section .data

    VUID db "M17123456"   ; Example VUID

    sum dw 0              ; Variable to store the sum

    max_digit db 0        ; Variable to store the largest digit

    

section .text

    global _start

    

_start:

    ; Find the largest digit in VUID

    mov ecx, 8            ; Loop counter (length of VUID)

    mov esi, VUID         ; Pointer to the VUID string

    movzx eax, byte [esi] ; Load the first digit

    mov max_digit, al     ; Store it as the initial largest digit

    

    ; Loop to find the largest digit

    find_largest_digit:

        inc esi           ; Move to the next digit

        movzx eax, byte [esi] ; Load the digit

        cmp al, max_digit ; Compare with the current largest digit

        jle continue_loop ; If less than or equal, continue the loop

        mov max_digit, al ; Update the largest digit

    continue_loop:

        loop find_largest_digit

    

    ; Calculate the sum of even numbers from 1 to N

    mov cx, max_digit     ; Initialize loop counter with the largest digit

    mov bx, 1            ; Initialize the current number

    mov ax, 0            ; Initialize the sum

    

    calculate_sum:

        test bx, 1        ; Check if the number is even

        jnz next_number   ; If not even, skip to the next number

        add ax, bx        ; Add the even number to the sum

    next_number:

        inc bx            ; Increment the current number

        loop calculate_sum

    

    ; Store the final sum in the sum variable

    mov [sum], ax

    

    ; Exit the program

    mov eax, 1            ; Exit syscall number

    xor ebx, ebx          ; Exit status

    int 0x80              ; Call the kernel

    


No comments

Powered by Blogger.