1581, 77/80 ȸ  α  
   asdzxc301
  

http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&no=1133 []




  

 ʿѰ.
--------------------------------------------------------------------------------
   ӿ ƾ ۼϱؼ ʿ ƴ϶.
ũ ǻ ý ߾˱ Ͽ ʿѰ̴.
޸𸮻 ͳ I/O ⸦ ׼ ϴµ, ޾ Ҽ
Ҽִ ̴.
CPU Ҽִ ġ ۿ Ҽ ϴ.

ǻ Ȯ ũξ:
δ Ҷ Ǵ Դϴ.

: 1 1 ϴ
: ҽ α׷ ۼִ  
׷.
MASM ⺰ ϹǷ Ʈ ȿϰ Ȱ Ҽִ.

MASM ߹ : ƽŰ ڿν ϴ Ͷ
̵ Ҽִ.

Ŀ :
 ȭ ļ ϳ α׷ Ŀ Ȱ̰ Ŀ
Է Ǵ ȭ ߰ ȭ Ʈ ȭ Դϴ.

̺귯 :
⺰ ߵ Ʈȭ ȭ ļ ϳ ̺귯 ȭ ̶
ۼ صӴϴ.  ũÿ ̺귯 ϴ ͸ε ߿ ʿ
Ʈ ȭϸ ڵ ϴ մϴ.

CPU   ϳ
--------------------------------------------------------------------------------
Ϸ : ۾ Ѳ ļ ڿ
:ݾ ϸ鼭
1 ̳ 0 1 Ʈ(bit)
8Ʈ 1Ʈ(byte)

16 Ʈ CPU ? :
CPU Ͱ 16Ʈ ũ,ֺġ ȯ ϴ
16ִ.    (16 Ʈ = 2 Ʈ = 1 )

CPU 2 Ʈ ϳ ϰ ־ (= 2Ʈ)
͸ ϴ ȿ ǵ Ǿ Ƿ ȿ
α׷ ۼ Ҷ ̰   غ ʿ䰡 ִ.
Ư ,͸ ׼ Ҷ 0 1  2 3 ̷ ¦ Ȧ
Ͽ ϸ , ѹ ιƮ ͸ б Ⱑ ϹǷ
ó ȿ ˴ϴ.

8068
--------------------------------------------------------------------------------
        +---------------+
AX:|    AH    AL   |  Accumulator   Register   ---------+ General-purpose
BX:|    BH    BL   |  Base          Register           | Register
CX:|    CH    CL   |  Counter       Register           |
DX:|    DH    DL   |  Data          Register           |
    |       SP      |  Stack         Pointer            |
    |       BP      |  Base          Pointer            |
    |       SI      |  Source        Index              |
    |       DI      |  Destination   Index  ( ε)   -+
    |               |
    |       IP      |  Instruction   Pointer
        |FLAGS H,FLAGS L|  Flag          Register
    |       CS      |  Code  Segment Register   ----------+ Segment Register
    |       DS      |  Data  Segment Register             |
    |       SS      |  Stack Segment Register             |
    |       ES      |  Extra Segment Register      -------+
        +---------------+
*.
CS:ڵ弼׸Ʈ-CPU ؾ Ǿ ִ ׸Ʈ Ÿ

SI:ҽε - , Ư Ʈɿ  ־
                ޸𸮷 ͷ ͸ ϱ

DI:Ƽ̼ ε - , Ư Ʈɿ ־
                 ͷ ޸𸮿 ͸ ϱ
                 Ҷ

׸Ʈ
--------------------------------------------------------------------------------
8086 1M Ʈ ޸𸮸 Ҽ ϴ.
1MƮ 2 20 ̹Ƿ ͷμ 20Ʈ ʿϰ Ǵ°Դϴ.
8086ʹ  16Ʈ ũ ۿ Ƿ 2 ͸ ս 20Ʈ
Ÿ Ѵ.
:
  2000 H        --->׸Ʈ
+ 3456H        --->    IP   BX, SI (͸ а )
  ------
  23456H       ̶ :  κ () Ÿ.
               BX,SI,IP Ϳ Ÿ° ܿ
               ġ ɼ ϴ.

                                 0H    +--------+޸
׸Ʈ         ---->20000H--->+--------+
                                       |        |
               ----> 3456H  --+--------+-->23456H
                                       |        |  

° ϸ ڵ ׸Ʈ Ͽ ȴ.
׸Ʈ ѹ س ,׸Ʈ ̽κ 64KB
Ѵ͸  ǥҼִ.


׸Ʈ 뵵
--------------------------------------------------------------------------------
CPU о:
CS:IP ,׹ .

͸ ϴ°:
DS: OFFSET () Ͱ Ǿִ

Ҷ:
SS:SP κ õ ϴ

׸Ʈ Ȥ Ϻΰ ߺǾ Ƿ ʿ ϴٸ 
׸Ʈ ġ Ҽ ϴ.

ؼ
--------------------------------------------------------------------------------
:    MOV
Ģ    :    ADD: , ADC:, SUB:, SBB:
                     MUL: , IMUL:ȣ޸ ,
                     DIV: , IDIV:ȣ޸
                     CBW: Ʈ ȣȮ
                     CWD: 忡 ȣȮ
                     INC: ϳ
                     DEC: ϳ
.Ʈ:AND: , OR: ,
                     XOR: Ÿ , NOT: ,NEG: ȣ
                     SHL: S shift ,H 0 ΰ , L left
                     ROR: R Rotate,
񱳺б : CMP, JMP б,
                     Above(ũ),Below(۴.) ,Greater( ȣ ؼ ũ.)
                     Less(ȣ ؼ ۴) ,Equal( ), Not()
                     LOOP: ݺ
                     LOOPE: loop if equal        ----+ Ǻ ݺ
                     LOOPNE: loop if not equal        ---+
                     CALL: ƾ б
                     RET:  ƾ ƾ ƿ
Ʈ :         LODS: ޸𸮷 Ϳ ͸ ε
                     STOS: ޸𸮿 ͸ ϴ
                     LODS, STOS ޸ SI Ȥ DI͸
                     Ͽ ̸ SI,DI
                     Ʈ ξ Ѵ.
                     LODSB,STOSW,MOVSB,MOVSW:
                     ܵ 1Ʈ,1 ͸
                     RET(repeat) ɰ ս ϸ cx Ͱ
                     ϴ Ƚŭ ݺϿ ͸ մϴ.
                     ̶ ڵ ŵǾǷ ӵ
                     ͸ Ҽ ϴ.

Ʈ ɿ ۿ ʰ Ϳ ޸
                     񱳸 ϴ SCAS(scan string),
                     ޸ ϴ CMPS(compare string)
                     ̵ REPE(repeat until equal)
                     REPNE(repeat until not equal)ɰ ν ġϴ
                     Ͱ ,Ȥ ġ ʴ Ͱ
                     ,޸𸮻 ͸ ŽҼ ϴ.
                     SCASB
                     REPE       SCASW
                     REPNE      CMPSB
                     REPE       CMPSW
I/O : LSI ٵ ͸ ´ٵ ϱ I/O
                     I/O Ʈ ͸ OUT
                     I/O Ʈ ͸ IN
                     Ʈ ȣ ġ Ȥ  DX ͸ Ͽ
                     ʹ AX Ȥ AL ͸ ̿Ͽ
ͷƮ : INT (interrrupt) ȣ
                     ͷƮ ó ƾ ƾ
                     IRET(interrupt return)
CPU : ַ 8086 cpu ġ μ 8087 ̿ Ÿ
                     Ѵٵ ֺġ READY ȣ ö
                     ϰ ٸٵ ϱ Դϴ.
                     WAIT,ESC,LOCK,HLT :  ܺ ֱ
                     MOT: ƹ൵
: Ȥ ޸ ÿ ͽŰ
                     PUSH ,POP ,
                     ÷ ͸ ϴ PUSHF,POPF
                     ΰ Ȥ ޸ ͸ ȯϴ XCHG
                     Ʈ N XLAT

÷ ͸ ϴ :
                     STC(set carry flag),CLC(clear carry flag),
                     CMC(complement carry flag),
                     STD(set direction flag) ,CLD(clear direction flag),
                     STI(set interrupt-enable flag)
                     CLI(clear interrupt-enable flag)
                     LAHF(load AH from flags ),SAHF(store  AH to flags) :
                      ÷׷ 8Ʈ AH ͸

                     AAA(ASCII adjust for addition ),
                     DAA(decimal adjust for addition),
                     AAS(ASCII adjust for subtract),
                     DAS(decimal adjust for subtract),
                     AAM(ASCII adjust for multiply ),
                     AAD(ASCII adjust for division) :
                      ÷ 8Ʈ AH ͸
                       (̻ ۷带 )
                     LEA(load effective address):ȿ ε
                     LDS(load data segment register),
                     LES(load extra segment register ):
                       ׸Ʈ ͸ ϴ ȿ ε



--------------------------------------------------------------------------------
L1:     MOV     AX,BX   ;comment
+-----+        +----------+        +-------------+        +-------------+        +----------+
| |        |۵ ڵ |        | 1 ۷|        | 2 ۷|        |           |
+-----+        +----------+        +------+------+        +-------+-----+        +----------+
                               ^----------------+
                                    

ɿ ؼ
2۷ 1 ۷ ̷ ϴ.

L1:   ڵ ʰ ,бɵ
       ɶ. 꿡 ˴ϴ.
      ̿ ǻ ̶ ϰ , α׷ ۼϴµ
       ȵǴ Դϴ.

ǻ̶ ΰ.?
--------------------------------------------------------------------------------
ҽ(source) α׷ ڵ ȯҶ ʿ ø
ϴ° Դϴ.

() ϴ
L1:    MOV  AX,BX
        ............
        ............
        JMP   L1        ------> L1 ٶ


̸  ޸𸮻 Ѵ.
        MOV  AX,DATA1----> DATA1 ִ ޸ 1234H AX ϴ
.......                    
.......
DATA1   DW   1234H
        |
        +--------->define word ǻ

PTR  - Ÿ Ÿ.        BYTE      PTR
SEGMENT -  ׸Ʈ ̸          MAIN    SEGMENT PARA PUBLIC 'CODE'
PUBLIC -  ܺ Ÿ.  PUBLIC  PROC1
IF - Ǿ                   IF      IBMPC EQ  TRUE
                                        .........
                                        ENDIF

ǻɿ ʿѰͰ ׷ ִ.


ý ȣ̶ ΰ ?
--------------------------------------------------------------------------------
ý ȣ(system call):
ýۿ  غǾ ִ ⺻ ƾ ϱ
ͷƮ ý ȣ ϴ.
MS-DOS ַ ͷƮ 21H ,߿ Ŀ( subcommand)
Ѵ.

ýȣ ϸ α׷ ȿ Ҽ ִ.
׷. ׵ ϴ.
1)ٸ  OS ̽ Ҷ ״ ݹ ̽Ҽ
2)¿ ƾ 1) ۼϵ   2)ROM ƾ ̿
     α׷߿ ð ɸ.
    ǰ Ÿ ȣȯ ٴ ϴ.
׷ ̺κ α׷ ߿ ־ ū Դϴ.
(Ǽ ޾ ð ũ ϴ Ҽִ.)

̷ ǵǴ Ʈ ߿ BASIC ROM ƾ ϰ
ִ°̳ Ư ͷƮ ó   ϰִ°͵ ־ MS-DOS 󿡼
IBM-PC ̿ ʴ°͵ ִ.

ߴް 뼺 Ȯ ΰ ⿡ Ǵ ִ.


--------------------------------------------------------------------------------
Ʈ ȭ ̶ : µǴ ߰ȭ
ҽ (source listing): ҽ ȭ µ  Ų
                    Ʈ ȭ
ũν ۷(cross reference): ̳ ̸ ⼭ Ǿ
                     ǰ ִ° Ʈϴ ȭ Դϴ.


ũ
--------------------------------------------------------------------------------
Ŀ Ȱ  Ʈ ȭ ļ ϳ α׷ Ѵٵ,
̺귯 ʿ ƾ  α׷ ϴ Ϳ ϴ.

Ʈ (object module) - µǴ Ʈ ȭ
ٸ -   +   ȣ
ȭ (run file ) - Ŀ ۼ డ ȭ
Ʈ ȭ - డ ȭ ߿ ׸Ʈ νõ ̸ Ÿ

ũ ޽ ũ ϴ.
Warning: no STACK segment
There was 1 error detected

ü׸Ʈ ʾƵ OS ڵ ִ ǾǷ
״ Ҽ ϴ. ( ٸ Ҽ ϴ.)
COM ȭ  EXE  ȭ ȯ Ͽ ϴ.
EXE2BIN ̿  Ȯڰ .BIN , Ȯڸ  BIN ϸ˴ϴ
EXE   COM ȭ  COM ȭ ȴ.
׸Ʈ Ǿ ִ EXE ȭ ȯҼ .
COM 𵨰 EXE 𵨰 ׸Ʈ ʱ  ̰ ִ


--------------------------------------------------------------------------------
״ α׷ ݾ Ű鼭 ͳ ޸
μ, α׷ ϰ ִ° DZ TOOL  Դϴ.
˰ ߸ ãƳ κ
˼ ϴ.

EXE 𵨰 COM
--------------------------------------------------------------------------------
EXE ū α׷ COM α׷ ȴ
MS-DOS డ α׷ ޸ ε Ǿ α׷
PSP(Program Segment Prefix) θ κ ǰ, α׷ ü
ϴ.    PSP 100H  Ʈ ־ α׷ ࿡ ʿ   
ֽϴ.

EXE  
DS ES   PSP
CS         α׷ Ÿ Ʈ˴ϴ.
SS         Ư   CS ˴ϴ.
α׷
CS IP Ÿ ۵˴ϴ.
۹ Ư   0
ҷ (ҽ α׷ END   Ѵ.)
()
DS  ES PSP κ ϰ Ƿ α׷ ߿ DS ES
Ҷ ݵ ڱⰡ ٽ ȵȴ.

*.EXE ׸Ʈ ʱġ

        |              |
+-------------+---->DS,ES
        | PSP100Ʈ|
        +-------------+----->CS,(SS)
        | α׷    |----->CS:IP(۹)
+-------------+
        |              |


COM
COM  ȭ ε Ͽ CS,DS,ES,SS 4 ġϿ
PSP ϵ Ʈ˴ϴ.
α׷ ü 100H Ʈ PSP Ŀ η ,
IP   ʱġ 100H Ʈ ˴ϴ.
ҽα׷ ۼҶ  ORG Ͽ ۹ 100H ͼ
ÿ α׷ ۿ ٿ  END ؼ ۹
ʵ˴ϴ.
COM ȭ ׸Ʈ ϸ ȵ˴ϴ.



*.COM ׸Ʈ ʱġ

|             |
        +------------+--->CS,DS,ES,SS
        |PSP100Ʈ|
        +------------+--->CS:IP(=100H)
        | α׷   |     ۹
+------------+
        |             |



--------------------------------------------------------------------------------
A>DEBUG SAMPLE.EXE
_        ------------> Ʈ
ǥϴ R ĿƮ
                 U ĿƮ
ϴ              G ĿƮ
Ŀ(GO) ۹   =      _ G=0,F
Ÿ              Q
  ޼ ѹ Ϸ ϸ .
Program terminated normally
޼ ϴ Ÿ ģ ٽ ó ؾ Ѵ.

α׷
--------------------------------------------------------------------------------
Ÿ ⵿ ȭ ε ϴ :  N Ŀ
ȭ εϴ                     :  L Ŀ
_NSAMPLE.EXE
_L
1ܾ ϴ                    :  T Ŀ
_T=100,20      20   20
T Ŀ ƾ̳ ͷƮ ó ƾ α
׷ ͷƮ ó ƾ̳ ƾ
װ dz ʿ䰡 ϴ.
ƾ dz ٷ               : G Ŀ
_G12F
1                          : A Ŀ
_A8
2242:0008 CMP DL,5F
2242:000B
޸ ٲ ġ(substitute): S Ŀ
྿ ٲ㾴 յ Ʈ ȭǸ ı˴ϴ.
ȭ Ͽ (WRITE): W Ŀ
డ ȭ EXE   COM ȭ  ٲپ ϴ.
̰ Ű ȭ ޸𸮻 ε Ҷ Ư ó Ͽ
· ֱ Դϴ.
ũ ̹ (image) ״ ޸𸮿 ε DZ
ٽ , ̵ȭ ũ ̹ ޸ ̹
̰ Ƿ Ұ Դϴ.

MOV ɰ
° ۸ɿ ؼ ؼ մϴ.
*.Ϳ ġ Ѵ.
*.Ϳ ̿ ͸ Ѵ.
*.Ϳ ޸ ̿ ͸ Ѵ.

ȭ鿡 " AB " ǥ ϴ α׷
MAIN    SEGMENT             ; ׸Ʈ ˸ ǻ
        ASSUME  CS:MAIN     ;
;
        MOV     DL,41H      ; ƽŰڵ 41H ' A  ' ̴.
        MOV     AH,2
        INT     21H
        MOV     DL,'B'
        MOV     BL,2
        MOV     AH,BL
        INT     21H
;                            ; ܼ Ե
        MOV     AH,4CH       ; α׷
        INT     21H
;
MAIN    ENDS
        END

ڱⰡ ۼ ҽα׷ ״ Ʈ ȭ .LST
.ǻ , ۾ 帧
Ҷ ߿ ݴϴ.
⼭ MAIN  ̸̵ .
ASSUME  CS:MAIN
̶ ǻ Ҷ ڵ弼׸Ʈ(CS:) ϶
MAIN ̶ ̸ ׸Ʈ ϶ ϴ Դϴ.
ASSUME 4 ׸Ʈ(CS,DS,SS,ES) ׸Ʈ ̸ Ű  
ϴ.
ݵ CS:(ڵ弼׸Ʈ )
END . END ۹ Ҽִ.


α׷ ⺻
AMIN    SEGMENT
        ASSUME  CS:MAIN
       ..........
        
       ..........
MAIN    ENDS
        END


(comment,  ּ) ¹
;
Դϴ. ; ڴ Դϴ.


8086 (register)
--------------------------------------------------------------------------------
AX,BX,CX,DX   8 Ʈ Ҽ ִ.
SI,DI,BP,SP   16 Ʈμ ۿ Ҽ .

Ư ǥ ʴ ġ 10μ ޵˴ϴ.
16 Ҷ ڿ H(Hexa decimal) ٿ ǥմϴ.
ġ ĺ Ҷ " 0 " ٿ ̸ ȥ Ѵ.

MOV     DL,  41H                ; DL  <----- 41H      41H DL ϶.
   +--- |    | ----------+
   |    +----+           |
༱(DESTINATION), (SOURCE)

ý ȣ    INT  21H <---- ͷƮ (interrupt-)
CPU ϴ Ű

MOV     DL,'1'      ; ڸ οȣ ʿ 쿡
                      ׹ڿ ϴ ƽŰڵ尡 ֵ˴ϴ.
                      1 ƽŰڵ尪 31H ġ˴ϴ.

α׷ ġ
MOV     AH,4CH     ; MS-DOS SYSTEM CALL 4CH ° ƾ
INT     21H        ; α׷ ġ OS ư.


͸ δ (1)
--------------------------------------------------------------------------------
α׷߿ ͸ ΰ , ͸ Ϳ ϴ
̸ :
XXX     DB      'X'       ; DB define byte
YYY     DW      3456H     ; DW define word
|        |        ---------> ʱġ
|        +---------------->
+-----------------------≯
DB ..... Ʈ
DW ..... (2Ʈ)
DD ..... (4Ʈ)
DQ ..... Ʈ (8Ʈ)
DT ..... 10 Ʈ
*.  +----------+--------+-----------+
          | ̸ |   DB   |         |
          +----------+--------+-----------+

׸Ʈ ϴ ASSUME ǻ
MAIN    SEGMENT
        ASSUME  CS:MAIN, DS:MAIN
MAIN :     ׸Ʈ ø
CS:MAIN    ڵ弼׸Ʈ MAIN ̶ ̸ ׸Ʈ Ǿִٴ°
DS:MAIN    Ÿ׸Ʈ MAIN ̶ ̸ ׸Ʈ Ǿ ִٴ°

8086 Ÿ Ÿ׸Ʈ ִ μ ؼǹǷ ,ͼ׸Ʈ
ִ° ؾѴ.

ɵ Ÿ Ѵ MAIN ̶ ̸ ׸Ʈ Ƿ
ASSUME  CS:MAIN, DS:MAIN

׷ ̰ ̴
Ÿ óϴ δ ʴ´
׸Ʈ ʱ⼳(initialize) ϱؼ
MOV     AX,CS
MOV     DS,AX
̿ͰϿ ,AX ͸ Ͽ DS   CS ǰ Ͽ
2 ׸Ʈ ġŰ ȵ˴ϴ.
̰ Դϴ.

MOV     DS,CS
Ҽ ϴ.׸Ʈ (CS,DS,SS,ES) ͵ ۿ
͸ ϴ Ǿ ʱ Դϴ.
׸Ʈ Ϳ ڳ Ҽ ϴ.
Ʈ
8A 16 0020 R
R  .... ̶ (relative address) Ÿ ϴ.


͸ δ (2)
--------------------------------------------------------------------------------
׸Ʈ δ
MAIN    SEGMENT  ---+
        ......      |
MAIN    ENDS     ---+
DATA    SEGMENT  ---+
        .....       |
DATA    ENDS     ---+ ̿ ΰ ׸Ʈ ϰ Ѵ.

ASSUME  CS:MAIN,DS:DATA
͸ ϴ ִ 쿡 ʹ DATA ̸ ׸Ʈ ִ
ϰ ۼ϶ Դϴ.

MOV     AX,DATA
MOV     DS,AX
׸Ʈ ʱ ϴ κԴϴ.

α׷ Ҷ ׸Ʈ θ ߿
׸Ʈ ִ°  Ű澲 ʰ ,α׷ ۼҼϴ.


(1)
--------------------------------------------------------------------------------
Ʈ ʹ Ͽ Ҽִ.
DB Ͽ ͸ ϴ 쿡 ' ABC ' Ͽ ڶ
͸ Ҽ ϴ.
XXX     DB      'ABC'      ------+ ΰ.
XXX     DB      'A','B','C'      |
XXX     DB      41H,42H,43H   ---+
        |
        +---->DW,DD,DQ,DT ٸ ͵ Ҽ ֽϴ.
׷ ġν ڿν ־ ѹ 2
ڿۿ ټ .
AAA     DD      'AB','CD','EF'
AAA     DD      'ABCD', 'EFGH' ȵȴ.

DB 쿡 Ưϰ 3 ̻ ڿ
'A','B','C'     ϴ ſ     'ABC' Ҽִ.

,׷  XXX ̸ ҿ Ǿִ ͸
ִ°
MOV     AL,XXX
ϸ XXX ҿ ڿ ó   'A'=41H AL
Ϳ ۵˴ϴ.(XXX ϴ ̸ ҿ ִ ͸ ALͿ ϶)

ڸ ִ (OFFSET ):
MOV     BX,offset XXX
                  |      ̸ ٿ ü BX Ϳ
                  +-----> Դϴ.
OFFSET :  ̸ ٿ Ͱ ִ .
¹ : ׸Ʈ

MOV     BL,XXX ; BL   XXX 8 Ʈ ̹Ƿ
MOV     BX,XXX ; BX 16Ʈ , XXX 8Ʈ ̹Ƿ

[  ] :
 [ ] [  ] δ.
MOV     DL,[1FH] ; 1FH ִ ͸ DL ͷ ϶

BX ͳ XXX ó Ͱ DL ͷ ۵˴ϴ.
̰ ǥ մϴ.
2 ° ʹ +1 Ǿ Ƿ, ⼭ BX + 1
Ǵ Դϴ. BX+2,BX+3 .......
MOV     DL,[BX+1]
[  ] Ÿ
Ǿ ִ ϰ ϴ.
̿ (indirect addressing )̶ θϴ.
MOV     AX,[1234H]
μ
(direct addressing mode) ̶ θϴ
MAIN    SEGMAIN                ;  *.͸ ׸Ʈ δ
        ASSUME  CS:CODE,DS:DATA

        MOV     AX,DATA
        MOV     DS,AX
        +-----------+
        |       |
        +-----------+
MAIN    ENDS

DATA    SEGMENT
XXX     DB      'ABC'
DATA    ENDS
        END

(2)
--------------------------------------------------------------------------------
Ҽ ִ ʹ 4̴
BX,BP,SI,DI
ֱ׷ ϴ 8086 ڰ س ̴.

[BX+DI]
[BX+SI+1]
̵鳢 մϴ
) [BX+SI+4]
BX=1000H
SI=1234H  
1000H + 1234H + 4H = 2238H ȴ.

չ Ģ:
+----+       +-------+       +--------------+
| BX |       |  SI   |       |  16Ʈ |
| BP |   +   |  DI   |    +  |  8Ʈ   |
||       |   |       |          |
+----+       +-------+       +--------------+
  [BP] ܵ Ҽ ϴ.
ܼ ࿡ Դϴ ϰ ʹٸ   [BP+0] մϴ.
MOV     DL,[BX+SI]
; BX ۹ , SI 3 ,
DL η 4 ° Ʈ Ͱ DL Ϳ  
.   *.SI= 0 θ Ų.

) MOV5.ASM
޸𸮿 ڿ" ABCDEFG" ׹°, ټ° DE
MAIN    SEGMENT
        ASSDUME CS:MAIN,DS:DATA
;
        MOV     AX,DATA
        MOV     DS,AX
        MOV     BX,OFFSET AAA
        MOV     SI,3
        MOV     DL,[BX+SI]
        MOV     AH,2
        INT     21H
        MOV     DL,[BX+SI+1]
        MOV     AH,2
        INT     21H
;
MAIN    ENDS
;
DATA    SEGMENT
AAA     DB      'ABCDEFG'
;
DATA    ENDS
        END
*. ϴ Ϳ    BP  Ͱ ԵǴ 쿡 ,
   ؼ׸Ʈ(SS:) Ͱ ִ μ ؼȴ.
(   BP ͸ ϴ° Դϴ. )



--------------------------------------------------------------------------------
CODE    SEGMENT
        ASSUME  CS:CODE,DS:DATA
;
        MOV     AX,DATA          ; DS
        MOV     DS,AX
;
        MOV     BX,OFFSET AAA    ; AAA BX
        MOV     AX,'AB'          ; ϳ 8Ʈ
        MOV     [BX],AX          ; BX Ű AAA 'AB' ִ´
        MOV     CX,AAA
        MOV     DL,CH            ; DL A ִ´
        MOV     AH,2       ----+
        INT     21H        ----+ A δ.
        MOV     DL,CL            ; DL B ִ´.
        MOV     AH,2       ----+ B δ.
        INT     21H        ----+
        MOV     AH,4CH
        INT     21H              ; ϰ OS εư.
;
CODE    ENDS
;
DATA    SEGMENT
AAA     DW                     ; AAA ؼ Ȯ϶
DATA    ENDS
        END

AAA     DW      ?     '? ' ڴ ƹ̶ ٶ ǹԴϴ.

̹ δ
MOV     [BX+SI+5],1234H
MOV     AAA,'AB'
մϴ.

MOV     [BX],[SI+3]
׷  ̿ ,۷ Ҽ ϴ.

MOV     BX,[0008] -----> 8 ´
͸ ʰ ġ ϴ ̷
(direct addressing)̶ մϴ.
, MASM ̿ ӿ ϴ.
װ ޸ Ŀ   (dynamic) ȰDZ⶧ ,  
Ҽٰ DZ ̶ ˴ϴ.

EQU ǻ
--------------------------------------------------------------------------------
ϴ EQU ǻ
MAIN    SEGMENT
        ASSUME  CS:MAIN
CHAR1   EQU     'A'    ;'A' = 41H ˴ϴ --+
CHAR2   =       42H    ;  = ǰ        |
DISP    EQU     2      ;  EQU ǰ Ұ, --+ Ҷ ġȯ
;
        MOV     DL,CHAR1
        MOV     AH,DISP
        INT     21H
        MOV     DL,CHAR2
        MOV     AH,DISP
        INT     21H
        MOV     AH,4CH
        INT     21H
;
MAIN    ENDS
        END


EQU ǻɿ ǿ DB  ǿ ̴ :
EQU ؼ - Ҷ ڷ ġȯ
DB  ؼ - Ͱ Ǿ ִ μ ġȯ
)
MOV CHAR1,DL  ----->  Ұ
'=' ؼ ǵ ڸ ٽ Ҷ ,ٽ '=' ؼ Ѵ.
ۼ س鼭 ֱ ǵ ڸ
ڷν մϴ.
˴ϴ.
CHAR1   =       41H
        MOV     DL,CHAR1
CHAR1   =       56H
        MOV     DL,CHAR1
:
=       0041
0000    B2      41
=       0056
0002    B2      56


PTR
--------------------------------------------------------------------------------
(type):
Ʈ,(2Ʈ),(4Ʈ)
ũ ٰ ֵȴ.

)
۷忡 ͸ ũ ʿ
) , Դϴ.

MOV     [BX],12H
⿡ BX 10H սô.׷ ⼭
1) 10H Ʈ 12H Ұ,
2) 10H 11 0012H   ϴ ˼ ϴ.

*.Ʈ                        *.嵥
  |        |        |         |           |         |         |       |
      +--------+        +---------+               +---------+         +-------+
10H  | 55     |  12H   |  12     |           10H |   55    | 0012H   |  12   |
      +--------+------> +---------+               +---------+-------> +-------+
11H  | 66     |        |  66     |           11H |   66    |         |  00   |
      +--------+        +---------|               +---------+         +-------+
      |        |        |         |               |         |         |       |
12H Ʈ ͷν 쿡 11H ʰ
12H    ͷν 쿡  11H ϴ.



PTR
--------------------------------------------------------------------------------
Ȯϰ ϱϿ
MOV     BYTE PTR [BX],12H  ; PTR POINTER
MOV     WORD PTR [BX],12H
̿ ۵Ǵ BYTE Ǵ WORD մϴ.
̶ PTR ̶ Ʈ (overwrite) ڿ Բ ϵ Ǿ ϴ.
Ǿ ִ DB ̵ DW ̵  BYTE , WORD ʴ Ҽ
ϴ.

MOV ɰ
---------------------------------
ADDRESING MODE:
*.ġ (immediate mode)
AAA     EQU     1234H
        MOV     AX,AAA  ;޸ Ʈ ͹Ʈ ̳ϰ
CS,DS,ES,SS IP,FL Ϳ ġ Ҽ ϴ.

*. ( )
ϴ
MOV     DS,AX
MOV     CL,BH   ; ũⰡ ġϴ 8Ʈ Ȥ 16Ʈ Ѵ.
׸Ʈ Ͱ Ҽ . IP ,FL ʹ Ҽ ,
CS ͷ Ҽ ϴ.

*. (޸ )
ϴ Ǿ ִ - 2
1) BX,BP,SI,DI 4 Ϳ ڸ  սŲ.
MOV     AX,[BX+DI+4]
2) ͸ μ ϰ ,׺̸ Ͽ ϴ
MOV     AX,AAA ; ڰ ִ ٿ ̸Ͽ ϴ°

Ŀ :
+-  BX  -+   +-  SI  -+   +-   8Ʈ   -+
|   BP   | + |   DI   | + |   16Ʈ    |
+- -+   +- -+   +-           -+

ʴ չ
1) 8Ʈ ڸ ϴ ( 16Ʈ ƴϸ Ҽ )
׷  MOV   AX,[1234H] Ҽ .
޸ Ͽ ϰ -
MOV     BX,1234H
MOV     AX,[BX]    ; ȵ˴ϴ.
2) [BP] Ҽ .
[BP] ϰ [BP + 0 ] ϸ ȴ

Ҷ :
1) ڵ ׸Ʈ ִٰ
2)ʹ ׸Ʈ ִٰ ȴ.
3)BP ϴ ʹ ׸Ʈ ִٰ ȴ.
4)α׷ ó ׸Ʈ ʱ⼳ ʿ
  MOV   AX,DATA
  MOV   DS,AX    ; DATA   Ÿ ׸Ʈ .

  MOV   AX,CS
  MOV   DS,AX    ; Ÿ ׸Ʈ ڵ弼׸Ʈ .

׷  ؼ ׸Ʈ ̿ ׸Ʈκ ͸
ʹٴ ׸Ʈ Ʈ Ƚ(segment overwrite prefix) ,
ɿ ؼ ׸Ʈ ͸ ų,
ϴ.
)
MOV     AX,ES:[BX]
MOV     CS:[DI+2],CX
׸Ʈ Ʈ Ƚ 4 Դϴ.
CS:,DS:,SS:,ES:




MOV ۰
--------------------------------------------------------------------------------
MOV     AX,CS
MOV     DS,AX
· DS   <---- CS ,׸Ʈ Ͱ
ʱ Դϴ.
,׸Ʈ Ϳ ڸ ϴ Ǿ ʽϴ.
IP,FL ʹ MOV ɿ Ҽ Ǿ ϴ.
CS Ϳ ʽϴ.
CS ʹ о⸸ մϴ.
Ģ
Ģ Ҽ ϴ.
κ 8ƮCPU Ҽµ Ģ Ҽ ְ
16 Ʈ CPU ū Ư¡Դϴ.

ADD :
ADD     AX,1234H
AX 뿡 1234H Ͽ AX Ϳ ٽ
    +- 뷹(8/16Ʈ)-++- (8/16Ʈ)-+
ADD |  ޸      (  "     ) ||   ޸      (   "    ) |
    +-                       -++-          (   "    )-+
޷θ յǴ° ϴ.
*. : ޸𸮿 ġ Ҷ BYTE Ȥ WORD ʿ
ADD    [BX],12H  --------> ADD   BYTE PTR [BX],12H
̷ Ͽ Ʈ Ȥ 带 ȵȴ.
*. :
AAA     EQU     32H   AAA ̹Ƿ [ ] ̴.
BBB     DW    5678H BBB ̸ ̹Ƿ ޸𸮸 Ÿ

4040H+0102H ϰ װ 4142H 41H ,42H شϴ ڸ Ѵ.
MAIN    SEGMENT
        ASSUME  CS:MAIN
;
        MOV     BX,4040H
        ADD     BX,0102H
        MOV     DL,BH    ---+ Ʈ
        MOV     AH,2        |
        INT     21H      ---+
        MOV     DL,BL    ---+ Ʈ
        MOV     AH,2        |
        INT     21H      ---+
;
        MOV     AH,4CH   ---+
        INT     21H      ---+
;
MAIN    ENDS
        END

:A>ADD1
        AB
      A>
ƽŰ ڵ 41H ϴ "A" 42H ϴ "B" ǥ
ڸ ڷ ϴ °ΰ ? ---
MS-DOSýȣ⿡ ڸ ϴ غǾ ϴ.

ŰԷ
--------------------------------------------------------------------------------
Ű ѹڸ Էҷ ,MS-DOS ȣ(function) 1   
ϴ.  AH Ϳ 1 ϰ ȣ ϸ, Űκ Է
ٸ ִٰ ,Էµ ƽŰڵ带 AL register
ϴ.

+------------------------------------------+
|  MOV     AH,1                       &nb

  Hit : 19912     Date : 2008/12/13 11:04



    
61   ȵ̵ α׷ ߽ϴ /!!!!![3]     tyback
02/18 7611
60   ȵ̵ ڵ ̵ Դϴ.     oldlove7
12/11 8633
59   ȵ̵SDKƮ ܱ[1]     pshshs
02/17 6251
58   ˾` `2 PC׸ `[10]     koresong
11/01 7349
57   ȣȭ[3]     leewoongki
12/07 6681
56   ȣȭ Ŷ ȣؼϴ ּ[5]     leewoongki
12/07 8483
55   ȣ[1]     oldlove7
08/02 8024
54    Ͻô αδ Դϴ[6]     lsykoh2
01/17 6599
53   ~~~~~~~ 𸣽ôºе -_-;;[7]     hayanho
08/08 10971
       asdzxc301
12/13 19911
51   [8]     gnsehfvlr
05/09 10599
50   1[1]     asdzxc301
12/13 13341
49   2     asdzxc301
12/13 8506
48   3     asdzxc301
12/13 9587
47   4     asdzxc301
12/13 11160
46   5     asdzxc301
12/13 20841
45   6     asdzxc301
12/13 8577
44   7 [2]     asdzxc301
12/13 10596
43   ̾ ۿ ؼ.....[2]    
10/06 8460
42   vmware ϴ ֳ [3]     playground
03/06 7622
[1]..[71][72][73][74][75][76] 77 [78][79][80]

Copyright 1999-2024 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org