CS401 Assignment No. 1 solution

No Comments

CS401- Computer Architecture and Assembly Language Programming
Assignment # 1
Fall 2010
                                                           Total Marks: 20
Due Date
Your assignment must be uploaded before or on 8th Nov 2010.
Upload Instructions
Please view the document related to assignment submission process provided to you by the Virtual University to upload the assignment.
Rules for Marking
Kindly note that your assignment will NOT be graded if:
§  It is submitted after due date
§  The file you uploaded does not open
§  The file you uploaded is copied from someone else
§  It is in the format other than .doc
Objective
This assignment has been designed to enable you:
§  To understand how effective address is calculated
§  To understand how physical memory address is calculated
§  To understand Register
§  To understand the use of debugger and how to read value from Debugger

Assignment

Question_1:                                                                                                                        [marks: 5]
What is the effective address generated by each of the following instruction?
 Initially AX= 0x0FED, BX=0x0400, label=0x04201, and SI=0x00E1
 (Offsets in part a, b and f are in decimal)
  1. mov ax, [bx+65]
  2. mov bx, [ax+35]
  1. mov ax, [bx+label]
  2. mov bx, [label+ax]
  1. mov bx, [ax+si]


Question_2:                                                                                                                        [marks: 5]
Calculate the physical memory address generated by the following segment:offset pairs (both are hexadecimal values).
  1. 0000:FFFF
  2. 0100:0100
  1. DEF8:2222
  2. 543F:3254
  1. FFFF:AAAA

Question_3:
Write the given program, assemble it and then analyze it in Debugger                          [marks: 10]

[org 0x0100]
mov al, [num1]
mov bl, [num1+1]
mov bl, [num1+2]
add al, bl
mov ax, 0x4c00
int 0x21

num1: db 5, 10, 15, 0

After analysis you have to provide all information that is asked under:

al,bl and IP Register

You have to fill the table given below and write the values of al,bl and IP registers before and after execution of an instruction as you analyze in debugger. You also have to give reason that why the value of al,bl and IP registers change after a particular instruction. Give reason in corresponding column.

Instruction
Before Execution
After Execution(with Reasons)
Value of al
Value of bl
Value of IP
Value of al
Value of bl
Value of IP
mov al,[num1]






mov bl,[num1+1]






add al,bl






mov bl,[num1+2]






add al,bl






mov [num1+3],al







You also have to provide the following information

Address of num1=?
Address of num1+1=?
Address of num1+2=?
Address of num1+3=?
Value of num1+3(at end of program) =?

Note:Do it youself.Cheating case will be awarded with zero

Solution:

 

Question_1:                                                                                                                       [marks: 5]
What is the effective address generated by each of the following instruction?
 Initially AX= 0x0FED, BX=0x0400, label=0x04201, and SI=0x00E1
 (Offsets in part a, b and f are in decimal)

  1. mov ax, [bx+65]
  2. mov bx, [ax+35]
  1. mov ax, [bx+label]
  2. mov bx, [label+ax]
  1. mov bx, [ax+si]

Question_2:                                                                                                                       [marks: 5]
Calculate the physical memory address generated by the following segment:offset pairs (both are hexadecimal values).

  1. 0000:FFFF=0FFFF
  2. 0100:0100=01100
  1. DEF8:2222 = E11A2
  2. 543F:3254=57644
  1. FFFF:AAAA=10AA9A =0AA9A wrap around

Question_3:
Write the given program, assemble it and then analyze it in Debugger                              [marks: 10]

[org 0x0100]
mov al, [num1]
mov bl, [num1+1]
mov bl, [num1+2]
add al, bl
mov ax, 0x4c00
int 0x21


num1: db 5, 10, 15, 0


After analysis you have to provide all information that is asked under:

al,bl and IP Register

You have to fill the table given below and write the values of al,bl and IP registers before and after execution of an instruction as you analyze in debugger. You also have to give reason that why the value of al,bl and IP registers change after a particular instruction. Give reason in corresponding column.

Instruction
Before Execution
After Execution(with Reasons)
Value of al
Value of bl
Value of IP
Value of al
Value of bl
Value of IP
mov al,[num1]
0000
0000
0100
0005
0000
0103
mov bl,[num1+1]
0005
0000
0103
0005
000A
0107
add al,bl
0005
000A
0107
000F
000A
0109
mov bl,[num1+2]
000F
000A
0109
000F
000F
010D
add al,bl
000F
000F
010D
001E
000F
010F
mov [num1+3],al
001E
000F
010F
001E
000F
0112


You also have to provide the following information

Address of num1=0117
Address of num1+1=0118
Address of num1+2=0119
Address of num1+3=011A
Value of num1+3(at end of program) =?
.....................
 Another Solution:





.........

Differences between Linked List and Arrays


Linked lists are data structure which is the self-referential class objects called nodes. Each node is connected by reference links. Make yourself clear that linked lists are not dynamically sized array.
An array is data structure (type of memory layout) that stores a collection of individual values that are of the same data type. Arrays are useful because instead of having to separately store related information in different variables (named memory locations), you can store them—as a collection—in just one variable. It is more efficient for a program to access and process the information in an array, than it is to deal with many separate variables.
Consider the following points of differences between the two:

Linked Lists

Arrays

1. 
Linked lists allow only sequential access to elements. Thus the algorithmic complexities is order of O(n)
1. 
Arrays allow random access to its elements and thus the complexity is order of O(1)
2. 
Linked lists require an extra storage for references. This makes them impractical for lists of small data items such as characters or boolean values.
2. 
Arrays do not need an extra storage to point to next data item. Each element can be accessed via indexes.
3. 
The size of Linked lists are dynamic by nature.
3. 
The size of array is restricted to declaration.
4. 
Elements can be inserted and deleted in linked lists indefinitely.
4. 
Insertion/Deletion of values in arrays are very expensive. It requires memory reallocation.

 

Differences between  Array and stack

Answer

Briefly, there are two main differences between an array and a stack. Firstly, an array can be multi-dimensional, while a stack is strictly one-dimensional. Secondly, an array allows direct access to any of its elements, whereas with a stack, only the 'top' element is directly accessible; to access other elements of a stack, you must go through them in order, until you get to the one you want.
Next PostNewer Post Previous PostOlder Post Home

0 comments

Post a Comment