Download - Assembly [Ελληνικο Μαθημα]

Transcript
  • 5/24/2018 Assembly [ ]

    1/130

    1

    1

    8086

    8086 Intel, (1978) 16-bit. , .

    1.8086

    8086 , 1, :

    1

    - (EU, Execution Unit), . , , ,

    .

    - (BIU, Bus Interface Unit) / ( ). /. , (Instruction Pointer, IP), , bytes .

    "pipeline", , EU

  • 5/24/2018 Assembly [ ]

    2/130

    2

    BIU (queue) BIU. (.. ) BIU / . EU .

    (bus), /16 bits, 20

    bits.

    2.

    2.1 (Data Registers).

    :AX ( = accumulator),

    BX ( = base),

    CX ( = counter),

    DX ( = data ).

    16-bit 8-bit . H (High) L (Low). 8-bit : AH,AL, BH, BL, CH, CL, DH, DL. , .. , :

    / , , , .

    BX (indirectaddressing).

    CX .

    DX AX 16 bits 32 bits ,.

    2.2 .

    16 bits, (pointer, index) , , , . :

    SP ( = Stack Pointer),

    BP ( = Base Pointer),

    SI ( = Source Index),

    DI (= Destination Index),

    :

  • 5/24/2018 Assembly [ ]

    3/130

    3

    SP .

    BP ( ,).

    SI .

    DI .

    2.3

    IP ( = Instruction Pointer) (offset) . BIU. (Program Counter)von Neumann :

    CS : IP

    2.4 .

    2.

    SR16bits, 9 .

    2.4.1 .(6 bits)

    ( ON , OFF ) , , . () . :

    CF (Carry Flag)

  • 5/24/2018 Assembly [ ]

    4/130

    4

    (ADD,SUB, ADC, SBC). () () Msbit , 1 0. (RCR, RCL). Msbit

    bit 71byte 151word = 2bytes.

    AF (Auxiliary Flag)

    34bit byte, 1 0. BCD (DAA,AAA).

    SF (Sign Flag)

    . Msbit (7 15) . 0 , 1.

    ZF (Zero Flag)

    1 0, 0.

    OF (Overflow Flag)

    1 () . (eXclusive-OR) Msbit .

    PF (Parity Flag)

    . 1 1 byte .

    .

    2.4.2 .(3 bits)

    ( ,, ).

    IF (Interrupt Flag)

  • 5/24/2018 Assembly [ ]

    5/130

    5

    1 IF, , . ().

    DF (Direction Flag)

    . 1 (SI DI) /, .

    TF (Trap Flag)

    1 . .

    2 . .. T Trap Flag.

    2.5 .

    (segments) :

    - CS(= Code Segment).- DS(= Data Segment).- SS(= Stack Segment).- ES(extra = Extra Segment).

    3. .

    /8086 DIL (Dual InLine) 40 (pins) . (Minimum) (Maximum). 5V 0V /. Minimum / , Maximum 8288. 8087 8089.

    8086 (Multiplex) . 20 , (Address

  • 5/24/2018 Assembly [ ]

    6/130

    6

    Data) (AD0 AD15) (System Address) (A16 S3 A19 S6). , , ( ALE Address Latch Enable )

    . BIU.

    3

    :

    - GND.- NMI.- INTR.- CLK

    CPU.

    - RESET. , 0FFFF0h (IP=0000,CS=0FFFFh). / ROM JMP

  • 5/24/2018 Assembly [ ]

    7/130

    7

    / . bootstrap loader.

    - READY /,

    .

    - TEST WAIT .

    - RD .

    - VCC +5V 10%.- S3, S4

    /.

    - S5(IF).- S6

    .

    - QS0(ALE), QS1 (INTA). .

    - S0, S1, S2 (Bus Cycle).

    - LOCK .

    - RQ/GT0 (HOLD) RQ/GT1 (HLDA) .

    4.

    / 20 bit. 8086 1 Megabyte . /00000h 0FFFFFh. 1 byte. (segments) 64 kbytes. 16 bytes, /16 . 64 kbytes . (segmentation)

  • 5/24/2018 Assembly [ ]

    8/130

    8

    16 bits 8086. :

    (physical address) 20 bits .

    / / / /. / 8086 :

    . / 16.

    pointer index () , (logical address,

    offset, effective address). / / :

    = * 16 +

    / / :segment:offset segment offset 4 . 987Ah:0100h,CS:IP , DS:9987H ..

    64 kbytes . , :

    CS/(CODE). IP. . CS:IP(PC) .CS =345Ah IP = 712Ch, /:

    CS*10h + IP = 345Ah * 10h + 712Ch = 345A0h + 712Ch = 3B6CCh

    SS /(STACK). / BP. .. SS = 1ABCh SP = 100h,/:

    SS * 10h + SP = 1ABCh * 10h + 100h = 1ABC0h + 100h = 1ACC0h

    DS ES / ( DATA ) ,

    (EXTRA) .

  • 5/24/2018 Assembly [ ]

    9/130

    9

    4 16 bits, () 4 bits /20 bits. /(segment).

    4.

    . , .

    5.-

    1 byte. ( word = 2 bytes )byte /... 3456h , /678h 679h

    5634h :

    /

  • 5/24/2018 Assembly [ ]

    10/130

    10

    /(segment:offset) . . DS=1234h SI=5678h / (pointer) DS:SI 0300h 0303h :

    /

    8086 16 bits. , 512 kbytes / 16 bits . 8086 16 bits

    byte , AD0 BHE. :

    . byte /.AD0 = 0 BHE = 1 ().

    . byte /.AD0 = 1 BHE = 0 ().

    . byte /.AD0 = 0 BHE = 0 ().

    . byte /..

    , High AX A Low B. byte

    byte. ( )

    BA

    .

    ;;

    1 :

    TITLE word__test; DOSSEG

    .MODEL SMALL

    .CODE

  • 5/24/2018 Assembly [ ]

    11/130

    11

    MAIN proc farPUSH DS; DOS, XOR AX,AX; (SEGMENT) PSPPUSH AX; PSP

    MOV AX,@DATA

    MOV DS, AX

    MOV Ah,'A'MOV AL,'B'MOV WORD__LOW__HI,AX; MOV DL,CHAR__low; MOV AH,2INT 21HMOV DL,CHAR__hi; MOV AH,2; 2DOS INT 21H; DOS

    RET; DOS INT 20h PSPMAIN endp

    .DATAWORD__LOW__HI label word

    Char__low db 0Char__hi db 0.STACK 100H

    END MAIN

    6.

    ///64 kbytes. / (port) (DX) byte () /256. (IN OUT). .

  • 5/24/2018 Assembly [ ]

    12/130

    12

    2

    8086 .

    1.

    ASSEMBLY /. (,

    , , ) :

    ,

    (, ,,,..)

    -

    ,

    (1Mbyte RAM ROM)

    / : . (instruction set) . / , (machine language). ASSEMBLY . . :

    add a1,1

  • 5/24/2018 Assembly [ ]

    13/130

    13

    :

    41

    :

    - .-

    .

    - .

    (Assembler)

    . . (TASM.EXE MASM.EXE) .OBJ object module , (TLINK.EXE LINK.EXE) object modules .EXE .COM.

    :

    2 :

    INTDOS EQU 21hTITLE MHNHMAKVDIKAS SEGMENT PUBLICASSUME CS:KVDIKAS,DS:DEDOMENAMAIN PROC NEARmov ax,DEDOMENA ; ds /mov ds,ax ;

    lea dx,mhnhma ; /dxmov ah,9 ; DOS stringint INTDOSMAIN ENDPKVDIKAS ENDSDEDOMENA SEGMENT PUBLICMhnhma db WELLCOME TO ASSEMBLY ,13,10,$DEDOMENA ENDSSOROS SEGMENT PARA STACK SOROS

    Db 100h dup(0) ; 256 bytesSOROS ENDS

    END MAIN

  • 5/24/2018 Assembly [ ]

    14/130

    14

    MHNHMA.ASM,:

    TASMMHNHMA

    , MHNHMA.OBJ. :

    TLINKMHNHMA

    MHNHMA.EXE. .COM , /t(.. TLINK /t ).

    ASSEMBLY

    . :

    ;

    ( labels ) / , . :

    INDOS, KVDIKAS, MAIN, DEDOMENA, MHNHMA, SOROS.

    :.. again .

    again: add a1,5.

    jmp again

    (instructions), (directives)

    . mov, add, int, sub, mul, div..

    EQU, SEGMENT, ENDS, PROC, ENDP, ASSUME, END.

    , , . :

    - ( .. 14, 35d, 21h, 10101000b, 0abcdh) ( . a). d

  • 5/24/2018 Assembly [ ]

    15/130

    15

    , h b.

    - (.ax, bx).- (.jmp again).- LENGTH, OFFSET,:,SEG ..

    assembly () (segments), . STACK. .EXE.

    .COM :

    - ( ). .

    - 256 bytes . 256 bytes (PSPProgram Segment Prefix).

    -. 256 bytes.

    .COM :

    3 :

    TITLE ; CGROUP GROUP KVDIKAS,DEDOMENA ;

    ;

    KVDIKAS SEGMENT PUBLICASSUME CS:CGROUP,DS:CGROUPORG 100h ; 256 .MAIN PROC NEARmov al,aritmos1 ;ALadd al,aritmos2 ; ALmov dl,al ; DL add dl,30h ; ASCII mov ah,2 ; DOS

    int 21h ; DOSint 20h ; DOS .COM

  • 5/24/2018 Assembly [ ]

    16/130

    16

    MAIN ENDPKVDIKAS ENDS

    DEDOMENA SEGMENT PUBLIC

    aritmos1 db 4aritmos2 db 5

    DEDOMENA ENDSEND MAIN

    /t . atroisi.asm, :

    Tlink /t atroisi.obj

    2.

    2.1 END.

    END . .EXE END /. .,ARXH PRAXH :

    4 :

    TITLE AFAIRESH; KVDIKAS SEGMENT PUBLICASSUME CS:KVDIKAS,DS:DEDOMENAPRAXH PROC NEARmov ax,dedomenamov ds,axmov al,aritmos1; 1 ALsub al,aritmos2; ALmov apotelesma,al;

    mov dl,apotelesma; DL 2;DOS

    add dl,30h ; ASCII mov ah,2 ; DOS int 21hret; .PRAXH ENDPARXH PROC NEARcall praxh ; praxhmov ah,4ch ; DOS int 21h ; DOS

    ARXH ENDPKVDIKAS ENDS

  • 5/24/2018 Assembly [ ]

    17/130

    17

    DEDOMENA SEGMENT PUBLICaritmos1 db 4aritmos2 db 3apotelesma db 0

    DEDOMENA ENDS

    SOROS SEGMENT PARA STACK 'SOROS'db 256 dup (0)

    SOROS ENDSEND ARXH

    2.2 ,

    SEGMENTENDS . . SEGMENTENDS(logical segment).

    PROCENDP ., (Calls, Ret) .

    ASSUME . ASSUME CS: .EXE . ASSUME DS: ASSUME ES /,

    (DATA EXTRA) . ASSUME ( labels ) .

    5 :

    TITLE POLLAPLASIAMOS; KVDIKAS SEGMENT PUBLICASSUME CS:KVDIKAS,DS:DEDOMENA1

    PRAXH PROC NEARASSUME DS:DEDOMENA2 ;***** *****

    ;mov ax,dedomena2mov ds,axmov al,aritmos1; 1 ALmov dl,aritmos2; ALmul dl; AL * DL , AXmov apotelesma,al; mov dl,apotelesma;DL

    add dl,30h ; ASCII mov ah,2 ; DOS

  • 5/24/2018 Assembly [ ]

    18/130

    18

    int 21hretPRAXH ENDPARXH PROC NEAR ; call praxh

    ASSUME DS:DEDOMENA1mov ax,dedomena1mov ds,axlea dx,mhnhmamov ah,09hint 21hmov ah,4ch ; DOS int 21h ; DOSARXH ENDPKVDIKAS ENDS

    DEDOMENA1 SEGMENT PUBLICmhnhma db 10,13, "END of PROGRAM",10,13,"$"DEDOMENA1 ENDS

    DEDOMENA2 SEGMENT PUBLICaritmos1 db 4aritmos2 db 2apotelesma db 0

    DEDOMENA2 ENDS

    SOROS SEGMENT PARA STACK "SOROS"Db 256 dup (0)SOROS ENDS

    END ARXH ; /h ARXH

    2.3

    DBbyte, DW , DD , DQDT bytes . DUP

    . . . :

    ARITMOI DW 10,13,29MHNHMA DB HELLOPINAK DB 10 DUP (0)

    21 bytes / :ARITMOI , MHNHMA , PINAK

    . .

  • 5/24/2018 Assembly [ ]

    19/130

    19

    LABEL () , . BYTE , WORD, DWORD ..

    . :

    NUM LABEL WORDCHARS DB 10,0

    2 CHARS.

    NUM WORD . .

    mov ax,num

    AX.

    2.4

    EQU , . . EQU, EQU. . :

    Blocksize EQU 512BLOCKS EQU 4Bufsize EQU Blocksize * BLOCKSMhnhma EQU

    $. :

    mhnhma DB mhkos__mhnhma EQU (mhnhma - $)

    2.5 .

    2.5.1

    (SEGMENT, ENDS, ASSUME), Borland Microsoft , (Simplified Directives), , (linking) (object modulus)3.

  • 5/24/2018 Assembly [ ]

    20/130

    20

    ASSEMBLY, C,PASCAL, PROLOC, BASIC , ASSEMBLY . , assembly,

    , (CALLRET), .

    : DOSSEG, .MODEL, .STACK, .DATA,.CODE.

    2.5.2 .STACK, .DATA, .CODE.

    , .

    .STACK .EXE . .

    .STACK 200h

    512 bytes.

    .CODE . .

    .DATA. . DS, DS . :

    mov ax,@DATA ; @DATA ,;@CODE

    mov ds,ax ; ds

  • 5/24/2018 Assembly [ ]

    21/130

    21

    . .

    CALL RET. IP ( ), () CS:IP ( /). callretnear, far.

    . (offset).

    /segment:offset.

    , ( , ), (pointers). 2 byte ( ), 4 bytes.

    :

    Tiny..com 65k.

    Small. , . 2

    bytes.

    Compact. , . 4 bytes.

    Medium.

    . 2 bytes.

    Large. .4 bytes.

    Huge. , . .

    ( num) word (2 bytes) .

    small.

  • 5/24/2018 Assembly [ ]

    22/130

    22

    6 :

    ;

    .model small

    .codemov ax,@datamov ds,axmov ax,numor ax,ax ; or

    jz einai_mhdenmov dx, offset mhnhma_oximov ah,9; DOS int 21h ; DOS

    jmp telos

    einai_mhden:mov dx,offset mhnhma_naimov ah,9; DOS int 21h ; DOS

    telos:mov ah,4ch; DOS int 21h ; DOS

    ; .datanum dw 0

    mhnhma_nai db 10,13, "It is zero",10,13,'$'

    mhnhma_oxi db 10,13, "It is not zero",10,13,'$';.stack 256

    end

    3

    1.

    1.1MOVMOV ,

    byte :

    (.MOV AX,BX) (.MOV APOT,AL)

    (.MOV DL,APOT) (.MOV AH,21h) (.MOV ARIT,5)

  • 5/24/2018 Assembly [ ]

    23/130

    23

    . MOV DS,DATASEG;

    1 byte 1 word = 2 bytes... :

    MOV ax,dlMOV bh,dx

    .

    1.2PUSH POP. (stack) LIFO(Last In First Out). / SS:0000 SS:SP.

    PUSHSP2 (2bytes) .

    POP

    SP2.

    / 16 bit, .

    .. SP=100h , SS=1000h , Ax=12. :

    PUSH ax

    SP=0FEh/1000:00FE 12.

    PUSH10 .

    PUSHF , POPF .

    1.3XCHG ( ) bytes words. . . .. AX=14 ,

    BX=15 , :

  • 5/24/2018 Assembly [ ]

    24/130

    24

    XCHG ax,bx

    ax=15 bx=14.

    2..

    2.1

    8086 . , , 8 16 bits. (twos complement). 32 bits . . , ,

    .

    2.2

    ADDSUBMOV:

    ADD , SUB ,

    MOV .

    ADCSBB Carry Flag, CF. 32 bits. 32 bit CX:BX32 bit

    DX:AX.add ax,bxadc dx,cx ; 16 bit

    8086 1 INC DEC. , . :

    INC DEC

    :

    ADD , 1

    SUB , 1

  • 5/24/2018 Assembly [ ]

    25/130

    25

    2.2

    MUL:

    MUL

    .byte AL AX. byte AX DX:AX. . IMUL .. AL=10 DL=15:

    MUL DL

    AX = 150.

    DIV

    DIV

    .byte AX AL AH. byte

    DX:AXAXDX. . IDIV. .. AX=115 DL=10:

    DIV DL

    AH =5 AL = 11.

    NEG.

    2.3

    8086 AND, OR, XOR NOT. bit byte . bit . bit bits . AL=10110110b ,

    AH=11110000b :

    AND al,ah

    al = 10110000b

  • 5/24/2018 Assembly [ ]

    26/130

    26

    0 bit al 0 bit ah , 1 bit al 1 bit ah . AND, OR, XOR, NOT . ,

    .

    3.

    8086 bits . :

    CF

    0

    SHL SAL

    SHL SALbit bit. bit CF bit 0. 2.

    CF

    0

    SHR

    SHRbit .

    bit (. 0) CF bit 0.2.

  • 5/24/2018 Assembly [ ]

    27/130

    27

    CF

    SAR

    SARbit

    bit . 2.

    4 :

    CF

    ROR

    H RORSHRbit

    bit CF.

  • 5/24/2018 Assembly [ ]

    28/130

    28

    CF

    ROL

    ROL . bits .

    CF

    RCR

    CF

    RCL

  • 5/24/2018 Assembly [ ]

    29/130

    29

    RCLRCR. CF. RCL bits , bit CF CF . 0 bit. RCR.

    . 1, CL ..:

    SHL AX,1

    AX 2. :

    MOV CL,4SHL AX,CL

    AX16.

    4.

    4.1

    , .

    . , . , . CF, OF,

    ZF.

    4.2

    JMP

    :

    - byte ( -128 +127 ) . SHORT.

    - ( -32768 +32767 ) . ().

  • 5/24/2018 Assembly [ ]

    30/130

    30

    - . FAR PTR. 8086.

    /() ().

    :

    a:..

    jmp SHORT a; byte label a

    a:..

    jmp FAR PTR a; label a

    a:..mov ax, OFFSET a

    jmp ax ; label a

    a:..

    jmp word ptr [b] ; label a..

    b dw offset a

    4.3

    8086 18 . CF ( Carry Flag), OF (Overflow Flag)SF (Sign Flag).

    CMP , . SUB:

    CMP,

    CMP , SUB , (Flags) , . .

    CMP AL,6

    JA a ; AL >6..

  • 5/24/2018 Assembly [ ]

    31/130

    31

    a:

    CMPTEST(, ) AND(Byte ) , (

    ). TESTbits JNZ. . , 4.

    7 :

    .MODEL SMALL ;

    .CODEmov ax,@datamov ds,axMOV AX,ARIT;

    TEST AX,0000000000000011h; bitJNZ NOT__EVEN; LEA DX,MHNHMA__EINAI; MOV AH,09 ; INT 21HJmp TELOS

    NOT__EVEN:LEA DX,MHNHMA__DEN__EINAI; MOV AH,09 ; INT 21H ;

    TELOS:mov ah,4ch; int 21h ; .DATAMHNHMA__EINAI db "4 is a divisor of arit",10,13,"$"MHNHMA__DEN__EINAI db "4 is not a divisor of arit",10,13,"$"arit dw 1201.stack 100h

    end

    :

  • 5/24/2018 Assembly [ ]

    32/130

    32

    JB/JNAE

    CF=1

    JAE/JNB

    CF=0

    JBE/JNA

    CF=1 ZF=1

    JA/JNBE

    CF=0 ZF=0

    JE/JZ ZF=1

    JNE/JNZ ZF=0

    JL/JNGE

    SFOF

    JGE/JNL

    SF=OF

    JLE/JNG ZF=1 SF

    OF

    JG/JNLE

    ZF=O SF = OF

    JP/JPE

    PF=1

    JNP/JPO

    PF=0

    JS

    SF=1

    JNS

    SF=0

    JC

    CF=1

    JNC

    CF=0

    JO

    OF=1

  • 5/24/2018 Assembly [ ]

    33/130

    33

    JNO

    OF=0

    byte. 128 +127 (Bytes) / . . :

    CMP DL,7JA A.......

    A:

    :

    CMP DL,7JNA BJMP A

    B:.A:

    4.4

    . . , , , , .. 8086 : LOOP,

    LOOPE, LOOPNEJCXZ. . CX.

    LOOP 1 CX 0,

    LOOP. . 18 ,.

    mhnhma DB ....

    mov cx,18;

    lea bx,mhmnhma; /; mhnhma bx

  • 5/24/2018 Assembly [ ]

    34/130

    34

    loop__ektyp:mov dl,[bx] ; dl inc bx ; mov ah,02h ; DOS int 21h ; DOS

    loop loop_ektyp ; CX >0

    LOOPE LOOP CX. LOOPECX0 ZF= 1 ( ). LOOPNE CX0 ZF = 0 ( ). . 256 bytes. ENTER( ASCIl13).

    Buffer db 126 dup (0) ; ....

    mov cx,256; lea bx,buffer; /

    ; bxagain:

    mov ah,8 ; DOS

    int 21h ; DOSmov [bx],al ; ; DOS AL

    inc bx ; cmp al,0dh ; ENTERloopne again ; CX >0 ZF = 0

    JCXZCX = 0. CX

    . .

    JCXZ parakatv; CX=0 again: loop again; CX

    parakatv:

    JCXZ CX=0.

    byte .

  • 5/24/2018 Assembly [ ]

    35/130

    35

    : 1. ASCII

    )

    ) )

    2. byte .

    3. 20 .

    4.5 (pointer).

    /. . / (near pointers) /(far pointers). /, 2 bytes. / , 4 bytes. 0 8086 .

    :

    LES , LDS,

    DWORD 4 bytes, 16bit . 2 bytes ( ) 2 bytes ES DS. (mhnhma)

    . (pointer) /mhnhma.

    8:

    code_seg segment publicassume cs:code_seg,ds:data_segmain proc near

    mov ax,data_seg; dsmov ds,axles di,pointer; pointer,

    ; /mhnhma , ES:DIagain: mov dl,es:[di]; /es:[di] dl

  • 5/24/2018 Assembly [ ]

    36/130

    36

    cmp dl,0; ?je telos; mov ah,2; int 21hinc di;

    jmp again ; telos: mov ah,4ch

    int 21hmain endpcode_seg endsdata_seg segment

    ; far pointer /mhnhmapointer label dword

    dw offset mhnhmadw seg mhnhma

    mhnhma db "END OF TESTING PROGRAM",10,13,0

    data_seg endssoros segment para stack

    db 256 dup (0)soros ends

    END MAIN

  • 5/24/2018 Assembly [ ]

    37/130

    37

    4

    1.

    8086 1Mbyte, . . // . 4, / .

    . . , /, / ( BIU). , .

    2.

    /,

    .

    2.1

    , . .:

    MOV al,3;AL

  • 5/24/2018 Assembly [ ]

    38/130

    38

    AX .

    2.4

    . (DS). /(segmentoverride prefix). /, ( ) .:

    .DATAmhnhma db ,10,13,$PIN db 10 dup (0)

    Arit db 10,3Apot db 0

    MOV AL, ARIT[0]; mov al , [arit] mov al,aritADD al, arit[1]; add al, [arit + 1]MOV AL, MHNHMA[2]; mov al,[2]MOV dl,pin[3]; mov dl,[pin+3] mov dl,mhnhma[21+3]mov al,es:[6]; 7byte extra segmentmov al,ss:[9]; 10byte .

    0. /. __

    3.

    3.1

    .

    0 . . . . :

    [ + + ]

    BXBP, SI DI, . :

    [] [] []

  • 5/24/2018 Assembly [ ]

    39/130

    39

    , , /.

    :

    BX SI + BP DI(base) (index) (displacement) , :

    [] [BP+][BX] [BX]

    [SI] [SI+][DI] [DI+][BX+SI] [BX+SI+][BX+DI] [BX+DI+][BP+SI] [BP+SI+][BP+DI] [BP+DI+][BP]

    /. BP /

    ( SS ), ( DS ). . :

    MOV di,100mov al,amov [di],al; 100 data segment a

    mov bp,spsub bp,10mov al,[bp]; 10 al

    mov si,10mov al,es:[si]; 10 extra segment al

    3.2

    byte . (DBDW) . WORD PTR, BYTE

    PTR. :

    MOV SI,2

  • 5/24/2018 Assembly [ ]

    40/130

    40

    MOV WORD PTR [SI],8; 2 3 byte data segment ; 080h. ; , 8 0

    /

    . OFFSETSEG:

    LEA,

    16 bit . //. OFFSET.

    MOV , OFFSET

    o SEG (segment) . :

    .DATAmhnhma db ...CODE

    ..MOV AX,SEG MHNHMA; MOV ES,AX; ES (extra segment)

    MOV SI,OFFSET MHNHMA; LEA SI, MHNHMAINC SIMOV BYTE PTR ES:[SI],A;E A

    . (Simplified) .

    ;;1

    9:

    .model small ;small

    .stack 200h ; 512

    .datadb 200 dup (0)charstring db "ABCDEFGHIJKLM"

    .codemov ax,@data ; DS mov ds,ax ;

    one:

    mov si , offset charstring +8; si /charstring 8mov dl,[si] ; /si dl

  • 5/24/2018 Assembly [ ]

    41/130

    41

    mov ah,2int 21h

    two:mov bx,8

    mov dl,[charstring + bx]mov ah,2int 21h

    three:mov bx,offset charstringmov dl,[bx+8]mov ah,2int 21h

    four:mov si,8mov dl,[si+charstring]

    mov ah,2int 21h

    five:mov bx,offset charstringmov di,8mov dl,[bx+di]mov ah,2int 21h

    six:mov si,offset charstring

    mov bx,8mov dl,[bx+si]mov ah,2int 21h

    seven:mov bx,offset charstringmov si,7mov dl,[bx+si+1]mov ah,2int 21h

    eight:

    mov bx,3mov si,5mov dl,[bx+charstring+si]mov ah,2int 21h

    telos:mov ah,4chint 21hEnd

    :IIIIIIII

  • 5/24/2018 Assembly [ ]

    42/130

    42

    4

    4.1

    /

    . 8086 , . , . MOV , LOOP, INC.

    . . ( source )

    DS;[SI], ( destination) ES:[DI]. SI

    DIDF. :

    - (DF) = 0 1 byte 2 (word).

    - (DF) = 1 1 byte 2 (word).

    :

    CLD (DF)STD (DF1)

    DF . byte . , byte .

    4.2

    4.2.1 LODS / LODSB / LODSW

    LODSBbyte /DS:[SI]ALSI1. .. :

    CLD ; DFMOV SI,2LODSB

    AL2byte .

  • 5/24/2018 Assembly [ ]

    43/130

    43

    LODSW/DS:[SI]AXSI 2. .. :

    CLDMOV SI,2

    LODSW

    AX2byte 3byte .

    4.2.2 STOS / STOSB / STOSW

    STOSB byte AL / ES:[DI]DI1. .. :

    STD ; DF=1

    MOV di,2MOV AL,4STOSB

    2byte extra 4 DI1.

    STOSWAX /ES:[DI]DI2.

    4.2.3MOVS / MOVSB / MOVSW

    LODSSTOS. byte ( MOVSB) ( MOVSW) /DS:[SI] /ES:[DI]DISI 1 2. . PHGH PROORISMOS. MEGETHOS__SE__BYTE.

    cld ; DFmov cx,MEGETHOS__SE__BYTE : cxmov si,OFFSET PHGH ; /SI

    mov ax,SEG PHGH ; mov ds,ax ; DSmov di, OFFSET PROORISMOS ; /DImov ax, SEG PROORIMOS ;mov es,ax ; ES

    brogxos__metaforas :movsb : BYTEloop brogxos__metaforas ; CX

    4.3

    4.3.1 SCAS / SCASB / SCASW

  • 5/24/2018 Assembly [ ]

    44/130

    44

    SCAS ES:[DI]. : SCASBAL(byte)SCASWAX(). ( alax)

    ES:[DI] . DI 1 2 . , :

    10:

    DOSSEG ; .MODEL TINY ; Turbo C Tiny ( .com )

    .CODEorg 100h ; 256 byte arxh proc

    LEA DX,EISAGVGH ; MOV AH,9 ; INT 21h ;DOSmov ah,08 ; int 21h ; DOS alMOV CX, MHKOS_KEIMENOY ; cx

    lea di,keimeno; mov bx,seg keimeno ; .EXE ; mov es,bx

    cld ; DFloop_again : ; scasb ;

    je nai ; loop loop_again ;

    LEA DX,mhnhma_noMOV AH,9INT 21h

    Jmp short telosnai:

    LEA DX, _yesMOV AH,9INT 21h

    telos:INT 20HArxh endp

    .DATA ; EISAGVGH DB "PRESS A KEY PLEASE $"

    KEIMENO db "SEARCH OF A CHARACTER"MHKOS_KEIMENOY DW $ - KEIMENO

  • 5/24/2018 Assembly [ ]

    45/130

    45

    MHNHMA_NO db 10,13," THE CHARACTER THAT YOU HAVE SELECTEDDOES NOT EXIST",10,13,"$"_YES db 10,13,"YES THE CHARACTER THAT YOU HAVESELECTED REALLY EXIST IN THE SET",10,13,"$"

    End arxh

    4.3.2 CMPS / CMPSB / CMPSW

    . . /DS:[SI} /

    ES:[DI]. /ES:[DI] /DS:[SI]. DI, SIDF.

    4.4

    . : REP , REPE, REPZ, REPNE, REPNZ. , .

    REP

    CX. (SI, DI) CX1. :

    mov cx,megethos__se__bytebrogxos__metaforas :

    movsb ; BYTEloop brogxos_metaforas ;

    :

    mov cx,megethos__se__byte

    REP movsb ; BYTE

    CX= 0 .

    CX ZF. .

    REPEREPZCX=0 ( ). REPNEREPNZCX=0 ( ). :

    MOV CX, MHKOS__KEIMENOY ; cx

  • 5/24/2018 Assembly [ ]

    46/130

    46

    loop__again: ; scasb ; je nai; loop loop__again;

    :

    MOV CX, MHKOS__KEIMENOY; cxRepnz scasb ;

    5 XLAT

    XLAT:

    XLAT

    . byte AL , . BX . AL . AL /[AL + BX] ( DS). : . ASCII

    ascii 737.

    11:

    DOSSEG;DGROUP group @data,@code.MODEL TINY,c;.COM

    .CODEorg 100h; 256 .com

    arxh proclea dx ,messagemov ah,09int 21h

    AGAIN:mov ah,08; int 21h ; DOSCMP AL,27 ; ESCJE TELOS ; ESCcmp al,7fh

    ja printLEA BX,TRANS_PINAKAS ; BX

  • 5/24/2018 Assembly [ ]

    47/130

    47

    XLAT ; AL [a1] print:

    MOV DL,AL ; MOV AH,2; INT 21h ; DOS

    JMP SHORT AGAIN;

    telos:INT 20H; DOS .com Arxh endp

    .DATA; ASCII 127TRANS_PINAKAS label byte

    db 00h,01h,02h,03h,04h,05h,06h,07h,08h,09h,0ah,0bh,0ch,0dh,0eh,0fhdb 10h,11h,12h,13h,14h,15h,16h,17h,18h,19h,1ah,1bh,1ch,1dh,1eh,1fhDB 20h,21h,22h,23h,24h,25h,26h,27h,28h,29h,2ah,2bh,2ch,2dh,2eh,2fh

    DB 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h,3ah,3bh,3ch,3dh,3eh,3fhDB 40h,128,129,150,131,132,148,130,134,136,141,137,138,139,140,142DB 143,51h,144,145,146,135,151,145,149,147,133,5bh,5ch,5dh,5eh,5fhDB 60h,152,153,175,155,156,173,154,158,160,165,161,162,163,164,166DB 167,71h,168,169,171,159,224,170,174,172,157,7bh,7ch,7dh,7eh,7fh

    MESSAGE DB "PRESS ANY KEY TO TRANSLATE IT IN GREEKLETTER",10,13, "PRESS ESC FOR EXIT",10,13,"$"end arxh

    5

    1.

    . (subroutines) .

    PASCAL (Function , Procedures). . . , , .

    .

  • 5/24/2018 Assembly [ ]

    48/130

    48

    , . .

    2. (PROCEDURES)

    (procedure) . :

    ASCII.

    1. .2. 1.3. 4. 2.5. .6. .

    12:

    code_seg segmentassume cs:code_seg,ds:data_segkyrioproc proc far

    xor ax,ax; axpush ds ; PSPpush ax ; , DOS.mov dx,data_segmov ds,dx ; DSlea dx,mhnhma1call emfanish_mhnhmacall input_hex

    mov cl,4 ; alshl al,cl; 16 mov ascii_timh,al; call input_hex; al

    add ascii_timh,al; mov dl,ascii_timhcall emfan_hexret ; DOS

    kyrioproc endp

    ; input_hex proc near

  • 5/24/2018 Assembly [ ]

    49/130

    49

    again:call input_char ; cmp al,'0' ;

    jb again ; cmp al,'9' ; 0 9

    ja deytero_elegxomov dl,al ; call emfanish_char ; sub al,'0' ; ret ;

    deytero_elegxo:cmp al,'A' ;

    jb again ; A Fcmp al,'F'

    ja trito_elegxomov dl,al

    call emfanish_charadd al,10sub al,'A'ret

    trito_elegxo:cmp al,'a' ; a f

    jb againcmp al,'f'

    ja againmov dl,al

    call emfanish_charadd al,10sub al,'a'ret

    input_hex endp; ASCII ; emfan_hex proc near

    call allagh_grammhslea dx,mhnhma2call emfanish_mhnhma

    mov dl,ascii_timhcall emfanish_charret

    emfan_hex endp

    ; allagh_grammhs proc near

    lea dx,nea_grammhcall emfanish_mhnhmaret

    allagh_grammhs endp

    ;emfanish_mhnhma proc near

  • 5/24/2018 Assembly [ ]

    50/130

    50

    mov ah,09hint 21hret

    emfanish_mhnhma endp

    ;emfanish_char proc near

    mov ah,02hint 21hret

    emfanish_char endp

    ; input_char proc near

    mov ah,08hint 21h

    retinput_char endpcode_seg ends

    ; data_seg segment

    mhnhma1 db "Please enter a two digits hexadecimal number",10,13,"$"nea_grammh db 10,13,"$"mhnhma2 db 10,13,"The character is : $"

    ascii_timh db ?data_seg endssoros segment para stack

    db 256 dup (0)soros ends

    end kyrioproc

    :

    1.

    .

    2. , PROC ENDP. / ;.

    3. CALL.CALL emfanish__char

    4. RET.

  • 5/24/2018 Assembly [ ]

    51/130

    51

    5. RET.6. .7. NEARFAR.8. RET.

    2.CALL RET.

    2.1

    CALLRET, :

    CALL / CALL, /CALL.

    RET, /CALL.

    2.2 CALL

    CALL, . RET. CALL NEARCAL L (near ptr call),FARCALL (far ptr call).

    IPSP 2. /.

    CS SP2 IPSP. / CALL. FAR PTRNEAR FAR..

    CALL FAR PTRemfanish__char.

  • 5/24/2018 Assembly [ ]

    52/130

    52

    , / . WORD PTR DWORD PTR. ..

    .CALL WORD PTR function__ptr

    Function__ptr dw input__char

    call / , pointer function__ptr. /input__char input__char.

    2.3 RET

    RET. RET NEARRET (RETN), FARRET(RETF).

    RET IP SP 2. CALL.

    RET

    IP SP 2 CSSP2.CALLRET .

    2.4 .

    DOS 256 bytes

    (program segment prefix) PSP. .COM 256 bytes bytes . .EXE . / ENVIROMENT (PATH, .), .. . :

  • 5/24/2018 Assembly [ ]

    53/130

    53

    00-01 bytes 0CD20H

    int 20h DOS

    02-03 . .

    04 05

    CL.

    0AH-ODH0EH-11H12H-15H16H-2BH2CH-2DH

    CP/Mint 22hint 23hint 24h / ENVIRONMENT. Environment SET

    DOS :

    = 2EH-5BH 5Ch-6BH FCB 16CH-7BH FCB 2

    7CH-7FH 80H bytes

    .

    81H-0FFH .

    , .

  • 5/24/2018 Assembly [ ]

    54/130

    54

    13:

    ASSUME CS:CODE__SEGMAIN proc far

    PUSH DS; DOS,

    XOR AX,AX; (SEGMENT) PSPPUSH AX; PSPMOV BX, 80H; BX XOR CX,CX; CXMOV Cl,ES:[BX];CXJCXZ TELOS;

    AGAIN:INC BX; MOV DL,ES:[BX]; dlMOV AH,2; INT 21H; DOS

    LOOP AGAINTELOS: RET; DOS INT 20h PSPMAIN endpCODE__SEG ENDS

    SOROS SEGMENT STACKDB 100H DUP (0)

    SOROS ENDSEND MAIN

    2.5 DOS RET.

    DOSRET. ,

    byte PSP:INT 20h , DOS. DSES/ PSP , / PSP DS:0000./PUSHRETFPSPINT 20hDOS. :

    ..push ds ; PSPxor ax,ax ; ax

    push ax ; , DOS...; ..ret ; PSP

    2.6

  • 5/24/2018 Assembly [ ]

    55/130

    55

    ASCII 0.(null terminated

    stringC)

    14:

    code_seg segmentassume cs:code_seg,ds:data_segkyrioproc proc far

    xor ax,ax; axpush ds ; PSPpush ax ; ,

    DOS.mov dx,data_segmov ds,dx ; DSlea bx,mhnhma

    call emfan_mhnhmaret ; DOS

    kyrioproc endp

    ;************************************;* *;* *;* ***********;* /BX *

    ;*************************************emfan_mhnhma proc nearagain:

    mov dl,[bx] ; /bx dlinc bx ; /cmp dl,0 ; jz epistrofh ; call emfanish_char ; jmp short again ;

    epistrofh :ret

    emfan_mhnhma endp

    ;************************************;* *;* *;* ********** *;* ASCII DL *;************************************emfanish_char proc near

    mov ah,02hint 21hret

    emfanish_char endp

  • 5/24/2018 Assembly [ ]

    56/130

    56

    code_seg ends

    ; data_seg segment

    mhnhma db "END OF PROGRAMM",10,13,0nea_grammh db 10,13,0data_seg ends

    soros segment para stackdb 256 dup (0)

    soros endsend kyrioproc

    emfan__mhnhma / mhnhma. / emfan__mhnhma BX. emfanish__charASCII DL, DL. , .

    :

    - -

    ASSEMBLY. . . DOS BIOS

    (10).

    . (C, PASCAL), . 3. :

    PUSH , BP.

    ( CALL)

  • 5/24/2018 Assembly [ ]

    57/130

    57

    . , :

    15:

    code_seg segmentassume cs:code_seg,ds:data_segkyrioproc proc far

    xor ax,ax; axpush ds ; PSPpush ax ; , DOSmov dx,data_segmov ds,dx ; DSlea ax,mhnhma; /mhnhma

    push ax ; call near ptr emfan_mhnhma

    add sp,2; push axret ; DOS

    kyrioproc endp

    ; emfan_mhnhma proc nearpush bpmov bp,spmov bx,[bp+4]; /string bx; +4 near call 4 SP

    ;/2 bp; 2 /callagain:

    mov dl,[bx]inc bxcmp dl,10

    jz epistrofhpush dx; ASCII call emfanish__charadd sp,2; push ax

    jmp short again

    epistrofh:pop bpret

    emfan_mhnhma endp

    ; emfanish__char proc nearpush bpmov bp,spmov dx,[bp+4]; ASCII DX

    ; DL 2

    ; DOSmov ah,02h

  • 5/24/2018 Assembly [ ]

    58/130

    58

    int 21hpop bpret

    emfanish__char endp

    code_seg ends

    ; data_seg segment

    mhnhma db "END OF PROGRAMM",10,13,0

    data_seg ends

    soros segment para stackdb 256 dup (0)

    soros endsend kyrioproc

    , BP.

    2.7

    . :

    - BYTE AL.

    - WORD AX.

    - DWORD () DX:AL.

    2.8

    . assembly , . , . :

    (

  • 5/24/2018 Assembly [ ]

    59/130

    59

    PUSH), ( RET) ( POP)

    :

    ,************************************,* *

    ,* *

    ,* ********** *

    ,* /BX *

    ,************************************emfan__mhnhma proc nearagain:push dx; dxmov dl:[bx]; / bx dl

    inc bx ; /cmp dl,0 ; jz epistrofh ; call emfanish__char ; jmp short again ; epistrofh :pop dx; dx ret

    emfan__mhnhma endp

  • 5/24/2018 Assembly [ ]

    60/130

    60

    6

    DEBUG

    1

    , , , , . .

    . bugs .

    DEBUG. , , , . .COM .

    DEBUG . CNTR C. CNTR S

    . CNTR C.

    2

    2.1

    DEBUGdebug. ..

    C: >DEBUGC: >DEBUG ASKHSH.EXE

    (prompt) debug -. debug

    -Q(Quit).

    debug

    . DOS. :

  • 5/24/2018 Assembly [ ]

    61/130

    61

    LEA DX, MHNHMAMOV AH,9INT 21HINT 20

    MHNHMA DB $

    2.2 .

    debug -A100(Assembly) assembly . debug assembly . / 100H / .COM.

    Debug segment 247F, 100. , . Debug Return:

    -a100247F:0100 lea dx,[200]247F:0104 mov ah,09247F:106 int 21247F:018 int 20247F:010A

    -A Return .

    2.3

    , 200/ . :

    -f200 L9 Geia soy$

    -F (Fill)L 9 . .

    2.4

    -G(Go), :

    -g

  • 5/24/2018 Assembly [ ]

    62/130

    62

    Geia soyProgram terminated normally-2.5

    /(segment) . / 247F:100/

    247F0+ 100--------248F0

    2.6 Unassembly

    assembly . -U .

    -U 100 108

    247F:0100 8D160002 LEA DX,[0200]247F:0104 B409 MOV AH,09247F:0106 CD21 INT 21

    247F:0108 CD20 INT 20

    2.7 ,

    Debug .com. .com:

    - -N(Name).- BX:CX

    -R(Register).

    - -W(Write). 110H bytes. MHNHMA.COM Debug :

    -N MHNHMA.COM

    -RBXBX 0000

    :-RCX

  • 5/24/2018 Assembly [ ]

    63/130

    63

    CX 0000:210-WWriting 00210 bytes-

    -R(register). -R , , . . -R

    -RAX=0900 BX=0000 CX=0000 DX=0200 SP=FFEE BP=0000 SI=0000 DI=0000DS=247B ES=247B SS=247B CS=247B IP=0108 NV UP EI PL NZ NA PONC247F:0108 CD20

    2.7 .

    -D (Dump) , 128, 8 16 . :

    -d247F:0200 47 65 69 61 20 73 6F 75-24 00 00 00 00 00 00 00 Geia sou$.247F:0210 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .247F:0220 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .

    247F:0230 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .247F:0240 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .247F:0250 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .247F:0260 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .247F:0270 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .

    /segment:offsetbytes.

    Debug bytes ASCII , .

    -D DS. 3 segments -D/. .

    -D SS:0100

    2.8 .

    -E(Enter). byte .

    . spacebar. Return

  • 5/24/2018 Assembly [ ]

    64/130

    64

    . .. AAAAAAAA.

    -e 200247F:0200 47.41 65.41 61.41 20.41 73.41 6F.41 75.41

    247F:0208 24.

    41h ASCII A. //. -d.

    -d200247:0200 4141 41 41 41 41 41 41-24 00 00 00 00 00 00 00 $.247:0210 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .247:0220 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .247:0230 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .247:0240 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .247:0250 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .247:0260 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .247:0270 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .

    -g=100AAAAAAAAProgram terminated normally-

    2.9

    Debug, ASCII ? Z. :

    1. DL ASCII ? (3F )

    2. DL 2DOS.

    3. 1 DL.

    4. (DL) ASCII Z(5B ) 2 4.

    5. DOS.

    Debug:

    A>debug

    -a247B:0100 mov dl,3F247B:0102 MOV AH,2

  • 5/24/2018 Assembly [ ]

    65/130

    65

    247B:0104 INT 21247B:0106 INT DL247B:0108 CMP DL,5B247B:010B JBE 102247B:010D INT 20

    247B:010F

    :

    -G?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[Program terminated normally

    ASKHSH1.COM Debug:

    -N ASKHSH1.COM

    -RBXBX 0000:-RCXCX 0000:f-WWriting 0000F bytes

    -Q

    Debug-L (Load):

    A>debug-n askhsh1.com-l-u 100 10D2490:0100 B23F MOV DL,3F

    2490:0102 B402 MOV AH,022490:0104 CD21 INT 212490:0106 FEC2 INC DL2490:0108 80FA5A CMP DL,5A2490:010B 76F5 JBE 01022490:010D CD20 INT 20

    -T(Trace). :

    -t

  • 5/24/2018 Assembly [ ]

    66/130

    66

    AX=023F BX=0000 CX=000F DX=0040 SP=FFFE BP=0000 SI=0000 DI=0000DS=2490 ES=2490 SS=2490 CS=2490 IP=010B NV UP EI NG NZ AC PO CY2490:010B 76F5 JBE 0102

    -t

    AX=023F BX=0000 CX=000F DX=0040 SP=FFFE BP=0000 SI=0000 DI=0000DS=2490 ES=2490 SS=2490 CS=2490 IP=0102 NV UP EI NG NZ AC PO CY2490:0102 B402 MOV AH,02-t

    AX=023F BX=0000 CX=000F DX=0040 SP=FFFE BP=0000 SI=0000 DI=0000DS=2490 ES=2490 SS=2490 CS=2490 IP=0104 NV UP EI NG NZ AC PO CY2490:0104 CD21 INT 21-p?AX=0240 BX=0000 CX=000F DX=0040 SP=FFFE BP=0000 SI=0000 DI=0000DS=2490 ES=2490 SS=2490 CS=2490 IP=0106 NV UP EI NG NZ AC PO CY

    2490:0106 FEC2 INC DL-p

    AX=0240 BX=0000 CX=000F DX=0041 SP=FFFE BP=0000 SI=0000 DI=0000DS=2490 ES=2490 SS=2490 CS=2490 IP=0108 NV UP EI NG NZ AC PO CY2490:0108 80FA5A CMP DL,5A-t

    AX=0240 BX=0000 CX=000F DX=003F SP=FFFE BP=0000 SI=0000 DI=0000DS=2490 ES=2490 SS=2490 CS=2490 IP=0102 NV UP EI NG NZ AC PO CY2490:0102 B402 MOV AH,02-p

    AX=0240 BX=0000 CX=000F DX=003F SP=FFFE BP=0000 SI=0000 DI=0000DS=2490 ES=2490 SS=2490 CS=2490 IP=0104 NV UP EI NG NZ AC PO CY2490:0104 CD21 INT 21-p?AX=023F BX=0000 CX=000F DX=003F SP=FFFE BP=0000 SI=0000 DI=0000DS=2490 ES=2490 SS=2490 CS=2490 IP=0106 NV UP EI NG NZ AC PO CY2490:0106 FEC2 INC DL-p

    AX=023F BX=0000 CX=000F DX=0040 SP=FFFE BP=0000 SI=0000 DI=0000DS=2490 ES=2490 SS=2490 CS=2490 IP=0108 NV UP EI NG NZ AC PO CY2490:0108 80FA5A CMP DL,5A

    -T

    AX=023F BX=0000 CX=000F DX=0040 SP=FFFE BP=0000 SI=0000 DI=0000DS=2490 ES=2490 SS=2490 CS=2490 IP=010B NV UP EI NG NZ AC PO CY2490:010B 76F5 JBE 0102

    (CALLINT) -T -P (Proceed) CALLINT.

  • 5/24/2018 Assembly [ ]

    67/130

    67

    , , . :

    :

    CMP DL,5A

    SF ( ) : (DL) 5A.

    2.10 .

    . (break points). -G:

    -G=

    ..

    -g=100 10d?@ABCDEFGHIJKLMNOPQRSTUVWXYZAX=025A BX=0000 CX=000F DX=005B SP=FFFE BP=0000 SI=0000 DI=0000DS=2490 ES=2490 SS=2490 CS=2490 IP=010D NV UP EI NG NZ AC PO CY2490:010D CD20 INT 20

    / 100 010D /.

    /010D

    (DL) >5A

    CFSF0, ZF=1.

    2.11Debug.EXE

    .COM .EXE. .EXE .

    .

  • 5/24/2018 Assembly [ ]

    68/130

    68

    MHNHMA.EXE , .

    A>debug-n mhnhma.exe

    -l-u24A0:0000 33C0 XOR AX,AX24A0:0002 1E PUSH DS24A0:0003 50 PUSH AX24A0:0004 BAA324 MOV DX,24A324A0:0007 90 NOP24A0:0008 8EDA MOV DS,DX24A0:000A BB0000 MOV BX,000024A0:000D E80100 CALL 001124A0:0010 CB RETF

    24A0:0011 8A17 MOV DL,[BX]24A0:0013 43 INC BX24A0:0014 80FA00 CMP DL,0024A0:0017 7405 JZ 001E24A0:0019 E80300 CALL 001F24A0:001C EBF3 JMP 001124A0:001E C3 RET24A0:001F B402 MOV AH.0224A0:0021 CD21 INT 2124A0:0023 RET

    0000. :

    MOV DX,24A3MOV DS,DXMOV BX,0000

    /24A3:0000, :

    -d 24a3:000024A3:0000 54 45 4C 4F 53 20 50 52-4F 47 52 41 4D 4D 41 54 TELOS PROGRAMMAT24A3:0010 4F 53 0A 0D 00 0A 0D 00-00 00 00 00 00 00 00 00 OS.24A3:0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .24A3:0030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .24A3:0040 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .24A3:0050 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .24A3:0060 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .24A3:0070 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .

    .COM ..... :

    -gTELOS PROGRAMMATOS

  • 5/24/2018 Assembly [ ]

    69/130

    69

    Program terminated normally-

    CALLRET . .-T/:AX=0000 BX=0000 CX=0150 DX=24A3 SP=00FC BP=0000 SI=0000 DI=0000DS=24A3 ES=2490 SS=24A5 CS=24A0 IP=000D NV UP EI NG NZ AC PO CY 24A0:000D E80100 CALL 0011-t

    AX=0000 BX=0000 CX=0150 DX=24A3 SP=00FA BP=0000 SI=0000 DI=0000DS=24A3 ES=2490 SS=24A5 CS=24A0 IP=0011 NV UP EI NG NZ AC PO CY24A0:0011 8A17 MOV DL,[BX] DS:0000=54

    SPCALL. RET, SP...

    AX=0254 BX=0001 CX=0150 DX=2454 SP=00F8 BP=0000 SI=0000 DI=0000DS=24CB ES=24B8 SS=24CD CS=24C8 IP=0023 NV UP EI NG NZ AC PO CY24C8 :0023 C3 RET-t

    AX=0254 BX=0001 CX=0150 DX=2454 SP=00FA BP=0000 SI=0000 DI=0000

    DS=24CB ES=24B8 SS=24CD CS=24C8 IP=001C NV UP EI NG NZ AC PO CY24C8 :001C EBF3 JMP 0011

    3 DEBUG.setDEBUG: A [address] Assemble

    C range address Compare

    D [range] Dump

    E address [list] Enter

    F range list Fill

    G [=address [address]..] Go

    H value value Hex

    I value Input

    L [address [drive:record record] Load

  • 5/24/2018 Assembly [ ]

    70/130

    70

    M range address Move

    N filename [filename] Name

    O value byte Output

    Q Quit

    R [register-name] Register

    S range list Search

    T [=address] [value] Trace

    U [range] Unassemble

    W [address [drive:record record ]] Write

    Debug . :

    drive:Drive 0=A, 1=B, 2=C.

    byte:.

    record:record sector.value:.

    address:/8086 /offset 8086. offset / segment CS DS .

    range://L value.

    Debug

    -A (Assemble)

    -C (Compare) / address . .

    -D (Dump)

    -E (Enter)

  • 5/24/2018 Assembly [ ]

    71/130

    71

    bytes . byte byte spacebar.

    -F (Fill).

    .

    -G (Go), , ,

    -H (Hex)

    -I (Input)byte

    -L (Load)

    -M (Move)/address.

    -N (Name). Load Write

    -O (Output)

    byte

    -P (Proceed)Call,Int.

    -Q (Quit)Debug

    -R (Register)

    -S (Search)

    -T (Trace)/.

    -U (Unassemble).

    -W (Write)BX:CX .

  • 5/24/2018 Assembly [ ]

    72/130

    72

    7

    1

    1.1.. :

    -

    - . 8086 . 6.1 . / :

    1. 2. 3.

    8086ROMRAM . 220, /00000h FFFFFh. // / ( I/O) . / I/O (ports) 216 = 65.356 (,, , , ..)

    6809 68000

    Motorola, /. //:

    - / /. /.

    - / / / / . /.

    , / /, (control

  • 5/24/2018 Assembly [ ]

    73/130

    73

    bus) /.

    1.2/ (= ports)., ./.

    / / , //(Address bus) , A0 A15, ///. 16 /216= 64K //.

    .

    8086. / . :

    1. (Data ports).2. (Control ports).3. (Status ports).

    8259, 8253, 8255 .. , /.

    2 2.1 8086 . /

    INOUT.

    2.2IN.:

    IN ,

    AL AX byte

    . :

  • 5/24/2018 Assembly [ ]

    74/130

    74

    /. /byte(256) IN. .

    INal,60h ; byte

    /. / 255 , DX , / , IN ..

    mov dx,3f4h ; byte in al,dx ; FCD 8272A

    2.3OUT.:

    OUT ,

    , IN. :

    mov dx,3d4hmov al,0fhout dx,al ; 15 /3b4h.

    2.48086

    8086 16bits. 51. :

    byte ( IN OUT AL) / byte (D0 - D7) byte (D8 D15).

    (IN OUT AX), , /.

    3 3.1 . ( ) .,

    .

  • 5/24/2018 Assembly [ ]

    75/130

    75

    , . ( OUTKIN) byte 0 bit . 7 bits

    . ,

    bits.

    bits byte AND OR . bits AND 1 bitsOR .

    :

    in al,OUTKIN ; or al,00000001b ; 1 0 bitout OUTKIN,al ;

    :

    in al,OUTKIN ; and al,11111110b ; 0 0 bitout OUTKIN,al ;

    3.2

    V

    t

    V

    t

    , . :

    in al,OUTKIN ; or al,00000001b ; 1 0 bit

  • 5/24/2018 Assembly [ ]

    76/130

    76

    out OUTKIN,al ; ;.; ; .

    in al,OUTKIN ; and al,11111110b ; 0 0 bitout OUTKIN,al ; ;.; ; .; ;

    . ,

    . ( LOOP CMP ) . . .

    3.3 .

    . .

    3.4. 8255 Intel. dip , , 8253.

    8255 byte AC/60H-62H. , (/61H) .

    bit0 1 . bit0 2 . bit 1 . . .

    1. 61h xxxxxx10b

  • 5/24/2018 Assembly [ ]

    77/130

    77

    2. 3. 61h xxxxxx00b4. 5. 1 4

    XXXXXXbits 61h , .

    (1, 0) . ( 2 4). , LOOP CX (.3 .4.4). .com :

    16:

    code_seg segmentassume cs:code_seg

    org 100hhxos proc near

    port_b equ 61h ; oliko_loop equ 50000 ; ariumos_epanalalhcevn equ 1000;

    in al, port_b ; and al,11111110b ; mov cx,oliko_loop; CX

    again:push cx ;

    ; or al,00000010b ; 1 1 bitout port_b,al ; mov cx,ariumos_epanalalhcevn;

    kauysterhsh_1:loop kauysterhsh_1; and al,11111100b ; 0 1 bit

    out port_b,al ; mov cx,ariumos_epanalalhcevn;

    kauysterhsh_2:loop kauysterhsh_2;

    pop cx ; ;

    loop againint 20h ; DOS .COM

    hxos endpcode_seg ends

    end hxos

  • 5/24/2018 Assembly [ ]

    78/130

    78

    3.58253 8253 8086. 8253 40h42h. ,

    bytes byte . 16 bits. . . . .

    0 . 18.2 .

    , / 0046CH. bytes byte . .

    1 . DMA(Direct Memory

    Access) DMA RAM.

    2 . . . .0 1 bit 61H8255 ON (1).

    8253 30 2 .

    8253 43H.

    byte 8253 , . bits :

    bit 0 0 , 1 BCD3-1 (0-5)5-4

    00 01 /byte10 /byte11 /byte

    byte

    7-6 00 01 10

  • 5/24/2018 Assembly [ ]

    79/130

    79

    8253

    1. byte 43h, bits , , ,

    2. 1 bit 0 bit1 61h.

    3. 64k 42h,byte byte. 1.19 .

    :

    17:

    code_seg segmentassume cs:code_seg,ds:code_seg

    org 100hhxos proc near

    port_b equ 61h ; command_rec equ 43h; channel_2 equ 42h; 2

    in al, port_b;or al,00000011b ; 1 out port_b,al ; bits 61h 8255mov al,10110110b; bits

    ; 10 2 - 2 byte - 3 - out command_rec,al; mov ax,2000 ; out channel_2,al; bytexchg al,ah ; byteout channel_2,al ; mov ah,8 ; int 21h ; (8 DOS)

    in al,port_b ; 2 bits and al,11111100b ; 61h out port_b,al ; bit

    ; int 20h ; DOS

    hxos endpcode_seg ends

    end hxos

    :

  • 5/24/2018 Assembly [ ]

    80/130

    80

    1. / bit.

    2. .

    8

    1

    1.1.

    . (interrupts). , (.. ) . :

    1. .2. 3.

    CPU.

    4. / , , , / ( CS IP) (Interrupt Service Routine ISR).

    5. IP , CS

  • 5/24/2018 Assembly [ ]

    81/130

    81

    (SR). .

    . (status register) . / .

    , (Interrupt Handler), , , .

    . IRET(Interrupt RETurn) CS ,IPSR.

    1.2.8086 256 . 0 255.

    /(Interrupt Vector) . . 4 bytes (dword), / ( ).

    1024 bytes (/0000:0000h /0000:03FFh), 256 (dword =4 bytes), (Interrupt Vector Table). 10 11 /:

    10 * 4 = 40D = 0000:0028h.

    /lowhigh , () byte (.1 5).

    -D debug :

    A>debug-d0000:0000

    0000:0000 FB 91 19 00 F4 04 70 00-16 00 88 0D F4 06 70 00 pp.0000:0010 F4 06 70 00 54 FF 00 F0-6F EF 00 F0 6F EF 00 F0 p.To..o..0000:0020 EC 03 39 0F 3B 06 39 0F-6F EF 00 F0 6F EF 00 F0 ..9..9.oo..

  • 5/24/2018 Assembly [ ]

    82/130

    82

    0000:0030 6F EF 00 F0 6F EF 00 F0-B7 00 88 0D F4 06 70 00 o..op.0000:0040 65 F0 00 F0 4D F8 00 F0-41 F8 00 F0 74 07 70 00 e..M..At.p.0000:0050 39 E7 00 F0 4A 08 70 00-2E E8 00 F0 D2 EF 00 F0 9..J.p......0000:0060 C8 E3 00 F0 FB 07 70 00-6E FE 00 F0 EE 06 70 00 .p.n...p.0000:0070 53 FF 00 F0 A4 F0 00 F0-22 05 00 00 00 00 00 00 2.*..-d

    0000:0080 BF 40 19 00 EB 40 19 00-4F 03 DF 1E 8A 03 DF 1E .@[email protected]:0090 17 03 DF 1E D8 42 19 00-5F 43 19 00 64 A1 19 00 BCd..0000:00A0 29 04 39 0F 62 07 70 00-C5 40 19 00 C5 40 19 00 ).9.b.p..@[email protected]:00B0 C5 40 19 00 C5 40 19 00-40 01 FD 0D A0 01 FE 0D .@@[email protected]:00C0 EA C6 40 19 00 EF 00 F0-C5 40 19 00 C5 40 19 00 .@.@[email protected]:00D0 C5 40 19 00 C5 40 19 00-C5 40 19 00 C5 40 19 00 .@..@..@[email protected]:00E0 C5 40 19 00 C5 40 19 00-C5 40 19 00 C5 40 19 00 .@..@..@[email protected]:00F0 C5 40 19 00 C5 40 19 00-C5 40 19 00 C5 40 19 00 .@..@..@[email protected]:0100 59 EC 00 F0 41 E4 00 F0-6F EF 00 F0 6F EF 00 F0 Y..A..o..o..0000:0110 6F EF 00 F0 6F EF 00 F0-01 E4 00 F0 6F EF 00 F0 o..o.o..0000:0120 6F EF 00 F0 6F EF 00 F0-6F EF 00 F0 6F EF 00 F0 o..o..o..o..0000:0130 6F EF 00 F0 6F EF 00 F0-6F EF 00 F0 6F EF 00 F0 o..o..o..o..

    0000:0140 6F EF 00 F0 6F EF 00 F0-6F EF 00 F0 6F EF 00 F0 o..o..o..o..0000:0150 6F EF 00 F0 6F EF 00 F0-6F EF 00 F0 6F EF 00 F0 o..o..o..o..0000:0160 6F EF 00 F0 6F EF 00 F0-6F EF 00 F0 6F EF 00 F0 o..o..o..o..0000:0170 6F EF 00 F0 6F EF 00 F0-6F EF 00 F0 6F EF 00 F0 o..o..o..o..-d0000:0180 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ............0000:0190 01 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ............0000:01A0 6F EF 00 F0 6F EF 00 F0-6F EF 00 F0 6F EF 00 F0 o..o..o..o..0000:01B0 6F EF 00 F0 6F EF 00 F0-6F EF 00 F0 6F EF 00 F0 o..o..o..o..0000:01C0 52 00 88 0D F3 EC 00 F0-6F EF 00 F0 6F EF 00 F0 R..o..o..0000:01D0 6F EF 00 F0 70 F0 00 F0-17 01 88 0D 6F EF 00 F0 o..p.o..0000:01E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ............0000:01F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ............

    -d0000:0200 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ............0000:0210 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ............0000:0220 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ............0000:0230 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ............0000:0240 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ............0000:0250 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ............0000:0260 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ............0000:0270 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ............-d0000:0280 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ............0000:0290 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ............0000:02A0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ............

    0000:02B0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ............0000:02C0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ............0000:02D0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ............0000:02E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ............0000:02F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ............-d0000:0300 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ............0000:0310 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ............0000:0320 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ............0000:0330 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ............0000:0340 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ............0000:0350 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ............0000:0360 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ............0000:0370 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ............-d

  • 5/24/2018 Assembly [ ]

    83/130

    83

    0000:0380 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ............0000:0390 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ............0000:03A0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ............0000:03B0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 DC 03 ............0000:03C0 40 00 E0 03 40 00 42 42-00 CC F4 C9 00 F0 6D EF @[email protected]:03D0 00 F0 86 00 30 80 39 ED-00 07 E2 03 E2 03 00 F0 ....0.9......

    0000:03E0 3A A4 27 00 01 00 00 7C-01 00 00 00 00 00 00 00 ..`.|.0000:03F0 00 00 03 00 01 00 00 7C-95 8D 12 8D 00 F0 46 02 .|.F.

    / 0 1900:91FB 1 7000:06F4 . . .

    /:

    1. . (.8)1. .2. (IF=0)3. (TF=0)4. CS, IP 5. IP /* 4

    CS / * 4 + 26.

    /CS:IP.

    2

    2.1

    , /.

    .

    2.2 .

    (, ,COM1, ..) 8259 /INTR. IF. IF1 . IF0 .

    CLI0 IF. IF CLI STI , /. (maskable). INTA (INTerrupt Acknowledge=

    ), .

  • 5/24/2018 Assembly [ ]

    84/130

    84

    STI1 IF.

    /:

    1. . (.8)1. .2. (IF=0)3. (TF=0)4. CS, IP5. IP/* 4

    CS / * 4 + 26.

    /CS:IP.

    :5 8 9 0B COM20C COM10D 0F

    2.3

    NMI ,, .. /2.

    2.4 .

    . .

    2.5

    INT n, n . 21H DOS. . BIOS. :

    INT N

    , , 3 :

  • 5/24/2018 Assembly [ ]

    85/130

    85

    CLI; PUSHF; CALL DWORD PTR 4 * N; /;/4 * N

    2.5 divide by zero0.

    DIVIDIV.

    2.6 single step1.

    TF1, .( Tracedebug)

    2.7 breakpoint3.

    . ( Go Debug). ,Byte0CCH 8086 INT 3. 3

    2.8 overflow4.

    INTO OF(Overflow flag)1. .

    8086.

    8086-----------------------------------------------------------

    -----------------------------------------------------------00H 01H 02H 03H 04H (overflow)05H BIOS 08H , 09H 0BH COM20CH COM1

    0DH XT / AT LPT20EH

  • 5/24/2018 Assembly [ ]

    86/130

    86

    0FH LPT1 10H BIOS11H 12H BIOS13H BIOS

    14H BIOS15H BIOS16H BIOS17H BIOS18H ROM-BASIC19H 1AH BIOS1BH CNTRL-BREAK 1CH 08H ()1DH /1EH /

    1FH /20H DOS21H DOS22H /23H CNTR-BREAK DOS24H DOS25H DOS26H DOS27H DOS

    28H DOS (idle)29H DOS 2AH MS- 2EH (Shell) DOS2FH DOS

    (spooler DOS , print)33H 40H , 41H 42H EGA BIOS43H EGA

    44H EGA4AH 70H 5CH NetBIOS67H EMS70H AT75H

    3 .

    3.1

  • 5/24/2018 Assembly [ ]

    87/130

    87

    . BIOS .

    . INT nn .

    , . . TSR(Terminate Stay Resident) . (calculator), ...

    (9) (8). 18. 2 BIOS__/46C.

    TSR:

    - .

    - .

    3.2

    :

    1. , () 1 dword (4 bytes). , .

    Call dword

    35H DOS /, () AL , ES:BX. /.

    AL

  • 5/24/2018 Assembly [ ]

    88/130

    88

    . .

    2. , .

    . , (. ). , .

    3. 25HDOS. AL, DS:DX/.

    AL

  • 5/24/2018 Assembly [ ]

    89/130

    89

    ISR , DOS, DOS (Re-entrant).

    DOS, DOS.

    .

    5. .

    . . . 4000 bytes .

    VGA/ 0B800:0000H, . byte . , ... 24 79 . :

    = (* 80 + ) * 2

    0 (0) (0) .

    MNHMH

    5

    (; Print screen) Print Screen; MAIN__INTER

  • 5/24/2018 Assembly [ ]

    90/130

    90

    ; . BIOS (ROM) ; (segment) 0F000h

    ; :

    ; ) (MAIN PROCEDURE)

    ; ) 5H;; ; 5; (attributes); (VIDEO MEMORY) ; 0B8000 H (); 18:

    TITLE INTPRINTSCR ; PAGE 65,80 ;

    CODE__SEG SEGMENT PUBLICassume cs:CODE__SEG, SS:SOROS,ds:data__segMAIN PROC FAR; 5 BIOS

    XOR AX,AX ; AXMOV ES,AX ; ES

    MOV AX,WORD PTR ES:[22] ; AX; (SEGMENT) ; 5 (5 * 4 + 2 = 22)

    CMP AX,0F000H ; ; ; RAM ( ; /

  • 5/24/2018 Assembly [ ]

    91/130

    91

    MOV DX,OFFSET CODE__SEG:MAIN__INTER;DX; MOV AL,5 ; AL No MOV AH,25H ; 25HINT 21H ; DOS

    ; 3 DOS ; ; 5h. 31H DOS

    MOV DX,100H ; ; (1 16 BYTES)MOV AH,31H ; DOS INT 21H ;

    EXV: PUSH DS ; DOSXOR AX,AX ; INT 20HPUSH AX ; PSP (

    RETF ; )MAIN ENDP

    ; 5HMAIN__INTER PROC FARpush AX; PUSH BX; PUSH CXPUSH DXPUSH DS

    PUSH ESCLI; MOV AX,DATA__SEGMOV DS,AX; DSMOV AX,SS

    ; MOV OLD__SS,AXMOV OLD__SP,SP

    MOV AX,new__stack

    ; ;

    MOV SS,AX; DS

    mov SP,100hPUSHF; CALL DWORD PTR OLF__VECTOR__5;

    ; 5STI ;

    CALL REVERSE_SCR; ;

  • 5/24/2018 Assembly [ ]

    92/130

    92

    ;

    MOV SP,OLD__SPMOV AX,OLD__SSMOV SS,AX

    POP ES; POP DS; POP DX; POP CXPOP BXPOP AXIRET ; ; ; ;

    ; ()

    MAIN__INTER ENDP

    REVERSE__SCR PROC NEARSTI;

    ; ; ; ; MOV BX,0B000H

    ; ; VGA ;

    MOV BX,OB8OOHMOV ES,BXMOV BX,0; BX MOV CX,2000 ; ;80 25 = 2000

    AGAIN:INC BX; 1

    ; MOV AL,BYTE PTR ES:[BX] ; CMP AL,127 ; JA A ; AOR AL,10000000B ; JMP B

    A: AND AL,01111111B ; B: MOV BYTE PTR ES:[BX],AL ;

    ; INC BX; ()LOOP AGAIN ;

    ; AGAIN 2000 RET ;

  • 5/24/2018 Assembly [ ]

    93/130

    93

    REVERSE__SCR ENDP

    CODE__SEG ENDS

    DATA__SEG SEGMENTOLD__VECTOR__5 DD 0OLD__SS DW 0OLD__SP DW 0; NEW__STACK DB 100H DUP (0)

    DATA__SEG ENDS

    NEW__STACK segmentDb 100 dup (0)

    New__stack ends

    SOROS SEGMENT PARA STACKDB 256 DUP (0)

    SOROS ENDSEND MAIN

    9

    ASSEMBLER

    1MACRO

    macro:

    , . Assembler , . macro.

    macro

    . macro (), MACRO.ENDMmacro. macro. macro macro . : macro pusha (pushall) ,

    popa (popall) clrscr, :

    PUSHALL MACROPUSH AX

    PUSH BXPUSH CXPUSH DX

  • 5/24/2018 Assembly [ ]

    94/130

    94

    PUSH BPPUSH SIPUSH DIENDM

    POPALL MACROPOP DIPOP SIPOP BPPOP DXPOP CXPOP BXPOP AXENDM

    CLRSCR MACRO

    PUSHALLmov cx,0; mov dx,2479h; mov bh,7; normalmov ah,06; BIOSmov al,00; int 10h; BIOSPOPALLENDM

    macro . macroMACRO. MACRO. macro . macro, , . macro .

    MACRO:

    GOTOXY MACRO X,Ymov ah,0fh

    int 10h; bx mov dl,Y; mov dh,X; mov ah,02; BIOSint 10h ; BIOS

    ENDM

    MACRO 9 DOS

    PRINT_DOS__STRING MACRO STRINGlea dx,string; /dx

    mov ah,09; DOS int 21h ; DOS

  • 5/24/2018 Assembly [ ]

    95/130

    95

    ENDM

    macro , : LOCAL

    INPUT_DIGIT MACRO; macro LOCAL UP,TELOS ,MHDEN ; UP : ;

    MOV AH,08; ENTER 0INT 21HCMP AL,13JE MHDENCMP AL,0JB UP; CMP AL,9JA UP;

    MOV DL,AL ; MOV AH,02 ; INT 21HJMP TELOS

    MHDEN:XOR AL,AL; al

    TELOS:ENDM

    ,

    macro . , call ,macro, macro. call , macro .

    2 INCLUDE

    assembly . macro equ . INCLUDEmacro equ assembly . INCLUDEassembly . assembler include , , . macro LIB.MAC

    :

  • 5/24/2018 Assembly [ ]

    96/130

    96

    19:

    INCLUDE LIB.MAC; macro

    ;

    SOROS SEGMENT PARA STACKDB 256 DUP (0)

    SOROS ENDS

    code_seg segmentassume cs:code_seg,DS:DATA_SEGMAIN proc farpush ds; DOS, xor ax,ax; (SEGMENT) PSP

    push ax; PSP

    mov ax,data_segmov ds,axCLRSCR; macro GOTOXY 5,10; macro 5,10PRINT_DOS_STRING MHNHMA; macro

    again:INPUT_DIGITcmp al,0

    jne again

    ret; DOS INT 20h PSPMAIN endpcode_seg ENDS

    DATA_SEG SEGMENT PUBLICMHNHMA DB "EISAGOGI AKERAIOY ARITMOY $"

    DATA_SEG ENDSEND MAIN

    , NUM

    INCLUDE, include include , .

    includemacro, equ, , segment ...assemblyinclude.

    3.

    3.1

  • 5/24/2018 Assembly [ ]

    97/130

    97

    assembler linker .

    . . (Linker). , . .

    . (modulus),

    . EXTRN PUBLIC. . num1 num2. MODULE1.ASMMODULE2.ASM.

    20:

    module1.asmCode_seg segment public

    assume cs:code_seg,ds:data_seg

    extrn emfan_decimal:near,new_line :near,num2 :word ; /;

    public nea_grammh ; ;

    kyrioproc proc farxor ax,ax; ax

    push ds ; /PSPpush ax ; , DOS.mov dx,data_segmov ds,dx ; DSmov dx,num1 ; dx call emfan_decimal; emfan__decimalcall new_line; mov dx,num2 ; call emfan_decimal; emfan_decimal

    ret ; DOS

    kyrioproc endp

  • 5/24/2018 Assembly [ ]

    98/130

    98

    code_seg ends

    ; data_seg segment public

    num1 dw 12345nea_grammh db 10,13,'$'data_seg ends

    soros segment para stackdb 256 dup (0)

    soros ends

    end kyrioproc

    module2.asm

    code_seg segment public

    assume cs:code_seg,ds:data_seg

    public emfan_decimal,new_line,num2 ; /; object; modules

    extrn nea_grammh:byte; emfan_decimal proc near

    mov ax,dx ; axmov si,10 ; sixor cx,cx ;

    non_zero:xor dx,dx ; div si ; div dx:ax

    push dx ; dx inc cx ; 1 or ax,ax ; 0

    jne non_zero ; 10 next_digit: ;

    pop dx ; add dl,'0' ; mov ah,2 ; ASCII int 21hloop next_digit ; ret

    emfan_decimal endp

    new_line proc nearmov dx, offset ds:nea_grammh; dx /mov ah,09; DOS

    int 21h;ret

  • 5/24/2018 Assembly [ ]

    99/130

    99

    new_line endpcode_seg ends

    ; data_seg segment public

    num2 dw 6789data_seg ends

    end ;; data__seg segment public

    num2 dw 6789data__seg ends

    end ;

    .

    C>tasm module1

    C>tasm module2

    A>

    tlink module1 module2

    .

    3.2 PUBLIC (Segments).

    code__seg data__seg. SEGMENT

    code__seg data__seg PUBLIC. . code__seg, ,

    PUBLIC. code__seg module1module2 , . data__seg .

    (STACK) , PUBLIC.

    3.3 PUBLICEXTRN

  • 5/24/2018 Assembly [ ]

    100/130

    100

    / . linker.

    PUBLIC, /

    PUBLIC.

    Public emfan__decimal,new__line,num2

    module2.asm, emfan__decimal,new__line num2 module1. PUBLIC PUBLIC.

    EXTRN,

    PUBLIC. EXTRN (label) : . ,:

    FARNEAR

    BYTEbyteWORDbyte

    DWORDbyte

    Extrn emfan_decimal;near,new_line:near,num2:wordmodule1 :

    1. emfan_decimal,new_line ( module2.asm).

    2. num2 2 byte, 0 64k.

    emfan_decimal,new_line,num2publicmodule2.asm.

  • 5/24/2018 Assembly [ ]

    101/130

    101

    10

    ROM-BIOS & DOS

    1 ROM-BIOS

    1.1 .

    ROM-BIOS Read Only Memory BasicInput Output System ( ). . (, ..)

    .

    BIOS . 7 . BIOS . , (IN OUT). . BIOS

    .

    BIOS , BIOS RAM / 0400H 0500h. BIOS .

    BIOS , . BIOS . BIOS // .. BIOS . BIOSDOS. INT n , n BIOS, . BIOS. BIOS .

    BIOS /0F0000h 0FFFFFh.

  • 5/24/2018 Assembly [ ]

    102/130

    102

    2.2 .

    Int 10H

    AH=0hAL=

    Int 10H

    =1hCH=(0-4)CL=(0-4)

    Int 10H

    AH=2hBH=DH=DL=

    Int 10H

    AH=3hBH=

    CH=(0-4)CL=(0-4)DH=DL=

    Int 10H

    AH=6hBH=

    AL=,

    0 CH=CL=DH=

    DL=

    Int 10H

    AH=7hBH=

    AL=,0

    CH=CL=DH=

    DL=

    Int 10H

    AH=8h

    BH=

    AH=

    AL=Ascii

    Int 10H

    AH=9hBH=AL=Ascii BL= CX=

    Int 10H

    AH=0AhBH= AL=Ascii BL=CX=

    Int 10H AH=0Ch

  • 5/24/2018 Assembly [ ]

    103/130

    103

    BH=AL=CX=DX=

    Int 10H

    AH=0DhBH=DX=CX=

    AL=

    Int 10H

    AH=0EhBH= AL=Ascii BL=

    Int 10H

    AH=0Fh AH=AL=BH=

    Int 10H

    AH=013hAL=00 BL

    01 BL

    02

    03

    BH=BL=CX=bytesDH=DL=ES=/BP=/

    2.3 .

    Int 13H

    AH=00hDL= 00h-7Fh 80H-0FF

    CF=0 AH=0AH=

    Int 13H

    AH=01hDL=00h-7Fh

    80H-0FF

    AH=00 01 ..

  • 5/24/2018 Assembly [ ]

    104/130

    104

    Int 13H

    AH=02hAL=(0-9)CH=*CL=DH=

    DL=ES:BX=/

    CF=0AH=0 AL= CF=1 AH=

    Int 13H

    AH=03hAL=(0-9)CH=*

    CL=DH=DL=ES:BX=/

    CF=0AH=0 AL= CF=1

    AH=

    10 . 8 CH. 78CL. 6 CL .

    2.4

    Int 16H

    AH=0h AH=AL=Ascii

    Int 16H

    AH=01h ZF=0 AH=

    AL=Ascii ZF=1

    Int 16H

    AH=02h AL=Bit 0 SHIFT Bit 1 SHIFT Bit 2 CTRLBit 3 ALT

    Bit 4 SCROLLLOCK

  • 5/24/2018 Assembly [ ]

    105/130

    105

    Bit 5NUM LOCKBit 6 CAP LOCKBit 7INS

    Int 16H

    AH=05hCH=CL=Ascii

    CF=0 AL=0 CF=1 AL=1

    2.6

    Int 17H

    AH=00hAL=Ascii DX=00H LPT1

    01H LPT202H LPT3

    AH=

    2.8 .

    Int 11H

    AX=Bit 0 1 Bit 1 1 Bits 2-3 RAM

    00 16kb01 32kb10 48kb11 64kb4

    Bits 4-5 01 40X25 02 80X25 03 8025

    Bits 6-7

    00 01 10 11

    Bit 8 Bit2 9-11 Bit 12 1 Bit 13 1 modemBits 14-15

    2. DOS

  • 5/24/2018 Assembly [ ]

    106/130

    106

    2.1

    DOS (COMMAND.COM) (Utilities) .

    DOS INT 21H. DOS , IO.SYS MSDOS.SYS.DOS , .SYS , CONFIG.SYS DEVICE=. :

    - 1024 bytes /256 .

    - 256 bytes BIOS- 512 bytes

    DOS- DOS

    DOS .- CONFIG.SYS- 640KB .

    COMMAND.COM.,COMMAND.COM

    - 384kb 640kb 960kb /.

    - 64kb 960kb 1Mb ROM-BIOS.

    DOS BIOS. DOS. . :

    ) (,

    , , ).) ().) .)

    FCB .) DOS) .) ,

    ...

  • 5/24/2018 Assembly [ ]

    107/130

    107

    DOS. DOS .

    2.2 DOS

    INT 20H

    CS=/(PSP)

    .COM

    INT 21H

    =00CS=/(PSP)

    .COM

    INT 21H

    AH=01H AL=Ascii

    INT 21H

    AH=02HDL=Ascii

    INT 21H

    AH=03H AL=Ascii

    INT 21H

    AH=04HDL=Ascii

    INT 21H

    AH=05HDL=Ascii

    INT 21H

    AH=06HDL= AsciiDL=0FFh

    ZF=0AL=Ascii

    INT 21H

    AH=07H AL=Ascii

    CNTR-BREAK

    INT 21H AH=08H AL=Ascii

  • 5/24/2018 Assembly [ ]

    108/130

    108

    CNTR-BREAK

    INT 21H

    AH=09HDS:DX=/

    $

    INT 21H

    AH=OAH 0 byte bytes.1 byte bytes 2 /

    bytes

    ENTER. OCR

    INT 21H

    AH=0BH AL=0FFh AL=00h

    INT 21H

    AH=0CHAL=DOS(01h, 06h, 07h, 08h)

    AL=Ascii

    INT 21H

    AH=0DH

    INT 21H

    AH=25HAL=DS:DX= /

    INT 21H

    AH=2AH CX=(1980-2099)

    DH=(1-12)DL=(1-31)AL=(0-60=)

    INT 21H

    AH=2BHCX=DH=DL=

    AL=00 0FFh

    INT 21H

    AH=2CH CL=(0-59)CH=(0-24)

  • 5/24/2018 Assembly [ ]

    109/130

    109

    DH=(0-59)DL= (0-99)

    INT 21H

    AH=2DHCL=CH=DH=DL=

    AL=00 0FFh

    INT 21H DOS

    AH=30H AL=AH=

    .3.10 0 AL=3 AH=10

    INT 21H

    AH=31HAL=DX=(1= 16 Bytes)

    INT 21H

    AH=35HAL=

    ES:BX=/

    INT 21H

    AH=39HDS:DX=/

    DOS

    CF=0 CF=1 AX=03

    AX=05

    INT 21H

    AH=3AHDS:DX= /DOS

    CF=0 CF=1 AX=03 AX=05 AX=10

    INT 21H

    AH=3BHDS:DX= /DOS

    CF=0 CF=1 AX=03

  • 5/24/2018 Assembly [ ]

    110/130

    110

    INT 21H

    AH=3CHDS:DX= /DOS

    CX=

    00H

    01H

    02H 04H

    08H 20H

    CF=0 CF=1 AX=03 AX=05 AX=04

    INT 21H

    AH=3DHDS:DX= /DOS

    AL= Bits 0-2000 001 010

    CF=0 AX=CF=1 AX=03H AX=05H AX=04H

    AX=01H AX=02H AX=0CH

    INT 21H

    AH=3EHBX=

    CF=0 CF=1 AX=06H

    INT 21H

    AH=3FHBX=CX=bytesDS:DX=/

    CF=0 AX=CF=1 AX=05 AX=06H

    INT21H

    AH=40HBX=CX=bytesDS:DX=/

    CF=0 AX=CF=1 AX=05 AX=06H

  • 5/24/2018 Assembly [ ]

    111/130

    111

    INT 21H

    AH=41HDS:DX= /DOS

    CF=0 CF=1 AX=03 AX=05 AX=02

    INT 21H

    AH=42HBX=AL=00H 01H 10H CX:DX

    CF=0 DX:AX=CF=1 AX=01H AX=06H

    INT 21H

    AH=48H

    BX=

    CF=0

    AX=/CF=1 AX=07H AX=08H BX=

    INT 21H 48H

    AH=49HES=/

    CF=0 CF=1 AX=07H AX=08H

    INT 21H

    AH=4CHAL=

  • 5/24/2018 Assembly [ ]

    112/130

    112

    8086

    8086, .

    AAA Adjust result of Ascii Addition

    AAA

    AAA ASCII AL AX unpacked BCD .:

    1. LS nibble al 0 9 32. LS nibble al 0Af 0Fh AF (Auxiliary Flag) = 1,

    6 AL, 1 AH, 1 AF3. MS nibble AL

    .AX=0535h, BL=39 :

    ADD AL,BLAAA

    AX=0604h

    AAD Ascii Adjust for Division

    AAD

    AAD AH AL unpacked BCD , AL. :

    1. AH 0AH2. AH AL3. AH

    AAM Ascii Adjust of Multiplication

    AAM

    AAM AL, unpacked BCD . :

    AL 0Ah AL AH

    AAS Ascii Adjust of Subtraction

    AAS

  • 5/24/2018 Assembly [ ]

    113/130

    113

    AAS AL Ascii . :

    1. LS nibble al 0 9 AF=1, 32. LS nibble al A F AF (Auxiliary Flag)=1, 6

    AL, 1 AH, 1 AF3. MS nibble AL4. CF = AF

    ADC ADd with Carry

    ADC ,

    1 2 Carry Flag

    ADD ADDition

    ADD ,

    1, 2

    AND AND logical

    AND ,

    2 1

    CALL CALL procedure

    CALL

    5

    CBW Convert Byte to Word

    CBW

    AL word :AL >= 80H AH=0FFHAL < 80H AH=00

    CLC Clear Carry Flag

    CLC

    Carry Flag

    CLD Clear Direction Flag

  • 5/24/2018 Assembly [ ]

    114/130

    114

    CLD

    Direction Flag

    CLI Clear Interrupt Flag

    CLI

    Interrupt Flag

    CMC CoMplement Carry flag

    CMC

    Carry Flag 0 1 1 0

    CMP CoMPare

    CMP ,

    1 2

    CMPS

    CMPSB CMPSW

    .

    3

    CWD Convert Word to Dword

    CWD

    AX DX:AX.byte AX 0 , DX = 0.byte AX 1 , DX=0FFh.

    DAA Decimal Adjust accumulator after Addition

    DAA

    . DAA AL , BCD . :

    1. AF = 1 LS nibble AL 0Ah 0Fh 6 AL ON AF

    2. CF = 1 MS nibble AL 0Ah 0Fh 60h AL ON CF

  • 5/24/2018 Assembly [ ]

    115/130

    115

    .AL = 68h BL = 28h, ADD AL,BLDAAAL = 96H 90H

    DAS Decimal Adjust accumulator after Substraction

    DAA

    . DAS AL, BCD . :

    1. AF = 1 LS nibble AL 0Ah 0Fh 6 AL ON AF

    2. CF = 1 MS nibble AL 0Ah 0Fh 60h AL ON CF

    .AL = 67h BL = 28h , SUB AL,BLDASAL = 39H 3FH

    DEC DECrement

    DEC

    1

    DIV DIVine

    DIV

    byte, AX , ALAH. word, DX:AX AL AH.

    ESC ESCape

    ESC

    data bus /. , .

    HLT HaLT

  • 5/24/2018 Assembly [ ]

    116/130

    116

    HLT

    IDIV Interger DIVision

    IDIV

    DIV .

    IMUL Interger MULtiply

    IMUL

    . MUL

    IN INput

    IN ,

    INC INCrement

    INC

    1

    INT INTerrupt

    INT

    INTO INTerrupt on Overflow

    INTO

    4 Overflow Flag 1.

    IRET Interrupt RETurn

    IRET

    () .

    JA/JNBE Jump if Above/Jump if Not Below or Equal

    JAE/JNB Jump if Above or Equal/Jump if Not Below

    JB/JNAE Jump if Below/Jump if not Above Equal

    JBE/JNA Jump if Below or Equal/Jump if Not Above

  • 5/24/2018 Assembly [ ]

    117/130

    117

    JC Jump if Carry flag set

    JCXZ Jump if CX register is Zero

    JE/JZ Jump if Equal/Jump if Zero

    JG/JNLE Jump if Greater/Jump if Not Less or Equal

    JGE/JNL Jump if Greater or Equal/Jump if Not Less

    JL/JNGE Jump if Less/Jump if Not Greater or EqualJLE/JNG Jump if Less/Jump if not Greater

    JNC Jump if not Carry set

    JNE/JNZ Jump if Not Equal/Jump if Not Zero

    JNO Jump if Not Overflow

    JPO/JNP Jump if Not Parity/Jump if Parity Odd

    JNS/ Jump if Not Sign

    JO Jump if Overflow

    JP/JPE Jump if Parity Even

    JS Jump if Sign

    BYTE (-128 127) . .

    JMP JuMP

    JMP

    .

    LAHF Load int AH Flags register

    LAHF

    AH byte . bits :

    LDS Load register and DS from memory

    LDS ,

    , bytes 16bits, bytes DS. (far pointer).

    LEA Load Effective Address

    LEA ,

    /16bits, bytes

  • 5/24/2018 Assembly [ ]

    118/130

    118

    LES Load register and ES from memory

    LES ,

    , bytes 16bits

    , bytes ES. (far pointer).

    LOCK LOCK the bus

    LOCK

    LOCK

    LODS LoaD String

    LODS/LODSB/LODSW

    / DS:SI . 3.

    LOOP LOOP if cx not zero

    LOOP

    cx 1 / cx 0.

    /byte.

    LOOPZ/LOOPE LOOP if cx not zero and Zf = 1 (WHILE Equal)

    LOOPZ/LOOPE

    cx 1 / cx 0 0 (ZF = 1). /byte.

    LOOPNZ/LOOPNE LOOP if cx not zero and Zf = 0 (While not Equal)

    LOOPNZ/LOOPNE

    cx 1 / cx 0 0 (ZF = 0). /byte.

    MOV MOVe

    MOV ,

    . .

  • 5/24/2018 Assembly [ ]

    119/130

    119

    MUL MULtiply accumulator

    MUL

    . byte, AL AX. word, AX DX:AX.

    NEG NEGate

    NEG

    . /. , .

    NOP No Operation

    NOP

    /. .

    NOT NOT

    NOT

    bit . /.

    OR OR logical

    OR ,

    2 1.

    OUT OUTput

    OUT ,

    POP POP from top of stack

    POP

    , SP . word.

    POPF POP Flags register from top of stack

  • 5/24/2018 Assembly [ ]

    120/130

    120

    POPF

    (Status Register).

    PUSH PUSH onto top of s tack

    PUSH

    , SP. word.

    PUSHF PUSH Flags register onto top of stack

    PUSHF

    , SP . RCL Rotate through Carry left

    RCL Rotate through Carry left

    RCL ,

    bits . Carry flag 8 bit.

    RCR Rotate through Carry right

    RCR ,

    bits .

    REP REPeat

    REP/REPE/REPNE/REPZ/REPNZ

    . .

    4.

    RET RETurn

    RET ( )

    , RETN (RETurnNear) RETH (RETurn Far). 5. ret , , SP . RET Pascal PUSH (CALL) .

  • 5/24/2018 Assembly [ ]

    121/130

    121

    ROL Rotate Left

    ROL ,

    bits .

    Carry Flag, bit .

    ROR Rotate Right

    ROR ,

    bits . Carry Flag,

    bit .

    SAHF Store register AH into Flags

    SAHF

    LAHF . AH byte SF.

    SAL/SHL Shift Arithetic Right /Shift left

    SAL/SHL ,

    bits .

    SAR Shift Arithetic Right

    SAR ,

    bits , bit .

    SBB SuBtract with Borrow

    SBB ,

    1 2 Carry Flag.

    SCAS SCAn String

    SCAN/SCANS/SCANW

    / DS:SI . 3.

    SHR Shift Right

    SHR ,

  • 5/24/2018 Assembly [ ]

    122/130

    122

    bits bits 0.

    STC SeT Carry flag

    STC

    CF = 1.

    STD SeT Direction flag

    STD

    DF = 1.

    STI SeT Interrupt flag

    STI

    IF = 1.

    STOS STOre String

    STOS/STOSB/STOSW

    / ES:DI. 3

    SUB SUBtract

    SUB ,

    2 1

    TEST TEST

    TEST ,

    AND 2 1, . .

    WAIT WAIT

    WAIT

    / , TEST.

    TEST. .

  • 5/24/2018 Assembly [ ]

    123/130

    123

    XCHG exchange

    XCHG ,

    1 2.

    XLAT exchange via Look up At Table

    XLAT

    / DS:[BX+AL] AL. AL.

    XOR eXclusive OR

    XOR ,

    bitwise XOR 2 1.

  • 5/24/2018 Assembly [ ]

    124/130

    124

    / . ASSEMBLY 8086. debuger .

    BIT (BInary digiT).

    BIT 8 BIT BYTE. 4 bit nibble, byte nibble. , byte. byte.

    (byte) .

    . . (BCD ..)

    .

    .

    . 0 ( LSBIT, Less Significant BIT), 1, 2 .. ( MSBIT, More Significant BIT) 2 n-1 n bit . byte n = 8. byte:

    b7b6b5b4b3b2b1b0

    :

    b7 27 b626 b5 25 b4 24 b3 23b2 22b1 21b020

  • 5/24/2018 Assembly [ ]

    125/130

    125

    :

    1 0 1 0 0 1 1 0:

    1 128 + 0 64 + 1 32 + 0 16 + 0 8 + 1 4 + 12 + 0 =166 .

    2 0. .. 135:

    135 : 2 = 67 1 > 1 (bit)67 : 2 = 33 1 > 133 : 2 = 16 1 > 116 : 2 = 8 0 > 0

    8 : 2 = 4 0 > 04 : 2 = 2 0 > 02 : 2 = 1 0 > 01 : 2 = 0 1 > 1 (bit)

    :

    1 0 0 0 0 1 1 1

    bit 00000000 11111111 0 28

    - 1 ( 0 255). CF...

    (128)10 1 0 0 0 0 0 0 0+(129)10 1 0 0 0 0 0 0 1

    (257)10 (1) 0 0 0 0 0 0 0 1

    (1) CF.

    , . 0 1 . 2. (0 1 1 0 ) . .. BYTE

    0 0 0 0 0 1 0 1 (5)10 5 :

  • 5/24/2018 Assembly [ ]

    126/130

    126

    1 1 1 1 1 0 1 0

    + 1

    1 1 1 1 1 0 1 1 (-5)10

    bit 10000000 01111111 -27-1 27- 1 (-128 +127).

    F...

    ( 64)10 0 1 0 0 0 0 0 0+( 65)10 0 1 0 0 0 0 0 1

    (129)10

    1 0 0 0 0 0 0 1 6 bit 7bit.

    A

    ( -1)10 1 1 1 1 1 1 1 1+( -2)10 1 1 1 1 1 1 1 0

    (-3)10 1 1 1 1 1 1 0 1 6bit 7bit

    .

    ASCII (American Standard Code for Information) . 26 26 10 20 . 7 27 = 128. bit 0. bit 1 128 ( 128 255) ( ...) . extended ASCII.

    32 ASCII . ASCII .

  • 5/24/2018 Assembly [ ]

    127/130

    127

    ASCII

    HEX MSD 0 1 2 3 4 5 6 7

    LSD BITS 0000 0001 0010 0011 0100 0101 0110 0111

    0 0000 NUL DLE SPACE 0 @ P ` p

    1 0001 SOH DC1 ! 1 A Q a q

    2 0010 STX DC2 2 B R b r

    3 0011 ETX DC3 # 3 C S c s

    4 0100 EOT DC4 $ 4 D T d t

    5 0101 ENQ NAK % 5 E U e U

    6 0110 ACK SYN & 6 F V f v

    7 0111 BEL ETB 7 G W g w

    8 1000 BS CAN ( 8 H X h x9 1001 HT EM ) 9 I Y i y

    A 1010 LF SUB * : J Z j z

    B 1011 VT ESC * ; K [ k {

    C 1100 FF FS , < L \ l |

    D 1101 CR GS - = M ] m }

    E 1110 SO RS . > N ^ n ~

    F 1111 SI US / ? O _ o DEL

    ASCII

    NUL - DLE

    SOH DC1

    STX DC2

    ETX DC3

    EOT DC4

    ENQ NAK

    ACK SYN -

    BEL - ETB

    BS - CAN -

    HT EM

    LF SUB -

    VT ESC

    FF FS -

    CR GS

    SO RS

    SI US

    SPACE DEL

  • 5/24/2018 Assembly [ ]

    128/130

    128

    ASSEMBLY 8086. ,

    , . . ASCII.

    D ( Decimal ) . .. 14 13 byte .

    DB 14,13D

    B (Binary). 0 1. .. :

    DB 01010101B, 11111111b

    byte .

    H (Hex). , . :

    0 0000 01 0001 12 0010 23 0011 3

    4 0100 45 0101 56 0110 67 0111 78 1000 89 1001 9A 1010 10B 1011 11C 1100 12D 1101 13

    E 1110 14F 1111 15

  • 5/24/2018 Assembly [ ]

    129/130

    129

    . .. 1 4 A F 0 0 0 1 0 1 0 0 1 0 1 0 1 1 1 1 .

    . 0, . .. CH(High) CX 0CX12 . :

    DB 0ACH,12H

    byte .

    .

  • 5/24/2018 Assembly [ ]

    130/130

    ASSEMBLER 8086 DOS 1989

    Kris jamsa Programming the complete Reference 1991

    8088 8086 IBM PC/TX &

    1987

    Microsoft Microsoft. MS-DOS Operating System ForPersonal Computers Compatible with IBM.

    1990

    Leo J. Scanlon 8086/88 ASSEMBLY LANGUAGEPROGRAMMING

    1984

    James W. Cofron PROGRAMMING THE 8086/88 1987

    Peter Norton ASSEMBLY Language Book 1986

    Peter Norton Inside the IBM PC, Revised and Enlarged 1986

    Rodert Jourdain Programmers Problem Solver for IBM PC XT &AT 1987

    Russel Rector - GeorgeAlexy - -

    THE 8086 BOOK 1980

    Borland International Turbo Assembler Users Guide 1988

    Borland International Turbo Assembler Reference Guide 1988