MAP Notes_ CHapter 5 Part 2

download MAP Notes_ CHapter 5 Part 2

of 15

Transcript of MAP Notes_ CHapter 5 Part 2

  • 8/19/2019 MAP Notes_ CHapter 5 Part 2

    1/35

    MAP notesChapter 5: 8086 Assembly Language programming – Part 2

    Programming using Assembler:

    Write an assembly language program to add two 8 bit numbers

    Program:

    assume cs : code

    assume ds : data

    data segment

    a db 25h

    b db 34h

    sum db ?

    data ends

    code segment

    start: mov ax,data

    mov ds,ax

    mov ax,0000h

    mov al,a

    mov bl,b

    add al,bl mov sum,al

    int 3

    code ends

    end start

  • 8/19/2019 MAP Notes_ CHapter 5 Part 2

    2/35

    Write an assembly language program to add two 16 bit numbers

    Program:

    assume cs : code

    assume ds : data

    data segment

    a dw ! h

    b dw 22"2h

    sum dw ?

    data ends

    code segment

    start:

    mov ax,data

    mov ds,ax

    mov ax,0000h

    mov ax,a

    mov bx,b

    add ax,bx

    mov sum,ax

    int 3

    code ends

    end start

    Write an assembly language program to subtract two 16 bit numbers

    Program:

    assume cs : code

    assume ds : data

  • 8/19/2019 MAP Notes_ CHapter 5 Part 2

    3/35

    data segment

    a dw 3400h

    b dw 2500hdi# dw ?

    data ends

    code segment

    start:

    mov ax,data

    mov ds,ax mov ax,0000h

    mov bx,a

    mov ax,b

    sub bx,ax

    mov di#,bx

    int 3

    code ends

    end start

    Write an assembly language program to find the sum of series of n numbers.

    Program:

    assume cs : code

    assume ds : data

    data segment

    series db 0h,20h,40h,!0h,$"h

    res dw ?

    data ends

  • 8/19/2019 MAP Notes_ CHapter 5 Part 2

    4/35

    code segment

    start:

    mov ax,data

    mov ds,ax mov ax,0000h

    lea si,series

    mov al,%si&

    mov cl,04

    u': inc simov bl,%si&

    add al,bl

    (c down

    u' : dec cl

    (n) u'

    (m' exit

    down: inc ah

    (m' u'

    exit: mov res,ax

    int 3

    code ends

    end start

    Write an assembly language program to multiply two 8 bit unsigned numbers

    Program:

    assume cs : code

    assume ds : data

  • 8/19/2019 MAP Notes_ CHapter 5 Part 2

    5/35

    data segment

    a db 25h

    b db 40hresult dw ?

    data ends

    code segment

    start:

    mov ax,data

    mov ds,ax mov ax,0000h

    mov al,a

    mov bl,b

    mul bl

    mov result,ax

    int 3

    code ends

    end start

    Write an assembly language program to multiply two 16 bit unsigned numbers

    Program:

    assume cs : code

    assume ds : data

    data segment

    a dw 2525h

    b dw 4040h

    result dd ?

  • 8/19/2019 MAP Notes_ CHapter 5 Part 2

    6/35

    data ends

    code segment

    start: mov ax,data

    mov ds,ax

    mov ax,0000h

    mov ax,a

    mov bx,b

    mul bx lea si,result

    mov %si&,dh

    inc si

    mov %si&,dl

    inc si

    mov %si&,ah

    inc si

    mov %si&,al

    int 3

    code ends

    end start

    Write an assembly language program to multiply two 8 bit signed numbers

    Program:

    assume cs : code

    assume ds : data

    data segment

    a db 5h

    b db * $h

  • 8/19/2019 MAP Notes_ CHapter 5 Part 2

    7/35

    result dw ?

    data ends

    code segmentstart:

    mov ax, data

    mov ds, ax

    mov ax,0000h

    mov al,a

    mov bl,b imul bl

    mov result, ax

    int 3

    code ends

    end start

    Write an assembly language program to multiply two 16 bit signed numbers

    Program:

    assume cs : code

    assume ds : data

    data segment

    a dw 000h b dw *2000h

    result dd ?

    data ends

    code segment

    start:

    mov ax,data

  • 8/19/2019 MAP Notes_ CHapter 5 Part 2

    8/35

    mov ds,ax

    mov ax,0000h

    mov ax,a mov bx,b

    imul bx

    lea si,result

    mov %si&,dh

    inc si

    mov %si&,dl

    inc si mov %si&,ah

    inc si

    mov %si&,al

    int 3

    code ends

    end start

    Write an assembly language program to divide two unsigned numbers (8bits/8bits)

    Program:

    assume cs : code

    assume ds : data

    data segmenta db +4h

    b db 3 h

    uo db ?

    rem db ?

    data ends

    code segment

  • 8/19/2019 MAP Notes_ CHapter 5 Part 2

    9/35

    start:

    mov ax,data

    mov ds,ax

    mov ax,0000h mov al,a

    mov bl,b

    div bl

    mov uo,al

    mov rem,ah

    int 3 code ends

    end start

    Write an assembly language program to divide two unsigned numbers (16bits/8bits)

    Program:

    assume cs : code

    assume ds : data

    data segment

    a dw 200h

    b db $!h

    uo db ?

    rem db ?

    data ends

    code segment

    start:

    mov ax,data

    mov ds,ax

    mov ax,0000h

    mov ax,a

  • 8/19/2019 MAP Notes_ CHapter 5 Part 2

    10/35

    mov bl,b

    div bl

    mov uo,al

    mov rem,ah

    int 3

    code ends

    end start

    Write an assembly language program to divide two unsigned numbers (16bits/16bits)

    Program:

    assume cs : code

    assume ds : data

    data segment

    a dw 200h

    b dw +"$h

    uo dw ?rem dw ?

    data ends

    code segment

    start:

    mov ax,data

    mov ds,ax mov ax,0000h

    mov dx,0000h

    mov ax,a

    mov bx,b

    div bx

    mov uo,ax

  • 8/19/2019 MAP Notes_ CHapter 5 Part 2

    11/35

    mov rem, dx

    int 3

    code ends end start

    Write an assembly language program to divide two unsigned numbers (3 bits/16bits)

    Program:

    assume cs : code

    assume ds : data

    data segment

    a dd 0000000h

    b dw !000h

    uo dw ?

    rem dw ?

    data ends

    code segment

    start:

    mov ax,data

    mov ds,ax

    mov ax,0000h

    lea si,a

    mov al,%si&

    mov ah,%si- &

    mov dl, %si-2&

    mov dh, %si-3&

    mov bx,b

    div bx

  • 8/19/2019 MAP Notes_ CHapter 5 Part 2

    12/35

    mov uo, ax

    mov rem, dx

    int 3

    code ends end start

    !ote" #or signed division only instruction will change from div to idiv and if either

    dividend or divisor is negative$ %uotient will also be negative and remainder will be

    positive. &f both dividend and divisor are negative then remainder and %uotient both are

    positive.

    Write an assembly language program to find the smallest number from a given array of n

    numbers

    Program:

    assume cs : code

    assume ds : data

    data segment

    arra. db 0!, 0,$, 2

    smallest db ?

    data ends

    code segment

    start:

    mov ax,data mov ds,ax

    mov ax,0000h

    lea si,arra.

    mov al,%si&

    mov cl,03

  • 8/19/2019 MAP Notes_ CHapter 5 Part 2

    13/35

    u': inc si

    mov bl, %si&

    cm' al, bl

    (c down mov al, bl

    down: dec cl

    (n) u'

    mov smallest,al

    int 3 code ends

    end start

    Write an assembly language program to find the largest number from array of n numbers.

    Program:

    assume cs : codeassume ds : data

    data segment

    arra. db 0!, 0, , 2

    largest db ?

    data ends

    code segment

    start:

    mov ax,data

    mov ds,ax

    mov ax,0000h

    lea si,arra.

  • 8/19/2019 MAP Notes_ CHapter 5 Part 2

    14/35

    mov al,%si&

    mov cl,03

    u': inc si mov bl, %si&

    cm' al, bl

    (nc down

    mov al,%si&

    down: dec cl

    (n) u' mov largest,al

    int 3

    code ends

    end start

    Write an assembly language program to arrange n numbers in an array in ascending order

    Program:

    assume cs : code

    assume ds : data

    data segment

    arra. db 0h, 5h,!h,"h,4hdata ends

    code segment

    start:

    mov ax,data

    mov ds,ax

    mov ax,0000h

  • 8/19/2019 MAP Notes_ CHapter 5 Part 2

    15/35

    mov cl,04

    u'2: mov ch,04

    lea si,arra. u' : mov al,%si&

    inc si

    cm' al,%si&

    (c down

    xchg %si&,al

    dec si xchg %si&,al

    inc si

    down: dec ch

    (n) u'

    dec cl

    (n) u'2

    int 3

    code ends

    end start

    Write an assembly language programming to arrange an array of n numbers in descending

    order

    assume cs : code

    assume ds : data

    data segment

    arra. db h,5h,!h,"h,4h

    data ends

  • 8/19/2019 MAP Notes_ CHapter 5 Part 2

    16/35

    code segment

    start:

    mov ax,data

    mov ds,ax

    mov ax,0000h

    mov cl,04

    u'2: mov ch,04

    lea si,arra.

    u' : mov al,%si&

    inc si

    cm' al,%si&

    (nc down

    mov dl,%si&

    mov %si&,al

    dec si

    mov %si&,dl

    inc si

    down: dec ch

    (n) u'

    dec cl

    (n) u'2

  • 8/19/2019 MAP Notes_ CHapter 5 Part 2

    17/35

    int 3

    code ends

    end start

    Write a program in assembly language to perform bloc' transfer of data without using

    string instructions

    Program:

    assume cs : code

    assume ds : data

    data segment

    bloc/ db 0h,20h,30h,40h,50h

    bloc/2 db 5 du' 01

    data ends

    code segment

    start:

    mov ax,data

    mov ds,ax

    mov ax,0000h

    lea si,bloc/

    lea di,bloc/2

    mov cl,5

  • 8/19/2019 MAP Notes_ CHapter 5 Part 2

    18/35

    u': mov al,%si&

    mov %di&,al

    inc si

    inc di

    dec cl

    (n) u'

    int 3

    code ends

    end start

    Write a program in assembly language to perform bloc' transfer of data using string

    instructions

    Program:

    assume cs : code

    assume ds : data

    data segment

    bloc/ db 0h,20h,30h,40h,0 0 0000b

    data ends

    extra segment

    bloc/2 db 5 du' ?1extra ends

    code segment

    start:

    mov ax,data

    mov bx,extra

    mov ds,ax

  • 8/19/2019 MAP Notes_ CHapter 5 Part 2

    19/35

    mov es,bx

    mov ax,0000h

    lea si,bloc/ lea di, bloc/2

    cld

    mov cl, 05h

    re') movsb

    int 3

    code ends

    end start

    Write an assembly language program to compare two strings without using string

    instructions and display the result accordingly

    Program:

    assume cs : code

    assume ds : data

    data segment

    string db abcde

    string2 db abcde

    msg db oth the strings are same

    msg2 db oth the strings are not same

    data ends

    code segment

    start:

    mov ax,data

    mov ds,ax

    mov ax,0000h

    lea si,string

  • 8/19/2019 MAP Notes_ CHapter 5 Part 2

    20/35

    lea di,string2

    u': mov al,%si&

    cm' al,%di& (ne down

    inc si

    inc di

    cm' al,

    (ne u'

    lea dx,msg

    mov ah,0! int 2 h

    (m' exit

    down: lea dx,msg2

    mov ah,0!

    int 2 h

    exit: mov ah,4ch

    int 2 h

    code ends

    end start

    Write an assembly language program to compare two strings using string instructions and

    display the result accordingly.

    Program:

    assume cs : code

    assume ds : data

    assume es : extra

    data segment

    string db vbcde

  • 8/19/2019 MAP Notes_ CHapter 5 Part 2

    21/35

    msg db oth the strings are same

    msg2 db oth the strings are not same

    data ends

    extra segment

    string2 db vwx.)

    extra ends

    code segment

    start:

    mov ax,data mov ds,ax

    mov ax,extra

    mov es,ax

    mov ax,0000h

    mov cl,5

    cld

    lea si,string

    lea di,string2

    re') cm'sb

    () msg

    lea dx,msg2

    mov ah,0!

    int 2 h

    (m' exit

    msg: lea dx,msg

    mov ah,0!

    int 2 h

    exit: mov ah,4ch

    int 2 h

    code ends

  • 8/19/2019 MAP Notes_ CHapter 5 Part 2

    22/35

    end start

    Write a program in assembly language to calculate the length of the string

    Program:

    assume cs : code

    assume ds : data

    data segment

    string db x.)

    strlength db ?

    data ends

    code segment

    start:

    mov ax,data

    mov ds,ax

    mov ax,0000h

    lea si,string

    mov cl,00h

    u': mov al,%si&

    cm' al,

    (e down

    inc si

    inc cl (m' u'

    down: mov strlength, cl

    int 3

    code ends

    end start

    Write an assembly language program to display string in reverse order

  • 8/19/2019 MAP Notes_ CHapter 5 Part 2

    23/35

    Program:

    assume cs : code

    assume ds : data

    data segment

    string db 6MA7A8A97 8A

    stringreverse db 00 du' ?1

    msg db he reverse o# the string is:

    data ends

    code segmentstart:

    mov ax,data

    mov ds,ax

    mov ax,0000h

    lea si,string

    u': mov al,%si&

    cm' al,

    (e down

    inc si

    (m' u'

    down: lea di,stringreverse

    mov cx,si

    u' : dec si

    mov al,%si&

    mov %di&,al

    inc di

    dec cx

    (n) u'

    mov al,

    mov %di&,al

  • 8/19/2019 MAP Notes_ CHapter 5 Part 2

    24/35

    lea dx,msg

    mov ah,0!

    int 2 h

    lea dx,stringreverse mov ah,0!

    int 2 h

    mov ah,4ch

    int 2 h

    code ends

    end start

    Write an assembly language program to concatenate two strings (two words)

    assume cs : code

    assume ds : data

    data segment

    msg db he two strings are :

    string db 0, 3, ;# .ou don t stud. string2 db 0, 3,

  • 8/19/2019 MAP Notes_ CHapter 5 Part 2

    25/35

    lea dx,string

    mov ah,0!

    int 2 h lea dx,string2

    mov ah,0!

    int 2 h

    =#rom here the concatenation 'rocedure starts

    lea si,string

    lea di,string2

    u': inc si

    mov al,%si&

    cm' al,

    (ne u'

    u' : mov al,%di-2&

    mov %si&,al

    inc si

    inc di

    cm' al,

    (ne u'

    lea dx,msg2

    mov ah,0!

    int 2 h

    lea dx,string

    mov ah,0!

    int 2 h

    mov ah,4ch

  • 8/19/2019 MAP Notes_ CHapter 5 Part 2

    26/35

    int 2 h

    code ends

    end start

    Write an assembly language program to add two * numbers

    Program:

    assume cs : code

    assume ds : data

    data segment

    a db 00 0 0b

    b db 00000 b

    result dw ?

    data ends

    code segment

    start:

    mov ax,data mov ds,ax

    mov ax,0000h

    mov al,a

    mov bl,b

    add al,bl

    daa (c down

    mov result,ax

    (m' exit

    down: inc ah

    mov result,ax

    exit: int 3

    code ends

  • 8/19/2019 MAP Notes_ CHapter 5 Part 2

    27/35

    end start

    Write an assembly language program to subtract two * numbers

    Program:

    assume cs : code

    assume ds : data

    data segment

    a db 00 00 0b

    b db 000 0 b

    result db ?

    data ends

    code segment

    start:

    mov ax,data

    mov ds,ax

    mov ax,0000h

    mov al,a

    mov bl,b

    sub al,bl

    das

    mov result,al

    int 3

    code ends

    end start

    Write an assembly language program to multiply two * numbers

    Program:

    assume cs : codeassume ds : data

  • 8/19/2019 MAP Notes_ CHapter 5 Part 2

    28/35

    data segment

    a db 04

    b db 0+result dw ?

    data ends

    code segment

    start:

    mov ax,data

    mov ds,axmov ax,0000h

    mov al,a

    mov bl,b

    mul bl

    aam

    mov result, ax

    int 3

    code ends

    end start

    Write an assembly language program to divide two * numbers

    Program:assume cs : code

    assume ds : data

    data segment

    a dw 0+00h

    b db 04

    uo db ?

  • 8/19/2019 MAP Notes_ CHapter 5 Part 2

    29/35

    rem db ?

    data ends

    code segmentstart:

    mov ax,data

    mov ds,ax

    mov ax,0000h

    mov ax,a

    mov bl,baad

    div bl

    daa

    int 3

    code ends

    end start

    Write an assembly language program to convert a decimal number to he+adecimal

    number.

    Program:

    assume cs : code

    assume ds : data

    data segmentdeci db 45h

    hexi db ?

    data ends

    code segment

    start:

    mov ax,data

  • 8/19/2019 MAP Notes_ CHapter 5 Part 2

    30/35

    mov ds,ax

    mov ax,0000h

    mov al,deci and al,0#h

    mov dl,al

    mov al,deci

    and al,0#0h

    mov cl,04h

    rol al,cl

    mov dh,0ah mul dh

    add al,dl

    mov hexi,al

    int 3

    code ends

    end start

    Write an assembly language program to find odd and even numbers in an array

    assume cs:code

    assume ds:data

    data segment

    arra. db 45h,4"h,"+h,""h

    oddarra. db 4 du' ?1

    evenarra. db 4 du' ?1

    data ends

    code segment

    start:

  • 8/19/2019 MAP Notes_ CHapter 5 Part 2

    31/35

    mov ax,data

    mov ds,ax

    mov ax,0000h

    mov dl,02h

    mov cl,04

    lea si,arra.

    lea di,evenarra.

    lea bx,oddarra.

    u': mov al,%si&

    div dl

    cm' ah,0

    () >

    mov al,%si&

    mov %di&,al

    inc di

    inc si

    dec cl

    (n) u'

    (m' exit

    > :

    mov al,%si&

    mov %bx&,al

    mov ah,00h

    inc bx

  • 8/19/2019 MAP Notes_ CHapter 5 Part 2

    32/35

    inc si

    dec cl

    (n) u'

    exit: int 3

    code ends

    end start

    Write an assembly language program to find positive and negative numbers in an array

    assume ds:data

    assume cs:code

    data segment

    arra. db 4,*4,5,*5,+,*+

    'osarra. db + du' ?1

    negarra. db + du' ?1

    data ends

    code segment

    start:

    mov ax,data

    mov ds,ax

    mov ax,0000h

    mov cl,0+

    lea si,arra.

  • 8/19/2019 MAP Notes_ CHapter 5 Part 2

    33/35

    lea di,'osarra.

    lea bx,negarra.

    u': mov al,%si&

    neg al

    (s 'ositive

    mov dl,%si&

    mov %bx&,dl

    inc bx

    inc si

    dec cl

    (n) u'

    (m' exit

    'ositive:

    mov dl,%si&

    mov %di&,dl

    inc di

    inc si

    dec cl

    (n) u'

    exit: int 3

  • 8/19/2019 MAP Notes_ CHapter 5 Part 2

    34/35

    code ends

    end start

    Write an assembly language program to find the number of ones and ,eroes in a number

    assume cs:code

    assume ds:data

    data segment

    number db 00 0 b

    ones dw ?

    )eroes dw ?

    data ends

    code segment

    start:

    mov ax,data

    mov ds,ax

    mov ax,0000h

    mov al,number

    mov cl,0$

    u': ror al,

    (c one

    inc di

  • 8/19/2019 MAP Notes_ CHapter 5 Part 2

    35/35

    dec cl

    (n) u'

    one: inc si

    dec cl

    (n) u'

    mov ones, si

    mov )eroes, di

    exit: int 3

    code ends

    end start