Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Change the program to display F as a sum of the array. section .text global _sta

ID: 3888199 • Letter: C

Question

Change the program to display F as a sum of the array.

section .text

global _start ;must be declared for linker (ld)

_start:

mov eax,3 ;number bytes to be summed

mov ebx,0 ;EBX will store the sum

mov ecx, x ;ECX will point to the current element to be summed

top: add ebx, [ecx]

add ecx,1 ;move pointer to next element

dec eax ;decrement counter

jnz top ;if counter not 0, then loop again

done:

add ebx, '0'

mov [sum], ebx ;done, store result in "sum"

display:

mov edx,1 ;message length

mov ecx, sum ;message to write

mov ebx, 1 ;file descriptor (stdout)

mov eax, 4 ;system call number (sys_write)

int 0x80 ;call kernel

mov eax, 1 ;system call number (sys_exit)

int 0x80 ;call kernel

section .data

global x

x:

db 2

db 4

db 3

sum:

db 0

Explanation / Answer

section .data arr dd 1,2,3,4 ;given array len equ $-arr ;length of array sum dd 0 ;variable to store sum disp_int db "%d",0,10 ;for display using printf section .text extern printf ;for getting printf function global main ;declaring scope of main main: xor edx,edx ;to make it zero mov ebx,4 ;to get length by dividing eax mov eax,len ;stroing length in eax div ebx mov ebx,0 ;sum will be stored here mov ecx,arr ;address of array top: add ebx, [ecx] ;Value in the array is added to ebx add ecx,4 ;move pointer to next element dec eax ;decrement counter jnz top ;if counter not 0, then loop again mov [sum], ebx ;done, store result in "sum" display: push dword[sum] ;Value in sum is pushed onto stack push disp_int call printf ;Printf is call add esp,8 ;Stack gets emptied ret

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote