أسمبيلي للمبتدئين Assembly

download أسمبيلي للمبتدئين Assembly

of 36

  • date post

    20-Feb-2018
  • Category

    Documents

  • view

    231
  • download

    0

Transcript of أسمبيلي للمبتدئين Assembly

  • 7/24/2019 Assembly

    1/36

    AA

    :

    [email protected]/1/2009

  • 7/24/2019 Assembly

    2/36

    209

    ALPHANUMERIC.

    (

    )

    :

    :;

    .

    .

    object code

    source code.

    .

    :opcode = operation code

    operands.

    .

    mnemonic

    0806

    ADDSUBMOV.

    BXAX

    ADD AX,BX

    BX

    AX

    AX

    BX

    AX

    .

    0806

    080611

  • 7/24/2019 Assembly

    3/36

    Mov

    0

    .

    -

    :

    1)Mov

    :

    S DMOV D,S

    MOV

    S,D

    :

    MOV

    1-

    MOV

    :Mem Mem

    MOV

    MOV.

    -.

    MOV DS,1000

    :

    MOV AX,1000

    MOV DS,AX

    3-

    MOV DS,ES

    MOV AX,ES

  • 7/24/2019 Assembly

    4/36

    MOV DS,AX

    :MOV AL,[SI]

    SI

    AL

    PA = DS x

    10h + SI

    AL.

    (XCHG

    .

    S D

    D SXCHG D,S

    XCHG

    XCHG.

    :

    XCHG AX,BX

    AXBX.

    XCHG [SUM],BX

    SUM

    BX.3)XLAT

    AL

    BX

    DS

    AL

    XLAT

    AL

    BX

    AL.

  • 7/24/2019 Assembly

    5/36

    (DS x 10h ) *ALBX+ ALXLAT

    XLAT

    :

    19

    1

    (

    4)

    DS188.

    4

    AL = 16

    :

    1)AL = 3BX = 100.

    )

    XLAT.

    AL = 16.

    4)

    LEA, LES, LDS

    .LEA

    DSLDS

    LESES.

    :

    Mem16 reg16LEA reg16,mem16

    LEA

    Mem32 reg16

    Mem322 DSLDS reg16,mem32

    DS

    LDS

  • 7/24/2019 Assembly

    6/36

    Mem32 reg16

    Mem322 ESLES reg16,mem32

    ES

    LES

    :

    LEA SI,[100] => SI = 1000

    LDS SI,[200] => SI = 553F

    DS = 1000

    LES DI,[300] => DI = 4030

    ES = 3000

    -

    .

    1)

    :

    S D D

    Carry CFADD D,SADD

    S D CF D

    Carry CFADC D,SADC

    D1 DINC D

    INC

    AF,CFAAA

    AAA

    OF

    DAA

    BCDDAA

  • 7/24/2019 Assembly

    7/36

    ADDADC

    ADD, ADC

    :

    INC:

    AX = 4F3DhBX = FD81hCF = 1:

    ADC AX,BX

    .

    :

    11111111

    AX = 0100 1111 0011 1101 b

    BX = 1111 1101 1000 0001 b

    CF = 0001 b+

    8188118818111111b

    :

    PF = 0

    AF = 0

    34

    ()

    SF = 0()

    CF = 1

    OF = 0

    :

    MSB

    :OF = 1

    DAA

  • 7/24/2019 Assembly

    8/36

    BCD(

    ALAX)

    BCD:

    89

    +=9

    .

    1815

    6

    9+5=E6E6+E=14

    .

    1610

    .

    AL

    AL = Bit7 Bit0

    :

    1)if Bit3 Bit2 Bit1 Bit0 of AL > 9 or AF = 1

    then AL = AL + 6 , AF = 1

    )if AL > 9Fh or CF = 1

    then AL = AL + 60h , CF =1

    AL = 28 BCDBL = 68 BCD:

    :

    ADD AL,BL

    DAA

    :

    0BCD = 0010 1000 b

  • 7/24/2019 Assembly

    9/36

    60BCD = 0110 1000 b+

    18818888AL

    CF = 0 0110+

    18818118>=AL = 96 BCD

    AF = 1

    AAA

    (

    AL)

    :

    if Bit3 Bit2 Bit1 Bit0 of AL > 9 or AF =1

    then AL = AL + 06

    AL = AL and 0Fh

    AH = AH + 1

    AF = 1

    CF = 1

    Else AL = AL and 0Fh

    AH = 00

    :

    AL =32h = 2 ASCIIBL = 34h = 4 ASCII

    :

    ADD AL,BL

    AAA

    ::

    AL = 0011 0010

  • 7/24/2019 Assembly

    10/36

    BL = 0011 0100+

    81188118AL = 66h

    AL = 06h , AH = 00

    4(3AF = 0

    )

    )

    :

    - D S D

    burrow CFSUB D,S

    SUB

    - D - S CF D

    Carry CFSBB D,SSBB

    DECD-1 DDEC D

    8D D

    1CFNEG DNEG

    DASOF

    BCDDAS

    AF, CF

    AAS

    AAS

    :SUB, SBB

    ADD,ADC

    DEC

    INCNEGReg,

    Reg16, Mem, Mem16.

  • 7/24/2019 Assembly

    11/36

    SI = 0018hDS = 2F00h:

    F018h

    [F018] = 0400hSUB [SI],03F8h.

    :

    ()

    ()

    .

    Destination = 0400h = 0000 0100 0000 0000 b

    Source = 03F8h = 1111 1100 0000 1000 b+

    18888888888881888b

    )

    ( :

    83F8h:

    1)

    8888881111111888

    )111111888888

    8111

    3)83F8h =

    1111 1100 0000 1000

    .:PF = 0

    AF =1()

    (.)

    ZF = 0.

    SF = 0MSB.

    CF = 0

    (

    .)

  • 7/24/2019 Assembly

    12/36

    OF = 0.

    DAS

    BCD

    :AL

    1)if Bit3 Bit2 Bit1 Bit0 of AL > 9 or AF = 1

    then AL = AL06 , AF = 1

    )if AL > 9Fh or CF=1

    then AL = AL60h , CF = 1

    AL = 86 BCDAH = 07 BCD:

    :

    SUB AL,AH

    DAS

    :

    AL = 1000 0110 b

    AH = 1111 1001 b+

    181111111b => AL = 7Fh

    :

    AF = 1

    .

    CF = 0

    1

    AL = 79h , AF = 1

    AAS

  • 7/24/2019 Assembly

    13/36

    ASCII

    :AL

    if Bit3 Bit2 Bit1 Bit0 of AL > 9 or AF = 1

    then AL = AL06h , AL = AL and 0Fh

    AH = AH01 , AF = 1 , CF = 1

    Else AL = AL and 0Fh , AH = 00

    :

    AL = 38h = 8 ASCIIBL = 35h = 5 ASCII

    :

    SUB AL,BL

    AAS

    :

    AL = 0011 1000 b

    BL = 1100 1011 b+

    188888811b => AL = 03h

    AF = 0

    CF = 0

    AL = 03h , AH = 00

    3)

    BCD

    .

    :

  • 7/24/2019 Assembly

    14/36

    AL.S8 AX

    AX.S16 DX,AXMUL S

    MUL

    Q*AX/S8+ AL

    R*AX/S8+ AH

    Q*(DX,AX)/S16+ AX

    R*(DX,AX)/S16+ DXDIV S

    DIV

    :S8

    QR

    .

    :

    Q

    (

    )

    FF

    Q

    (

    )

    FFFFh

    .

    :

    :

    IMUL.

    IDIV.

    MSB.

    (:)

    Q*AL/10d+ AH

    R*AL/10d+ AL

    AAM

    AL

    BCD AAM

  • 7/24/2019 Assembly

    15/36

    SF, ZF, PFAH.10d AL AL

    88AHAAD

    AX

    AX

    .

    AAD

    MSB of AL

    All bits of AHCBWCBW

    MSB of AX

    All bits of DXCBWCWD

    S:

    Mem16, Mem8, Reg16, Reg8D

    .

    :

    0

    AL

    0 .

    AX

    AH

    (

    )

    CBW.

    316

    16

    AX

    16

    CWD.

    :

    .

    AAM

    AAM.

    :BL = 09AL = 07:

  • 7/24/2019 Assembly

    16/36

    MUL BL

    AAM

    :

    AX = 00 07

    BX = 00 09

    MUL 00 3F AX

    AAM 06 03 AX

    AAD:

    .

    AX = 0604h(

    )

    AAD(

    ):

    AL = 06 x 10d + 04h = 64d = 40h

    AH = 00h

    -

    .

    :

    ANDS.D DAND D,SAND

    S + D DOR D,SOR

    OR

  • 7/24/2019 Assembly

    17/36

    S D DXOR D,SXORXOR

    D DNOT DNOT

    NOT

    XOR, OR, AND:

    -

    :

    OF,CFSAL/SHL D,count

    /

    SAL/SHL

    DCF

    count.

    OF:

    .OF = 1

    OF,CF

    SHR D,countSHR

    DCF

    count.

    OF:

    OF = 1

  • 7/24/2019 Assembly

    18/36

    SAR D,count

    SAR

    D

    CF

    countMSB(

    (.

    :SHL, SAL:

    count = N

    .

    :

    SHR

    LSB= 0 LSB = 1CF.

    :

    :

    3(.AX) 7.(BX) DX

    MOV SI,AX ; copy AX into SI

    SAL SI,1 ; 2 AX

    ADD SI,AX ; 3 AX

    MOV DX,BX ; copy BX into DX

    MOV CL,03H ; load shift count

    SAL DX,CL ; 8 BX

    SUB DX,BX ; 7 BX

    ADD DX,SI ; result

    :

    countCount

    CL

    :

    count

    :

  • 7/24/2019 Assembly

    19/36

    SAL AX,1

    :=

  • 7/24/2019 Assembly

    20/36

    .OF

    OF,CF

    RCR D,countCFRCR

    RORCF

    MSBLSBCF.

    OF

    .

    -

    :

    Flags AH

    AHLAHFAH

    LAHF

    OFAH Flags

    AH

    SAHF

    AH

    SAHF

    CF8CFCLC

    CFCLC

    CF1CFSTCCFSTC

    CF

    CF CFCMC

    CFCMC

    IF8IFCLIIFCLI

    IF1IFSTIIFSTI

  • 7/24/2019 Assembly

    21/36

    -

    CMP

    0

    16

    :

    DS

    CMPCMP D,S

    D(

    SD)

    .

    :

    -

    .

    :

    .

    .

    1)

    :

    operandJMP

    operandJMP

  • 7/24/2019 Assembly

    22/36

    IPCS

    IP.

    :

    )

    0

    (Disp)

    IP

    :

    IP

    (] =IP++ )

    016[

    IPCS

    .

    :

    IP = 0112h

    JMP disp ; disp = 0F2h

    (IP)

    :

    address=IP + 2 + disp(= )811+

    +FFF2 = 0106h()

    8186

  • 7/24/2019 Assembly

    23/36

    JMP 04

    Address = 0112 + 2 + 0004 = 0118h

    8110>811

    .

    CSaddress.

    :0

    16-19+

    10-1+.

    16

    3KB

    .

    :

    JMP label

    label

    IP16)IP(

    CS.

    )

    16

    16 .

    :

    JMP BX

    BX

    BXIP

    CSIP.

    :

    BX = 0200h

    CS = 0100h

  • 7/24/2019 Assembly

    24/36

    PA = ( CS x 10h ) + BX = 01000 + 0200 = 01200h

    :

    JMP [SI]

    SI

    IP

    CS

    :DI, SI, BX.

    .3)

    16IP

    CS16CS

    .

    :

    JMP farlabel

    farlabel

    3

    (

    IP

    CS.)

    )

    3

    .

    .

    :

    JMP farseg [DI]

    DS, DI

    :

    DI = 0200h:

    DS = 0100h PA = DS x 10h + DI = 01000 + 0200 =

    01200h

  • 7/24/2019 Assembly

    25/36

    :

    IP

    IP = 3010hContentAddress ( h)

    CSCS = 0400h188188

    :388181

    PA = CS x 10h + IP = 07010h88818

    848183

    )

    :

    cc

    Jcc

    Jcc

    :10

    CF = 1JC

    CF = 0JNC

    OF = 1JO

    OF = 0JNO

    SF = 1JS

    SF = 0JNS

    CX = 0000JCXZ

    JE/JZ/

  • 7/24/2019 Assembly

    26/36

    /JGE/JNL

    /

    JA/JNBE

    /

    JAE/JNB

    JB/JNAE/

    /JBE/JNA

    JG/JNLE/

    /JLE/JNG

    /JNE/JNZ

    Parity

    /

    PF = 0JNB/JBO

    PF = 1JP/JPEParity/

    :

    (A)(B)

    (G)(L)

    134hABCDh.

    .ABCDh

    134hABCDh134h.

    SUBROUTINES

    .

    :

  • 7/24/2019 Assembly

    27/36

    :

    IPCS

    .

    .

    :

    operand

    .

    IPCS

    CALL operand

    CALL

    5

    :

    ()

    IP

    IP.

    IP

    .

    IP(

    )IP16

    :

    CALL near_proc

  • 7/24/2019 Assembly

    28/36

    CALL [SI]

    CALL BX

    (

    )

    .Far_proMemptr32

    .CSIP

    CSIP

    operandIPCS

    .CSIP

    .

    Far_proc

    3

    (opcode)

    .

    :

    CALL 01234321

    IPCS

    CS.

    CALL

    IP.3

    (

    JMP farseg [DI].)

    RET

    :

    RET/RET operand

    RET

    IP

    IPCS

    (

    )

  • 7/24/2019 Assembly

    29/36

    ((operand.Far_pro

    .SPRET

    16

    .

    -

    PUSH

    POP.

    .

    :.

    PUSH xx

    PUSH yy

    PUSH zz

    -----------

    POP zz

    POP yy

    POP xx

    LIFORET

    :.

    PUSH, POP

    :

  • 7/24/2019 Assembly

    30/36

    S ((SP))PUSH S

    PUSH

    ((SP)) DPOP D

    POP

    SPSS

    .

    .

    CSIP.

    SS.

    SS.SP

    SSSP

    (

    )

    .

    FFFFh .

    (.)SS

    .

    .

    SS

    FFFFh()SS

    8888h

    .SSSP

  • 7/24/2019 Assembly

    31/36

    SP.

    .

    ::

    8185h

    SSFFFFh

    BOS:

    A (bos) = 0105h + FFFF = 1104Fh

    8880h:

    A (tos) = 01050 + 0008 = 01058h

    81850h

    (:. )

    BBAAh.PUSH AX.

    AX134hPUSH

    SPSS

    81856h

    .AX.

    AX(

    1h)

    AX(

    34h).

    POP AX

    POP

    BX

    .

    .

    -

  • 7/24/2019 Assembly

    32/36

    .

    .

    :

    LOOP short_labelLOOP

    CX

    CX

    .IP = IP + dispdisp

    (

    16

    .)

    LOOPE/

    LOOPZ/LOOPE/ LOOPZ

    CX

    CXZF

    .

    .

    LOOPNE/

    LOOPNZ/LOOPNE/ LOOPNZ

    CX

    CX

    ZF

    .

  • 7/24/2019 Assembly

    33/36

    .

    :

    (

    )

    :0,9,4,5,4.CX = 5.

    :

    MOV CX, 5

    Nxt:---------------

    ---------------

    ---------------

    LOOPNE Nxt

    11-

    .

    SCAN

    .

    :

    MOVS operand

    MOVS

    1MOVSB

    MOVSB

  • 7/24/2019 Assembly

    34/36

    MOVSW

    MOVSW

    CMPS operand

    CMPS

    (SCAS operandSCAS(B or W

    LODS operand

    LODS (B or W)

    STOS operandSTOS(B or W)

    12-

    .

    .

    :

    MOVS, STOS

    CX 0REP

    CMPS, SCAS

    ZF=1, CX0REPE/REPZ

    CMPS, SCAS

    ZF=0, CX0REPNE/REPNZ

    :

  • 7/24/2019 Assembly

    35/36

    :

    SI = 0100hDS = 0200h

    DI = 0110hES = 0400h

    :

    MOV CX,20h

    REP MOVSB

    CX

    8h = 32d

    3

    DSSI

    ESDI.

    13-

    SIDI

    DF

    DF = 0

    .

    :

    DF8DFCLDDFCLD

    DF1DFSTDDESTD

    14-INOUT

    (port) AccIN Acc,portIN

    ((DX)) AccIN Acc,DXIN

    Acc (port)OUT port,AccOUT

    Acc ((DX))OUT DX,Acc

    OUT

  • 7/24/2019 Assembly

    36/36

    port

    DX.

    :

    AAh, A9h

    B000h

    .

    :

    IN AL,[0AAh]

    MOV AH,AL

    IN AL,[0A9h]

    MOV DX,0B000h

    OUT DX,AX

    :

    [email protected]

    1/1/2009