$24
Objective: Learn memory organization/layout, data transfer concepts and instructions, direct memory access, memory allocation.
Requirements:
1. (5 points) Write an assembly program to compute the following expressions
◦ Create a DWORD array named ‘z’ of size 3 using DUP operator. Leave the array ‘z’ uninitialized. You can denote the items in the array as [ !, ", #], where ! is the first item, " is the second item, # is the third item
◦ Update each array item using the following expressions.
! = +130
"=+−!
#= + −13
◦ Where x, y, r are 16-bit integer memory variables.
◦ x = 10, y = 15, r = 4
◦ Use mov, movzx, movsx, add, sub instructions only.
◦ (hint: Do not alter the value of x, y and r during the computation. Transfer them to appropriate registers to do computation)
◦ At the end, open memory window to see the variable z stored in memory (little endian format).
◦ If you code correctly, ! = 140 in decimal, " = −115 in decimal, # = 1 in decimal
◦ Use the debugger to verify your answer. o Submit the following:
• Rename the asm file using your last name as Lastname1.asm
• Screenshot of the code and memory window showing the content of the variable z (little endian format).
2. (5 points) Use a loop instruction with indirect addressing to solve the problem.
◦ Do not copy the elements to any other array.
◦ Use the LOOP and XCHG instruction.
◦ The input array, inputStr contains elements: “A”, “B”, “C”, “D”, “E”, “F”, “G”, “H”.
◦ The array’s elements after running the program should look like: “H”, “G”, “F”, “E”, “D”, “C”, “B”, “A”. o Submit the following:
▪ Rename the asm file using your last name as Lastname2.asm
▪ Screenshot of the code and memory window showing the content of the variable inputStr.
3. (5 points) Write an assembly program that does the following:
◦ Define the following value 0506030704080102h in the .data segment using the 64-bit unsigned identifier named qVal.
◦ You can subdivide the qVal value into 4 words – 0506, 0307, 4080, 0102
◦ Extract these words from qVal using PTR operator.
◦ Find the sum of the words. The sum should be D17h.
◦ Store the result in any 16-bit register.
◦ The direction of adding two words goes from left to right. o Submit the following:
• Rename the asm file using your last name as Lastname3.asm
• Screenshot of the code and memory window showing the result in a 16-bit register.
Note:
• Comment header for .ASM files: Student: Full name Class: CSC3210 Assignment#: 3
Description: This program ………….
• Follow the program standards as presented in your book. Pay more attention to code comments and consistent indentation.
• Create a new project for every question. Do not use one project with multiple .asm files.