$30
CSC 3210 – Assignment #3
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.