CS401 Assignment 2 Solution and Discussion


  • Cyberian's Gold

    Computer Architecture and Assembly Language Programming (CS401)
    Assignment # 02
    Total marks = 20

    Deadline Date
    Nov 26, 2019

    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:
    • Addressing Modes
    • Branching
    • Subroutines•
    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 at:
    [email protected]

    Q1. Write a subroutine that will find the first even number from an array of your VU ID and calculate its factorial. (10 Marks)

    Note: Skip 0’s in your VU ID as shown below,
    VU ID: BC190206435
    After skipping 0’s, array would be:
    Array: 1, 9, 2, 6, 4, 3, 5
    The first even number is 2 in the array so its factorial will be calculated and saved in AX register.

    Q2. Write a code in assembly language (using appropriate jumps) equivalent to this given code in C. (10 Marks)

    #include <stdio.h>
    int main()
    {
        int n1=1, n2=2;
        int largest;
        if( n1>n2)
            largest=n1;
    else
            largest = n2;
        return 0;
    }
    

    “The End”


  • Cyberian's Gold

    Q1. Write a subroutine that will find the first even number from an array of your VU ID and calculate its factorial. (10 Marks)

    Note: Skip 0’s in your VU ID as shown below,
    VU ID: BC190206435
    After skipping 0’s, array would be:
    Array: 1, 9, 2, 6, 4, 3, 5
    The first even number is 2 in the array so its factorial will be calculated and saved in AX register.
    Solution:

    [org 0x100]
    	jmp start
    data:  dw 1, 9,2,6,4,3,5
         
    
    ;initiliazation
    
    
    checkEven:  
            mov dl,0002h          
            mov ax,[data+bx]
            mov cx,[data+bx]
            xor ah,ah
            xor ch,ch
            div dl
            cmp ah,00h    ;checking remainder
            je fact
            add bx,2
            jmp checkEven
    fact:   
            mov ax,0001
            mov dx,0000
    mult:	
            mul cx
            loop mult
    	
            ret
    
    start:  mov si,00h
               mov bx,si
               call checkEven
    	                  
            
    mov ax,0x4c00
    int 0x21
    

    Q2. Write a code in assembly language (using appropriate jumps) equivalent to this given code in C. (10 Marks)
    #include <stdio.h>
    int main()
    {
    int n1=1, n2=2;
    int largest;
    if( n1>n2)
    largest=n1;
    else
    largest = n2;
    return 0;
    }

    Solution:

    Assembly code:

    [org 0x100]
    jmp start
    n1 db 1
    n2 db 2
    largest db 0
    
    start:
    	mov ax, [n1]
    	xor ah,ah
    	mov bx, [n2]
    	cmp ax,bx
    	ja large
    	mov [largest],bx 
    
    large:  mov [largest],ax
    
    
    mov ax, 0x4c00
    int 21h
    

  • Cyberian's Gold

    Q1. Write a subroutine that will find the first even number from an array of your VU ID and calculate its factorial. (10 Marks)

    Note: Skip 0’s in your VU ID as shown below,
    VU ID: BC190206435
    After skipping 0’s, array would be:
    Array: 1, 9, 2, 6, 4, 3, 5
    The first even number is 2 in the array so its factorial will be calculated and saved in AX register.
    Solution:

    [org 0x100]
    	jmp start
    data:  dw 1, 9,2,6,4,3,5
         
    
    ;initiliazation
    
    
    checkEven:  
            mov dl,0002h          
            mov ax,[data+bx]
            mov cx,[data+bx]
            xor ah,ah
            xor ch,ch
            div dl
            cmp ah,00h    ;checking remainder
            je fact
            add bx,2
            jmp checkEven
    fact:   
            mov ax,0001
            mov dx,0000
    mult:	
            mul cx
            loop mult
    	
            ret
    
    start:  mov si,00h
               mov bx,si
               call checkEven
    	                  
            
    mov ax,0x4c00
    int 0x21
    

    Q2. Write a code in assembly language (using appropriate jumps) equivalent to this given code in C. (10 Marks)
    #include <stdio.h>
    int main()
    {
    int n1=1, n2=2;
    int largest;
    if( n1>n2)
    largest=n1;
    else
    largest = n2;
    return 0;
    }

    Solution:

    Assembly code:

    [org 0x100]
    jmp start
    n1 db 1
    n2 db 2
    largest db 0
    
    start:
    	mov ax, [n1]
    	xor ah,ah
    	mov bx, [n2]
    	cmp ax,bx
    	ja large
    	mov [largest],bx 
    
    large:  mov [largest],ax
    
    
    mov ax, 0x4c00
    int 21h
    

  • Cyberian's Gold



Quiz 100% Result Quiz 100% Result
| |