SOLVED CS401 Assignment 1 Solution and Discussion
-
Computer Architecture and Assembly Language Programming (CS401)
Total marks = 20
Due Date:
November 14, 2019
Assignment # 01
Please carefully read the following instructions before attempting assignment.
RULES FOR MARKING It should be clear that your assignment would not get any credit if:
The assignment is submitted after the due date.
The submitted assignment does not open or file is corrupt.
Strict action will be taken if submitted solution is copied from any other student or from the
internet.
You should concern the recommended books to clarify your concepts as handouts are not sufficient.
You are supposed to submit your assignment in .doc or docx format.
Any other formats like scan images, PDF, zip, rar, ppt and bmp etc. will not be accepted. Topic Covered:
Basic DOSBox and NASM understanding to run assembly code
Various Addressing modes to access memory
NOTE
No assignment will be accepted after the due date via email in any case (whether it is the case of load shedding or internet malfunctioning etc.). Hence refrain from uploading assignment in the last hour of deadline. It is recommended to upload solution file at least two days before its closing date.
If you people find any mistake or confusion in assignment (Question statement), please consult with your instructor before the deadline. After the deadline no queries will be entertained in this regard.
For any query, feel free to email atProblem Statement:
Save your complete VUID in memory using Base Register Indirect + Offset addressing mode (if last digit of your VUID is Odd) or Indexed Register Indirect + Offset addressing mode (if last digit of your VUID is even).
Detailed Instructions:
This assignment will give hands on experience of how to run assembly language code using DOSBox and NASM. First, you have to define labels for storing your VUID and then store each alphabet/digit of VUID, step by step, in to any general purpose registers. Finally, store the alphabet/digit from general purpose register to respective memory location (which you have defined by label in above step).
Addressing Modes to use:
In order to access VUID and storing it in memory, you have to use ONE of the following addressing modes:
Base Register Indirect + Offset (only if last digit of your VUID is Odd)
Indexed Register Indirect + Offset (only if last digit of your VUID is Even)
NOTE: Zero marks will be awarded, if you do not follow proper addressing mode.
What to Submit:
After writing your code, open DOSBox and run NASM (as described in video tutorial shared in Announcement page of this course). Assemble the code using nasm command and take screenshot. After that, open the COM file in debugger (AFD).
Run your code by pressing F1 key until last statement of code is reached. At this stage, Data Window # 2 of AFD should display your complete VUID (at consecutive locations; see below example). Also take screenshot of AFD.
Your assignment must be submitted as a SINGLE WORD document (DOC or DOCX) with:- Code written in Word
- Screenshot of compilation step (DOSBox)
- Screenshot of AFD
NOTE: When you take screenshot of compilation step and AFD, take screenshot of whole screen, not of DOSBox and AFD. Cropping or any tempering with screenshot will result in ZERO marks.
Example:
Suppose a student VUID is BC123456789. The last digit of this VUID is 9 which is an Odd number. So, this student will use Base Register Indirect + Offset addressing mode to solve this assignment.
Sample screenshot of final output:
Note that Data Window # 2 is showing student VUID:
Helping Material:
Detailed video tutorial of how to use DOSBox and NASM is already shared with you in Announcement page of this course
Command to manipulate Data Windows of AFD is mentioned in AFD tutorial (link is given in the same Announcement)
Use ASCII table for first two alphabets of your VUID -
SOLUTION:
If last digit of VUID is Odd: BASE REGISTER INDIRECT + OFFSET [org 0x100] mov bx, 0 mov ax, 0 mov ax, [ID+bx] mov [myID], ax mov ax, [ID+bx+2] mov [myID+1], ax mov ax, [ID+bx+4] mov [myID+2], ax mov ax, [ID+bx+6] mov [myID+3], ax mov ax, [ID+bx+8] mov [myID+4], ax mov ax, [ID+bx+10] mov [myID+5], ax mov ax, [ID+bx+12] mov [myID+6], ax mov ax, [ID+bx+14] mov [myID+7], ax mov ax, [ID+bx+16] mov [myID+8], ax mov ax, [ID+bx+18] mov [myID+9], ax mov ax, [ID+bx+20] mov [myID+10], ax mov ax, 0x4c00 int 0x21 ID: dw 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9 myID: dw 0 If last digit of VUID is Even: Indexed Register Indirect + Offset [org 0x100] mov si, 0 mov ax, 0 mov ax, [ID+si] mov [myID], ax mov ax, [ID+si+2] mov [myID+1], ax mov ax, [ID+si+4] mov [myID+2], ax mov ax, [ID+si+6] mov [myID+3], ax mov ax, [ID+si+8] mov [myID+4], ax mov ax, [ID+si+10] mov [myID+5], ax mov ax, [ID+si+12] mov [myID+6], ax mov ax, [ID+si+14] mov [myID+7], ax mov ax, [ID+si+16] mov [myID+8], ax mov ax, [ID+si+18] mov [myID+9], ax mov ax, [ID+si+20] mov [myID+10], ax mov ax, 0x4c00 int 0x21 ID: dw 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 8 myID: dw 0
-
Idea!
-
-
SOLUTION:
If last digit of VUID is Odd: BASE REGISTER INDIRECT + OFFSET [org 0x100] mov bx, 0 mov ax, 0 mov ax, [ID+bx] mov [myID], ax mov ax, [ID+bx+2] mov [myID+1], ax mov ax, [ID+bx+4] mov [myID+2], ax mov ax, [ID+bx+6] mov [myID+3], ax mov ax, [ID+bx+8] mov [myID+4], ax mov ax, [ID+bx+10] mov [myID+5], ax mov ax, [ID+bx+12] mov [myID+6], ax mov ax, [ID+bx+14] mov [myID+7], ax mov ax, [ID+bx+16] mov [myID+8], ax mov ax, [ID+bx+18] mov [myID+9], ax mov ax, [ID+bx+20] mov [myID+10], ax mov ax, 0x4c00 int 0x21 ID: dw 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9 myID: dw 0 If last digit of VUID is Even: Indexed Register Indirect + Offset [org 0x100] mov si, 0 mov ax, 0 mov ax, [ID+si] mov [myID], ax mov ax, [ID+si+2] mov [myID+1], ax mov ax, [ID+si+4] mov [myID+2], ax mov ax, [ID+si+6] mov [myID+3], ax mov ax, [ID+si+8] mov [myID+4], ax mov ax, [ID+si+10] mov [myID+5], ax mov ax, [ID+si+12] mov [myID+6], ax mov ax, [ID+si+14] mov [myID+7], ax mov ax, [ID+si+16] mov [myID+8], ax mov ax, [ID+si+18] mov [myID+9], ax mov ax, [ID+si+20] mov [myID+10], ax mov ax, 0x4c00 int 0x21 ID: dw 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 8 myID: dw 0


100% Off on Your FEE Join US! Ask Me How?


