Starting from:
$30

$24

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.

More products