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

Write an assembly code to read the integer values 1 to 5 and 40 to 45 from conso

ID: 3631233 • Letter: W

Question

Write an assembly code to read the integer values 1 to 5 and 40 to 45 from console and store them in Memory in Array A[5] and Array B[6] respectively. Then implement the following C code in assembly:
int C[10] = { 10,20,30,40,50,60,70,80,90,100};
For( int i = 0; i < 5; i++ )
C[i+1] = B[A[i]] ;

For(int i= 0; i<10; i++ )
Printf(“ C[%d] = %d , ”, i, C[i]);


Here is the sample program output:

Please enter 1 to 5 (please hit enter after entering each number) : 1
2
3
4
5
Please enter 40 to 45 (please hit enter after entering each number) : 40
41
42
43
44
45

The output is :
C[0] = X , C[1] = X, C[2] = X, ……………, C[9] = X ( your program must print out the elements of array C not X!!!

Explanation / Answer

.file "cram.c" .intel_syntax noprefix .section .rodata .align 4 .LC0: .string "Please enter 1 to 5 (please hit enter after entering each number) " .LC1: .string "%d" .align 4 .LC2: .string "Please enter 40 to 45 (please hit enter after entering each number) " .LC3: .string "C[%d] = %d , " .text .globl main .type main, @function main: push ebp mov ebp, esp and esp, -16 sub esp, 112 mov eax, OFFSET FLAT:.LC0 mov DWORD PTR [esp], eax call printf mov DWORD PTR [esp+108], 0 jmp .L2 .L3: mov eax, OFFSET FLAT:.LC1 lea edx, [esp+104] mov DWORD PTR [esp+4], edx mov DWORD PTR [esp], eax call __isoc99_scanf mov eax, DWORD PTR [esp+108] mov edx, DWORD PTR [esp+104] mov DWORD PTR [esp+84+eax*4], edx add DWORD PTR [esp+108], 1 .L2: cmp DWORD PTR [esp+108], 4 jle .L3 mov eax, OFFSET FLAT:.LC2 mov DWORD PTR [esp], eax call printf mov DWORD PTR [esp+108], 0 jmp .L4 .L5: mov eax, OFFSET FLAT:.LC1 lea edx, [esp+104] mov DWORD PTR [esp+4], edx mov DWORD PTR [esp], eax call __isoc99_scanf mov eax, DWORD PTR [esp+108] mov edx, DWORD PTR [esp+104] mov DWORD PTR [esp+60+eax*4], edx add DWORD PTR [esp+108], 1 .L4: cmp DWORD PTR [esp+108], 5 jle .L5 mov DWORD PTR [esp+20], 10 mov DWORD PTR [esp+24], 20 mov DWORD PTR [esp+28], 30 mov DWORD PTR [esp+32], 40 mov DWORD PTR [esp+36], 50 mov DWORD PTR [esp+40], 60 mov DWORD PTR [esp+44], 70 mov DWORD PTR [esp+48], 80 mov DWORD PTR [esp+52], 90 mov DWORD PTR [esp+56], 100 mov DWORD PTR [esp+108], 0 jmp .L6 .L7: mov eax, DWORD PTR [esp+108] lea edx, [eax+1] mov eax, DWORD PTR [esp+108] mov eax, DWORD PTR [esp+84+eax*4] mov eax, DWORD PTR [esp+60+eax*4] mov DWORD PTR [esp+20+edx*4], eax add DWORD PTR [esp+108], 1 .L6: cmp DWORD PTR [esp+108], 4 jle .L7 mov DWORD PTR [esp+108], 0 jmp .L8 .L9: mov eax, DWORD PTR [esp+108] mov edx, DWORD PTR [esp+20+eax*4] mov eax, OFFSET FLAT:.LC3 mov DWORD PTR [esp+8], edx mov edx, DWORD PTR [esp+108] mov DWORD PTR [esp+4], edx mov DWORD PTR [esp], eax call printf add DWORD PTR [esp+108], 1 .L8: cmp DWORD PTR [esp+108], 9 jle .L9 leave ret .size main, .-main .ident "GCC: (Ubuntu 4.4.3-4ubuntu5) 4.4.3" .section .note.GNU-stack,"",@progbits

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