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

Assembly Language using Irvine 32 library, Must be assembly, not c/c++/java Writ

ID: 3574750 • Letter: A

Question

Assembly Language using Irvine 32 library, Must be assembly, not c/c++/java

Write a program that reads 16 numbers (range, 0-200) from standard input (user is prompted for input) and displays them on a screen as a 4x4 matrix. These numbers are to be stored in an array and the contents of the array is then manipulated. Treat this array as a two-dimensional array and use base index addressing to simplify the solutions to the following requirements.

Right Justify the number and leave a blank line between rows

Example:

    0 50 2 200

66 21 54 20

   1   3   4   6

129 35 45 67

Use at least one procedure to perform each of the following operations:

a.) Prompt for a row and then display the sum of this row

b.) Prompft for a column and then display the sum of this column

c.) Count and display the number of values

d.) Wait for a key to be pressed, then using ESI and EDI as offsets, interchange rows one and three and re-display the matrix

Explanation / Answer

Program:

.LC0:
   .string   "enter the numbers"
.LC1:
   .string   "%d"
.LC2:
   .string   "%d "
   .align 8
.LC3:
   .string   "enter the row from(0-3) to be added"
   .align 8
.LC4:
   .string   "Sum of elements in row %d is %d "
   .align 8
.LC5:
   .string   "enter the column from (0-3) to be added"
   .align 8
.LC6:
   .string   "Sum of elements in column %d is %d "
.LC7:
   .string   "no of values are %d "
   .align 8
.LC8:
   .string   "enter any key to interchange row 1 and 3 "
   .text
   .globl   main
   .type   main, @function
main:
.LFB0:
   .cfi_startproc
   pushq   %rbp
   .cfi_def_cfa_offset 16
   .cfi_offset 6, -16
   movq   %rsp, %rbp
   .cfi_def_cfa_register 6
   pushq   %r15
   pushq   %r14
   pushq   %r13
   pushq   %r12
   pushq   %rbx
   subq   $88, %rsp
   .cfi_offset 15, -24
   .cfi_offset 14, -32
   .cfi_offset 13, -40
   .cfi_offset 12, -48
   .cfi_offset 3, -56
   movq   %fs:40, %rbx
   movq   %rbx, -56(%rbp)
   xorl   %ebx, %ebx
   movq   %rsp, %rcx
   movq   %rcx, %r15
   movl   $4, -96(%rbp)
   movl   $4, -92(%rbp)
   movl   -92(%rbp), %ecx
   movl   -96(%rbp), %r12d
   movslq   %ecx, %rbx
   subq   $1, %rbx
   movq   %rbx, -80(%rbp)
   movslq   %ecx, %rbx
   movq   %rbx, %r13
   movl   $0, %r14d
   movslq   %ecx, %rbx
   salq   $2, %rbx
   movslq   %r12d, %r13
   subq   $1, %r13
   movq   %r13, -72(%rbp)
   movslq   %ecx, %r13
   movq   %r13, %r10
   movl   $0, %r11d
   movslq   %r12d, %r13
   movq   %r13, %rax
   movl   $0, %edx
   movq   %r11, %r14
   imulq   %rax, %r14
   movq   %rdx, %r13
   imulq   %r10, %r13
   addq   %r14, %r13
   mulq   %r10
   leaq   0(%r13,%rdx), %r10
   movq   %r10, %rdx
   movslq   %ecx, %rax
   movq   %rax, %r8
   movl   $0, %r9d
   movslq   %r12d, %rax
   movq   %rax, %rsi
   movl   $0, %edi
   movq   %r9, %rdx
   imulq   %rsi, %rdx
   movq   %rdi, %rax
   imulq   %r8, %rax
   leaq   (%rdx,%rax), %r10
   movq   %r8, %rax
   mulq   %rsi
   leaq   (%r10,%rdx), %rsi
   movq   %rsi, %rdx
   movslq   %ecx, %rdx
   movslq   %r12d, %rax
   imulq   %rdx, %rax
   salq   $2, %rax
   leaq   3(%rax), %rdx
   movl   $16, %eax
   subq   $1, %rax
   addq   %rdx, %rax
   movl   $16, %edi
   movl   $0, %edx
   divq   %rdi
   imulq   $16, %rax, %rax
   subq   %rax, %rsp
   movq   %rsp, %rax
   addq   $3, %rax
   shrq   $2, %rax
   salq   $2, %rax
   movq   %rax, -64(%rbp)
   movl   $.LC0, %edi
   call   puts
   movl   $0, -112(%rbp)
   jmp   .L2
.L5:
   movl   $0, -108(%rbp)
   jmp   .L3
.L4:
   movq   %rbx, %rcx
   shrq   $2, %rcx
   movl   -108(%rbp), %eax
   movslq   %eax, %rdx
   movl   -112(%rbp), %eax
   cltq
   imulq   %rcx, %rax
   addq   %rdx, %rax
   leaq   0(,%rax,4), %rdx
   movq   -64(%rbp), %rax
   addq   %rdx, %rax
   movq   %rax, %rsi
   movl   $.LC1, %edi
   movl   $0, %eax
   call   __isoc99_scanf
   addl   $1, -108(%rbp)
.L3:
   movl   -108(%rbp), %eax
   cmpl   -92(%rbp), %eax
   jl   .L4
   addl   $1, -112(%rbp)
.L2:
   movl   -112(%rbp), %eax
   cmpl   -96(%rbp), %eax
   jl   .L5
   movl   $0, -112(%rbp)
   jmp   .L6
.L9:
   movl   $0, -108(%rbp)
   jmp   .L7
.L8:
   movq   %rbx, %rsi
   shrq   $2, %rsi
   movq   -64(%rbp), %rax
   movl   -108(%rbp), %edx
   movslq   %edx, %rcx
   movl   -112(%rbp), %edx
   movslq   %edx, %rdx
   imulq   %rsi, %rdx
   addq   %rcx, %rdx
   movl   (%rax,%rdx,4), %eax
   movl   %eax, %esi
   movl   $.LC2, %edi
   movl   $0, %eax
   call   printf
   addl   $1, -108(%rbp)
.L7:
   movl   -108(%rbp), %eax
   cmpl   -92(%rbp), %eax
   jl   .L8
   movl   $10, %edi
   call   putchar
   addl   $1, -112(%rbp)
.L6:
   movl   -112(%rbp), %eax
   cmpl   -96(%rbp), %eax
   jl   .L9
   movl   $.LC3, %edi
   call   puts
   movl   $0, -104(%rbp)
   movl   $0, -100(%rbp)
   leaq   -120(%rbp), %rax
   movq   %rax, %rsi
   movl   $.LC1, %edi
   movl   $0, %eax
   call   __isoc99_scanf
   movl   $0, -108(%rbp)
   jmp   .L10
.L11:
   movq   %rbx, %rsi
   shrq   $2, %rsi
   movl   -120(%rbp), %edx
   movq   -64(%rbp), %rax
   movl   -108(%rbp), %ecx
   movslq   %ecx, %rcx
   movslq   %edx, %rdx
   imulq   %rsi, %rdx
   addq   %rcx, %rdx
   movl   (%rax,%rdx,4), %eax
   addl   %eax, -104(%rbp)
   addl   $1, -108(%rbp)
.L10:
   movl   -108(%rbp), %eax
   cmpl   -92(%rbp), %eax
   jl   .L11
   movl   -120(%rbp), %eax
   movl   -104(%rbp), %edx
   movl   %eax, %esi
   movl   $.LC4, %edi
   movl   $0, %eax
   call   printf
   movl   $.LC5, %edi
   call   puts
   leaq   -116(%rbp), %rax
   movq   %rax, %rsi
   movl   $.LC1, %edi
   movl   $0, %eax
   call   __isoc99_scanf
   movl   $0, -112(%rbp)
   jmp   .L12
.L13:
   movq   %rbx, %rsi
   shrq   $2, %rsi
   movl   -116(%rbp), %edx
   movq   -64(%rbp), %rax
   movslq   %edx, %rcx
   movl   -112(%rbp), %edx
   movslq   %edx, %rdx
   imulq   %rsi, %rdx
   addq   %rcx, %rdx
   movl   (%rax,%rdx,4), %eax
   addl   %eax, -100(%rbp)
   addl   $1, -112(%rbp)
.L12:
   movl   -112(%rbp), %eax
   cmpl   -96(%rbp), %eax
   jl   .L13
   movl   -116(%rbp), %eax
   movl   -100(%rbp), %edx
   movl   %eax, %esi
   movl   $.LC6, %edi
   movl   $0, %eax
   call   printf
   movl   -96(%rbp), %eax
   imull   -92(%rbp), %eax
   movl   %eax, %esi
   movl   $.LC7, %edi
   movl   $0, %eax
   call   printf
   movl   $.LC8, %edi
   movl   $0, %eax
   call   printf
   call   getchar
   movl   %eax, -88(%rbp)
   cmpl   $0, -88(%rbp)
   je   .L14
   movl   $0, -112(%rbp)
   jmp   .L15
.L16:
   movq   %rbx, %rcx
   shrq   $2, %rcx
   movq   -64(%rbp), %rax
   movl   -112(%rbp), %edx
   movslq   %edx, %rdx
   addq   %rcx, %rdx
   movl   (%rax,%rdx,4), %eax
   movl   %eax, -84(%rbp)
   movq   %rbx, %rsi
   shrq   $2, %rsi
   movq   %rbx, %rcx
   shrq   $2, %rcx
   movq   -64(%rbp), %rax
   movl   -112(%rbp), %edx
   movslq   %edx, %rdx
   addq   %rcx, %rcx
   addq   %rcx, %rdx
   movl   (%rax,%rdx,4), %edx
   movq   -64(%rbp), %rax
   movl   -112(%rbp), %ecx
   movslq   %ecx, %rcx
   addq   %rsi, %rcx
   movl   %edx, (%rax,%rcx,4)
   movq   %rbx, %rcx
   shrq   $2, %rcx
   movq   -64(%rbp), %rax
   movl   -112(%rbp), %edx
   movslq   %edx, %rdx
   addq   %rcx, %rcx
   addq   %rdx, %rcx
   movl   -84(%rbp), %edx
   movl   %edx, (%rax,%rcx,4)
   addl   $1, -112(%rbp)
.L15:
   movl   -112(%rbp), %eax
   cmpl   -96(%rbp), %eax
   jl   .L16
.L14:
   movl   $0, -112(%rbp)
   jmp   .L17
.L20:
   movl   $0, -108(%rbp)
   jmp   .L18
.L19:
   movq   %rbx, %rsi
   shrq   $2, %rsi
   movq   -64(%rbp), %rax
   movl   -108(%rbp), %edx
   movslq   %edx, %rcx
   movl   -112(%rbp), %edx
   movslq   %edx, %rdx
   imulq   %rsi, %rdx
   addq   %rcx, %rdx
   movl   (%rax,%rdx,4), %eax
   movl   %eax, %esi
   movl   $.LC2, %edi
   movl   $0, %eax
   call   printf
   addl   $1, -108(%rbp)
.L18:
   movl   -108(%rbp), %eax
   cmpl   -92(%rbp), %eax
   jl   .L19
   movl   $10, %edi
   call   putchar
   addl   $1, -112(%rbp)
.L17:
   movl   -112(%rbp), %eax
   cmpl   -96(%rbp), %eax
   jl   .L20
   movl   $0, %eax
   movq   %r15, %rsp
   movq   -56(%rbp), %rdi
   xorq   %fs:40, %rdi
   je   .L22
   call   __stack_chk_fail
.L22:
   leaq   -40(%rbp), %rsp
   popq   %rbx
   popq   %r12
   popq   %r13
   popq   %r14
   popq   %r15
   popq   %rbp
   .cfi_def_cfa 7, 8
   ret
   .cfi_endproc

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