Write a program to compute the average of squared elements o
Write a program to compute the average of squared elements of an array of thirty-two unsigned 8-bit numbers.D-Bug12
A. Create an array denoted “arr” that will contain 32 elements: “1,2,3,4,5,6,7,8,9...29,30,31,32”
B. Store the array “arr” at addresses $1000-$101F.
C. The result, denoted “sq_ave”, will be stored at $1020-$1021.
D. Use a program loop to implement the program.
Solution
.Ltext0: .section .rodata .align 8 .LC1: 0000 456E7465 .string \"Enter the numbers of elements: \" 72207468 65206E75 6D626572 73206F66 .LC2: 0020 256400 .string \"%d\" 0023 00000000 .align 8 00 .LC3: 0028 4572726F .string \"Error! number should in range of (1 to 100).\" 7221206E 756D6265 72207368 6F756C64 .LC4: 0055 456E7465 .string \"Enter the number again: \" 72207468 65206E75 6D626572 20616761 .LC5: 006e 25642E20 .string \"%d. Enter number: \" 456E7465 72206E75 6D626572 3A2000 .LC6: 0081 256600 .string \"%f\" .LC7: 0084 41766572 .string \"Average = %.2f\" 61676520 3D20252E 326600 .text .globl main main: .LFB0: .cfi_startproc 0000 55 pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 0001 4889E5 movq %rsp, %rbp .cfi_def_cfa_register 6 0004 4881ECB0 subq $432, %rsp 010000 000b 64488B04 movq %fs:40, %rax 25280000 00 0014 488945F8 movq %rax, -8(%rbp) 0018 31C0 xorl %eax, %eax 001a 660FEFC0 pxor %xmm0, %xmm0 001e F30F1185 movss %xmm0, -424(%rbp) 58FEFFFF 0026 BF000000 movl $.LC1, %edi 00 002b B8000000 movl $0, %eax 00 0030 E8000000 call printf 00 0035 488D8550 leaq -432(%rbp), %rax FEFFFF 003c 4889C6 movq %rax, %rsi 003f BF000000 movl $.LC2, %edi 00 0044 B8000000 movl $0, %eax 00 0049 E8000000 call __isoc99_scanf 00 004e EB32 jmp .L2 .L3: 0050 BF000000 movl $.LC3, %edi 00 0055 E8000000 call puts 00 005a BF000000 movl $.LC4, %edi 00 005f B8000000 movl $0, %eax 00 0064 E8000000 call printf 00 0069 488D8550 leaq -432(%rbp), %rax FEFFFF 0070 4889C6 movq %rax, %rsi 0073 BF000000 movl $.LC2, %edi 00 0078 B8000000 movl $0, %eax 00 007d E8000000 call __isoc99_scanf 00 .L2: 0082 8B8550FE movl -432(%rbp), %eax FFFF 0088 83F864 cmpl $100, %eax 008b 7FC3 jg .L3 008d 8B8550FE movl -432(%rbp), %eax FFFF 0093 85C0 testl %eax, %eax 0095 7EB9 jle .L3 0097 C78554FE movl $0, -428(%rbp) FFFF0000 0000 00a1 EB6F jmp .L4 .L5: 010b 838554FE addl $1, -428(%rbp) FFFF01 00a3 8B8554FE movl -428(%rbp), %eax FFFF 00a9 83C001 addl $1, %eax 00ac 89C6 movl %eax, %esi 00ae BF000000 movl $.LC5, %edi 00 00b3 B8000000 movl $0, %eax 00 00b8 E8000000 call printf 00 00bd 488D8560 leaq -416(%rbp), %rax FEFFFF 00c4 8B9554FE movl -428(%rbp), %edx FFFF 00ca 4863D2 movslq %edx, %rdx 00cd 48C1E202 salq $2, %rdx 00d1 4801D0 addq %rdx, %rax 00d4 4889C6 movq %rax, %rsi 00d7 BF000000 movl $.LC6, %edi 00 00dc B8000000 movl $0, %eax 00 00e1 E8000000 call __isoc99_scanf 00 00e6 8B8554FE movl -428(%rbp), %eax FFFF 00ec 4898 cltq 00ee F30F1084 movss -416(%rbp,%rax,4), %xmm0 8560FEFF FF 00f7 F30F108D movss -424(%rbp), %xmm1 58FEFFFF 00ff F30F58C1 addss %xmm1, %xmm0 0103 F30F1185 movss %xmm0, -424(%rbp) 58FEFFFF .L4: 0112 8B8550FE movl -432(%rbp), %eax FFFF 0118 398554FE cmpl %eax, -428(%rbp) FFFF 011e 7C83 jl .L5 0120 8B8550FE movl -432(%rbp), %eax FFFF 0126 660FEFC0 pxor %xmm0, %xmm0 012a F30F2AC0 cvtsi2ss %eax, %xmm0 012e F30F108D movss -424(%rbp), %xmm1 58FEFFFF 0136 F30F5EC8 divss %xmm0, %xmm1 013a 0F28C1 movaps %xmm1, %xmm0 013d F30F1185 movss %xmm0, -420(%rbp) 5CFEFFFF 0145 F30F5A85 cvtss2sd -420(%rbp), %xmm0 5CFEFFFF 014d BF000000 movl $.LC7, %edi 00 0152 B8010000 movl $1, %eax 00 0157 E8000000 call printf 00 015c B8000000 movl $0, %eax 00 0161 488B4DF8 movq -8(%rbp), %rcx 0165 6448330C xorq %fs:40, %rcx 25280000 00 016e 7405 je .L7 0170 E8000000 call __stack_chk_fail 00 .L7: 0175 C9 leave .cfi_def_cfa 7, 8 0176 C3 ret .cfi_endproc .LFE0: .Letext0: