Description
Objective: Learn memory organization/layout, data transfer concepts and instructions, direct memory access, memory allocation.
Requirements:
-
(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).
-
-
-
-
(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.
-
-
-
(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.
-
-
-
-
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.