8086 alp programs

Upload: gokulchandru

Post on 02-Jun-2018

257 views

Category:

Documents


7 download

TRANSCRIPT

  • 8/10/2019 8086 ALP Programs

    1/40

    8086 ALP PROGRAMS

    Presented by

    C.GOKUL,

    AP/EEE

    Velalar College of Engg & Tech

  • 8/10/2019 8086 ALP Programs

    2/40

    Assembly Language

    Programming(ALP)8086

  • 8/10/2019 8086 ALP Programs

    3/40

    Program 1: Increment an 8-bit number

    MOV AL, 05H Move 8-bit data to AL.

    INC AL Increment AL.

    Program 2: Increment an 8-bit number

    MOV AX, 0005H Move 16-bit data to AX.

    INC AX Increment AX.

  • 8/10/2019 8086 ALP Programs

    4/40

    Program 3: Decrement an 8-bit number

    MOV AL, 05H Move 8-bit data to AL.

    DEC AL Decrement AL.

    Program 4: Decrement an 8-bit number

    MOV AX, 0005H Move 16-bit data to AX.

    DEC AX Decrement AX.

  • 8/10/2019 8086 ALP Programs

    5/40

    Program 5: 1s complement of an 8-bit number.

    MOV AL, 05H Move 8-bit data to AL.

    NOT AL Complement AL.

    Program 6: 1s complement of a 16-bitnumber.

    MOV AX, 0005H Move 16-bit data to AX.

    NOT AX Complement AX.

  • 8/10/2019 8086 ALP Programs

    6/40

    Program 7: 2s complement of an 8-bit number.

    MOV AL, 05H Move 8-bit data to AL.

    NOT AL Complement AL.

    INC AL Increment AL

    Program 8: 2s complement of a 16-bitnumber.

    MOV AX, 0005H Move 16-bit data to AX.

    NOT AX Complement AX. INC AX Increment AX

  • 8/10/2019 8086 ALP Programs

    7/40

    Program 7: 2s complement of an 8-bit number.

    MOV AL, 05H Move 8-bit data to AL.

    NOT AL Complement AL.

    INC AL Increment AL

    Program 8: 2s complement of a 16-bitnumber.

    MOV AX, 0005H Move 16-bit data to AX.

    NOT AX Complement AX. INC AX Increment AX

  • 8/10/2019 8086 ALP Programs

    8/40

    Program 9: Add two 8-bit numbers

    MOV AL, 05H Move 1st 8-bit number to AL.

    MOV BL, 03H Move 2nd8-bit number to BL.

    ADD AL, BL Add BL with AL.

    Program 10: Add two 16-bit numbers

    MOV AX, 0005H Move 1st 16-bit number to AX.

    MOV BX, 0003H Move 2nd16-bit number to BX.

    ADD AX, BX Add BX with AX.

  • 8/10/2019 8086 ALP Programs

    9/40

  • 8/10/2019 8086 ALP Programs

    10/40

    Program 13: Multiply two 8-bit unsigned

    numbers.MOV AL, 04H Move 1st 8-bit number to AL.

    MOV BL, 02H Move 2nd 8-bit number to BL.

    MUL BL Multiply BL with AL and the result will

    be in AX.

    Program 14: Multiply two 8-bit signednumbers.

    MOV AL, 04H Move 1st 8-bit number to AL.

    MOV BL, 02H Move 2nd 8-bit number to BL.IMULBL Multiply BL with AL and the result will

    be in AX.

    Presented by C.GOKUL,AP/EEE

  • 8/10/2019 8086 ALP Programs

    11/40

    Program 15: Multiply two 16-bit unsigned

    numbers.MOV AX, 0004H Move 1st 16-bit number to AL.

    MOV BX, 0002H Move 2nd 16-bit number to BL.MUL BX Multiply BX with AX and the result will

    be in DX:AX {4*2=0008=> 08=> AX , 00=> DX}

    Program 16: Divide two 16-bit unsigned

    numbers.

    MOV AX, 0004H Move 1st 16-bit number to AL.

    MOV BX, 0002H Move 2nd 16-bit number to BL.

    DIV BX Divide BX from AX and the result will be in AX & DX{4/2=0002=> 02=> AX ,00=>DX}

    (ie: Quotient => AX , Reminder => DX )

  • 8/10/2019 8086 ALP Programs

    12/40

    Detailed coding

    16 BIT ADDITION

  • 8/10/2019 8086 ALP Programs

    13/40

    Detailed coding

    16 BIT SUBTRACTION

  • 8/10/2019 8086 ALP Programs

    14/40

    16 BIT MULTIPLICATION

  • 8/10/2019 8086 ALP Programs

    15/40

    16 BIT DIVISION

  • 8/10/2019 8086 ALP Programs

    16/40

    SUM of N numbersMOV AX,0000MOV SI,1100

    MOV DI,1200

    MOV CX,0005 5NUMBERS TO BE TAKEN SUM

    MOV DX,0000

    L1: ADD AX,[SI]

    INC SI

    INC DX

    CMP CX,DX

    JNZ L1

    MOV [1200],AX

    HLT

  • 8/10/2019 8086 ALP Programs

    17/40

    Average of N numbersMOV AX,0000

    MOV SI,1100

    MOV DI,1200

    MOV CX,0005 5NUMBERS TO BE TAKEN AVERAGE

    MOV DX,0000L1: ADD AX,[SI]

    INC SI

    INC DX

    CMP CX,DX

    JNZ L1

    DIV CX AX=AX/5(AVERAGE OF 5 NUMBERS)

    MOV [1200],AX

    HLT

  • 8/10/2019 8086 ALP Programs

    18/40

    FACTORIAL of NMOV CX,0005 5Factorial=5*4*3*2*1=120MOV DX,0000

    MOV AX,0001

    L1: MUL CXDEC DX

    CMP CX,DX

    JNZ L1MOV [1200],AX

    HLT

  • 8/10/2019 8086 ALP Programs

    19/40

    ASCENDING ORDER

  • 8/10/2019 8086 ALP Programs

    20/40

  • 8/10/2019 8086 ALP Programs

    21/40

    DECENDING ORDER

    Note: change the coding JNB L1 into JB L1 in theLINE 10

  • 8/10/2019 8086 ALP Programs

    22/40

    LARGEST, smallest NUMBER IN AN

    ARRAY

  • 8/10/2019 8086 ALP Programs

    23/40

    LARGEST NUMBER

  • 8/10/2019 8086 ALP Programs

    24/40

    SMALLEST NUMBER

  • 8/10/2019 8086 ALP Programs

    25/40

  • 8/10/2019 8086 ALP Programs

    26/40

    STRING MANIPULATION

    1. Copying a string (MOV SB)MOV CX,0003 copy 3 memory locations

    MOV SI,1000

    MOV DI,2000L1 CLD

    MOV SB

    DEC CX decrement CX

    JNZ L1

    HLT

    Presented by C.GOKUL,AP/EEE, Velalar College of Engg & Tech

  • 8/10/2019 8086 ALP Programs

    27/40

    2. Find & Replace

  • 8/10/2019 8086 ALP Programs

    28/40

    Procedures

    d i f d h b ll d f

  • 8/10/2019 8086 ALP Programs

    29/40

    Procedureis a part of code that can be called from

    your program in order to make some specific task.

    Procedures make program more structural and

    easier to understand. syntax for procedure declaration:

    name PROC

    . ; here goes the code

    . ; of the procedure ...

    RET

    name ENDP

    here PROCis the procedure name.(used in top & bottom)

    RET- used to return from OS. CALL-call a procedure

    PROC & ENDPcomplier directives

    CALL & RET- instructions

  • 8/10/2019 8086 ALP Programs

    30/40

    EXAMPLE 1 (call a procedure)

    ORG 100h

    CALL m1

    MOV AX, 2

    RET ; return to operating system.

    m1PROC

    MOV BX, 5

    RET ; return to caller.

    m1ENDP

    END

    The above example calls procedure m1, does MOV BX, 5 &returns to the next instruction after CALL: MOV AX, 2.

  • 8/10/2019 8086 ALP Programs

    31/40

    Example 2 : several ways to pass

    parameters to procedureORG 100h

    MOV AL, 1

    MOV BL, 2

    CALL m2

    CALL m2

    CALL m2

    CALL m2

    RET ; return to operating system.

    m2 PROCMUL BL ; AX = AL * BL.

    RET ; return to caller.

    m2 ENDP

    ENDvalue of AL register is update every time the

    procedure is called.

    final result in AX register is 16 (or 10h)

  • 8/10/2019 8086 ALP Programs

    32/40

  • 8/10/2019 8086 ALP Programs

    33/40

    Stack is an area of memory for keepingtemporary data.

    STACK is used by CALL & RETinstructions.

    PUSH -stores 16 bit value in the stack.

    POP -gets 16 bit value from the stack.

    PUSH and POP instruction are especially usefulbecause we don't have too much registers to operate

    1. Store original value of the register in stack (usingPUSH).

    2. Use the register for any purpose.3. Restore the original value of the register from stack

    (using POP).

  • 8/10/2019 8086 ALP Programs

    34/40

    Example-1 (store value in STACK using

    PUSH & POP)

    ORG 100h

    MOV AX, 1234h

    PUSH AX ; store value of AX in stack.

    MOV AX, 5678h ; modify the AX value.

    POP AX ; restore the original value of AX.

    RETEND

    Presented by C.GOKUL,AP/EEE

  • 8/10/2019 8086 ALP Programs

    35/40

    Example 2: use of the stack is for

    exchanging the values

    ORG 100h

    MOV AX, 1212h ; store 1212h in AX.

    MOV BX, 3434h ; store 3434h in BX

    PUSH AX ; store value of AX in stack.PUSH BX ; store value of BX in stack.

    POP AX ; set AX to original value of BX.

    POP BX ; set BX to original value of AX.

    RETEND

    push 1212h and then 3434h, on pop we will

    first get 3434h and only after it 1212h

  • 8/10/2019 8086 ALP Programs

    36/40

    MACROS

  • 8/10/2019 8086 ALP Programs

    37/40

  • 8/10/2019 8086 ALP Programs

    38/40

  • 8/10/2019 8086 ALP Programs

    39/40

  • 8/10/2019 8086 ALP Programs

    40/40

    MACROS with Parameters

    Example:

    COPY MACRO x, y ; macro named COPYwith

    2 parameters{x, y}

    PUSH AX

    MOV AX, x

    MOV y, AX

    POP AX

    ENDM