PART 1 l. In the ARM program on the next page, a block of “constant data” has been defined, which will be placed by the assembler in the CODE area in memory after the codes for the instructions Assuming that program code begins at address 0x20000000, the first data value should be placed by the assembler at address 0x2000002C Assembly directives “dcd”, “dcb”, and “space” are described in section 3.6 of the text Program instructions are described briefly in section 3 Instructions “ldr “mov”, and “movt” are described in sections 5.1 and 5.3 2. Using the format of Table 1.3 in the text, but with a separate row for each byte, sketch a diagram of the memory allocated by the assembler for the constant data part of the test program (ocations pp through tmp), beginning at address 0x2000002C. In each row of the table, enter the address of that byte of memory and the value that will be stored in that byte. Also, next to the appropriate rows, indicate which byte of memory corresponds to each symbolic label. Use hexadecimal form for each number 3. For each of the CPU instructions in the program, determine the 32-bit hex values that you predict would be loaded into the indicated registers as the program executes, and enter those on the lines to the right of the instructions 4. Create a new ARM project, enter the program, assemble it, load it into the simulator with the debugger, and single-step through the program in the debugger to check your answers. Next to your answers, record the register values observed in the debugger, and comment on any values that are different from what you found in part 3, Submit aprintout of the program, with your values from parts 3 and 4 entered on the lines provided. Test program on next page)