MVI


MVI MOV , , . r .

MV1 ,data8; data8>

LXI

LXI (B-,

D-, H-) S , .

LXI D,data16; data16>( D,E )

LDA, STA

LDA , . STA , .

LDA addr16; addr16 A

STA addr16; A addr16

LDA STA . ,

- ( addr ),
- ( addr ).

LDAX.

LDAX , (B,C) (D,E). STAX , (B,C) (D,E).



LDAX ; . - , .

.

IN OUT -. IN () port, - . OUT () , port. IN OUT.

IN addrport;

OUT addrport;

.

LXI

LXI S,data16; data16 S. , .

PUSH ( ) OP ( ) (B,C), (D,E), (H,L) (,), PSW.
, SP , , . .

PUSH ( ) :

) SP 1 ();

) ;

) SP ;

) .

PUSH ; -

( ) . SP 1 (). SP .

POP ; -

2) .

. , I8080 . , , . . ( ) . , , .

ADD, ADC

ADD r; +>

ADC r; ++CY>A

ADC ADD. ADC , CY, . .

ADI, AI

ADI , , . AI CY

ADI data8; + data8 >

ACI data8; + data8 +CY>A

SUB, SBB



SUB . SBB SUB. .

SUB r A r >A

SUB M A M >A

SBB r A r - CY >A

SBB M A M - CY >A

SUI, SBI

SUI , . SBI , CY.

SUI data8; + data8 >

SBI data8; + data8 +CY>A

!

() .

INR, DCR

INR ADD. 1 , . DCR SUB. 1 , .

INR r r + 1 > r

INR M M + 1 > M

DCR r r 1 > r

DCR M M 1 > M

!

CY.

INX, DCX

INX DCX 1 (B-, D- , H- ) SP.

INX rp; rp + 1 > r

DCX rp; rp 1 > r

!

.

DAD, DAA

DAD (H,L) rp (rp B-,D- H- , SP)



DAD rp; (H,L) + rp > (H,L)

!

.

DAA 8- - CY. :

1. , 910, =1, 610.

2. , 9, CY=1, 610

!

.

3)     .

:

- , , ( 2) . . .

ANA

ANA ,

ANA r; A & r> A

ANA M; A & M>

ORA

ORA ,

ORA r; A

r>A

ORA M A
M>

XRA

XRA ,

XRA r; A
r> A

XRA M; A
M>

ANI, ORI, XRI

ANA, ORA, XRA , .



ANI data8; A & data8> A

ORI data8; A
data8> A

XRI data8; A
data8> A

CMP, CPI

CMP , , , . . . .

CMP r; A r

CMP M; A M

CPI data8 A data8

CMP SUB , CMP .

!

.

CMA

CMA .

CMA;
>

!

CMA .

STC, CMC

S; 1 > CY

CMC;
> CY

STC CY. CMC .

RLC, RRC, RAL, RAR

, . , . (RLC, RAL) (RRC, RAR) . .



.

4)     .

. , , .


, . , , , .

.

, .

, . , , .



JMP addr ; addr

.

:

JZ addr; , Z=1

JNZ addr; , Z=0

CY:

J addr; , CY=1

JN addr ; , CY=0

:

J addr; , S=1

J addr; , S=0

:

J addr; , =1

J addr; , =0

PCHL; HL PC, , (H,L).



RST n (n=0..7) () . ( ). 11111(2) ( ) ( ).

. :



- ;

- 00000000 00000(2).

, 8 : 000016, 000816, 001016 , 001816 , 002016 , 002816 , 003016 , 003816 .

CALL addr; , addr. , :

1)                 , ;

2)                 , 2;

3)                 addr, . .

5)     .

RET . , . , , :

1) , ;

2) (.. ).

RET ;[SP] > PC, [SP+1] > PC

;SP + 2 > SP

.





RC

C=1

RNC

C=0

RZ

Z=1

RNZ

Z=0

RM

S=1

RP

S=0

RPE

P=1

RPO

P=0




6)    

. , .

HLT

HLT , .

DI, EI

DI, , EI.

NOP

NOP , . NOP , .

1.2.3.                

, , ..



-        ,

-        , .



-        ,

-        , .

.

.

1)    . . , .



2)    .



3). .



4) . .





5) . . 1 2 . ( ).



6) . , 1 (2).

.

1) . . , 64 256 . 256 . : ( 8 ), ( 8 )



2)     .



3)     .



4)     .



5)     . .



1.2.4.    

.. . .: , 1983.

- (.. -). . , , . ( ) . , . , (-).


- , , -. -. 58080.

.

. . , , ().

ߠ ()

( )

( ) , - (, ) . - . .

, . . . , . , JMP . . . . .



Ƞ Ġ

CIKL: MOV A, B ;B > A



ADD C ;A + C > A



JMP CIKL

CIKL MOV A,B. . JMP CIKL CIKL .

. () , .



ADD - , SUB - , JMP - .

(PCHL HL ). , . () . , .

. ( ) , ( ) . . , , .



Ƞ Ġ

CMA ;

RAL ;



XTHL ; (H,L)

NOP ;

:

- ;

- ;

- ;

- .

.

. 16- 0 - 9 H (He). , A F, .



STORE: STA 8000H ; 800016

MVI C, 0AAH ; 10101010 ( )

ANI 10H ;

COMP: CPI 290H ;

. D.

MOV B,15 ; 00001111

ANI 64 ; 6-

IN 32 ; 00100000

. Q ().

ORI 200Q ;



. .

OUT 1111B ; 15

XRI 10000000B;

ANI 11011111B;

. , .

MVI D, T ; D

. 580 B, C, D, E, H, L, M, A 000 111.

MOV A, E ;

ADD L ; L

SUB M ; ,

; (H, L)

.

MOV A, B ;

MOV 7, 0 ;

, 16- , 16- .

LXI H, 0FF00H; (H,L)

INX SP ;



PUSH PSW ; - -

, . .

JMP DONE ; DONE

CALL SWAP ; SWAP

. . () ( ) . .

GOTO: JMP + 20H ; GOTO + 20

MORE: JNZ - 80 ; MORE-80 ()

. . , .

MVI B, 30 + 40H/2; 62

SUI 34, MOD3 ;

.

. . . ( ).



() , , , ..



, . , EQU SET , . , . .

ORG ()

[:] ORG < >

[ ] .

ORG 16- , , . ORG . ORG , ORG . ORG.

ORG 100H ; 0100

NEW: ORG 200H ; 0200

ORG .

MOV A,M

RAL

JMP LOWER

ORG +20

LOWER: ORA A

END

[:] END

.

EQU (, - )

Ġ

< > EQU < >



EQU , . , .

MASK EQU 0FH ; MASK 15



ANI MASK



MVI MASK

ANI, MVI MASK 00001111. EQU .

SET ()

, EQU. EQU, SET.

NAME SET 15 ; NAME 15



MVI B, NAME

NAME SET 1FH ; NAME 31



ADI NAME ; 31



CPI NAME ; 31

IF ENDIF

IF () ENDIF ( ) :

Ġ Ġ

[:] IF < >









[:] ENDIF

IF. , IF ENDIF . , , IF ENDIF .

DB ( )

, . DB

[:] DB < >

DB , 8- , , . DB () , .

ARRAY: DB 3,7,15,31 ;

DB HELLO ;

COMP: DB -63 ; -63

DW ( 2 )

DB, , 16- . , 1 .

ADDR: DW 0FF00H ; (ADDR)=00H (ADDR+1)=FFH

DS ( )

[:] DS < >

() , .


. , DS DS.

ARRAY: DS 32 ; 32

:

SPS ( ), , ;

PAGE (), ;

TITLE (), , .

. (), . , , .

.

SPDE MACRO

XCHG ; (HL) ßà (DE)

SPHL ; (HL) ßà (SP)

XCHG ; (HL) ßà (DE)

SPDE ENDM

SPDE () (.. ).

.

Ҡ MACRO VAR

MVI A,VAR ; VAR>A

MOV M,A

XRA A

INX H

MOV M,A

Ҡ ENDM

- . , - .

1.2.5.                 I8086



.



.

() , . , , . (16 ), (AX, SP ..). :

- (AX, BX, CX, DX, BP, SI, DI, SP);

- (CS, DS, SS, ES);

- (IP);

- (Flags).



A - accumulator, ;

B - base, ;

C - counter, ;

D - data, ;

BP - base pointer, ;

SI - source index, ;

DI - destination index, ;

SP - stack pointer, ;

CS - code segment, ;

DS - data segment, ;

SS -stack segment, ;

ES - extra segment, ;

IP - instruction pointer, .

. ( "" ). , , AX AX DX ( ), CX . BX BP , SI DI - . SP , .

AX, BX, CX DX , ; , AH, AL, BH .. (H - high, ; L - low, ):



, , "". , AX, AH AL .. , .

CS, DS, SS ES , . .

IP ( ) , ( CS). IP .

( , ) :

-        EU ( )

-        BIU ( , ).

, . I8080.

EU. . BIU. , EU BIU BIU.

BIU. EU. EU , BIU . EU .


BIU , 2 .

.

1 , 20- .

-       

-       

. . :

CS:

IP

, ()



16-

16-

20-

20- .



16- CS 4 .

. 20- .

DS:BX, DS:SI, ES:DI, SS:SP.

. , CS. , DS; , , SS. , , . , ( ) - . ,

MOV AX,X

X , DS:X. , BX,

JMP BX

CS:[BX].



, - , . , - . , , (, AH , X), - SS, .. :

MOV AH,SS:X

.

I8086 (181086)



(20-), .16 . - , - - , .. . . , , . . .

, 16- . (OP/#IP), : ( ) ( ).

#DEN (Data Enable - ) 砠 . .

.

-        /#IO, ( ), - ( );

-        (#W) ( (#R)) -;

-        INT;

-        - INTA

-        NMI. ;



-        `#BE. : ( ) ( );

-        , ;

-        , - MN /#MX. (MN), . (#MX), ;

-        - CLR. - , CS. 0FFFFh. , ;

-        RDY. ;

-        HLD. C , I8080$

-        ( EST ). WAIT , TEST.

.

( ). - , 1 (" "), , 0 (" ") . 9 , (ZF, CF ..). FLAGS.

; (, ). ; (, ).





.

CF (carry flag) - . 1, , "" , . CF , .

OF (overflow flag) - . 1, , .

ZF (zero flag) - . 1, 0.

SF (sign flag) - . 1, .

PF (parity flag) - . 1, . -.

AF (auxiliary carry flag) - . - .

.

DF (direction flag) - . : ( DF=0) 1 (2) (. . ).



IF (interrupt flag) - . IF=0 INT, IF=1 .

TF (trap flag) - . TF=1 ( 1), ( ).

.



.

2- : , #, `0. `0 / / .



- - .


- - .

. :

` -

0 -

. ()

` -

`0 - . ()

` -

0 -

. .

8086.



, 6 , (. . ).

. Mode

Mode





00

( )



01

8-

10

16-

11

reg / mem

.Reg.

Reg

W=0 ()

W=1()

Reg

W=0 ( )

W=1 ()

000

AL

AX

100

AH

SP

001

CL

CX

101

CH

BP

010

DL

DX

110

DH

SI

011

BL

BX

111

BH

DI

Reg / mem.

Reg / mem

( )

mode = 00

mode = 01

mode = 10

000

[BX+SI]

[BX+SI+data8]

[BX+SI+data16]

001

[BX+DI]

[BX+DI+data8]

[BX+DI+data16]

010

[BP+SI]

[BP+SI+ data8]

[BP+SI+ data16]

011

[BP+DI]

[BP+DI+ data8]

[BP+DI+ data16]

100

[SI]

[SI+ data8]

[SI+ data16]

101

[DI]

[DI+ data8]

[DI+ data16]

110



[BP+data8 ]

[BP+data16]

111

[BX]

[BX+data8 ]

[BX+data16]



8086 ( 0 255), .

:

- ( );

- ;

- ( ).





.



INTR () NMI ().



, , INTR . ( , .. IF=1) INTA1 INTA2, INT n.

NMI , (, , ..). 2, .



, , . ( ).

( 0) DIV IDIV .

( 4) INTO, OF.

( 1) TF=1 .



, , () .



.

1 256 , 0 3FFH. n , : , . IP, CS.

4 , () n 4.


IP CS , .

, FLAGS IP CS . IF ( TF) , .. INT. STI ( IF 1). , NMI ( ) .

, , .

IRET. IRET , . IP, CS FLAGS, , .

8086

8086 :

1)   ;

2)   ;

3)   ;

4)   ;

5)   ;

6)   .

1

:

1)  

2)  

3)  

4)   Data

5)   Data



MOV , ;

- ,

-

:

MOV AX, BX ; BX>AX

MOV [BX] ; mem[X]>AX





. .



1)   PUSH 򠠠 ; >

2)   PUSH sreg ; sreg >

3)   PUSHF ; FLAGS >

1)   POP 𠠠 ; >

2)   POP sreg ; > sreg

3)   POPF ; > FLAGS



1)  

XGHG , reg ; - reg

2)  

LAHF ; FLAGS> AH

SAHF AH > FLAGS

3)  

LEA reg, 򠠠 ; > reg

LDS reg, 򠠠 ; > (DS: reg)

LES reg, 򠠠 ; > (ES: reg)

4)   ( ) AL

XLAT ; mem[X+ AL]> AL

5)   -

1)   (0255)

IN A, port ; port > A,

OUT port, A ; A > port,

A=AL , A=A

2)   (064)

DX

IN A, DX ; [DX] > A

OUT DX, A ; A > [DX]



1) MOV AX, table ; table AX

MOV table, AX ; AX table

MOV ES:[BX], AX ; AX ES:[BX]



MOV DS, AX ; AX DS

MOV BL, AL ; AL BL

MOV CL, -30 ; -30 > CL

MOV dest, 25h ; 25h > dest

2) PUSH SI ; SI

PUSH DS ; DS

PUSH CS ; CS

PUSH counter ;

PUSH table[BX][DI] ;

PUSH AX ;

PUSH ES ;

PUSH DI ;

PUSH SI ;







POP SI ;

POP DI ;

POP CS ;

POP AX ;

PUSH ES ; DS

POP DS ;

3) XGHG AX, BX ; AX - BX

XGHG AL, BH ; AL - BH

XGHG word_loc, DX ; word_loc -DX

XGHG DL, byte_loc ; AL - byte_loc

4) XLAT . BX, AL.

MOV AL,10 ; AL

MOV BX, offset s_tab;

XLAT s_tab ; AL

2

1)  

ADD , 򠠠 ; + >

ADD , data ; + data >

ADC , 򠠠 ; + +CF>

ADC , data ; + data+CF >

2)  

SUB , 򠠠 ; - >

SUB , data ; - data >



SBB , 򠠠 ; -CF>

SBB , data ; data-CF >

3)  

)

MUL 򠠠 ; AL * > AX , AX * > DX:AX

)

IMUL 򠠠

4)  

)

DIV 򠠠

)

IDIV 򠠠 .

AX / > AL ( AH), DX / > AX ( DX)

5)  

CMP , 򠠠 ; -

CMP , data ; - data

6)  

INC 𠠠 ; +1 >

DEC 𠠠 ; - 1 >

NEG 𠠠 ; - >



!) ADD

ADD AX + BX ; ࠠ AX + BX > AX

ADѠ BX + DX ; BX + DX +CF> BX

ADD AX + mem_word ;

ADD AL,10 ;

ADD mem_byte, ofh ;

INC CX ;

INC AL ;

INC mem_byte ;

INC mem_word[BX] ;

2)

SUB AX, BX ;

SBB BX, DX ;

SUB mem_word[BX], AX

SUB AL,10

SUB mem_byte, ofh

3)

MUL BX

MUL mem_byte

IMUL AL

IMUL mem_word

4)

DEC CX

DEC AL

DEC mem_byte

NEG AL

3

)

AND , 򠠠 ; & >



OR , 򠠠 ;
>

XOR , 򠠠 ;
>

TEST , 򠠠 ; &

)

1)

ROR , cnt ; cnt cnt=1,

; cnt cnt=CL

RCR , cnt

ROL , cnt ; cnt cnt=1

; cnt cnt=CL

RCR , cnt

2)

SHR , cnt

SHL , cnt

3)

SAR , cnt

SAL , cnt



. SHL/SAL



4

1)

MOVSB (MOVSW) ; mem[DS:SI] >mem[ES:DI

DF=0, SI DI

DF=1, SI DI

LODSB (LODSW) ; mem[DS:SI] > A ( A=AL- , A=AX )

DF=0, SI

DF=1, SI

STOSB (STOSW) ; A > [ES:DI] ( A=AL- , A=AX )

DF=0, DI

DF=1, DI

2)

SCASB (SCASW) ; A mem[ES:DI]

DF=0, DI

DF=1, DI

CMPSB (CMPSW) ; mem[DS:SI] mem[ES:DI]

DF=0, SI DI

DF=1, SI DI

3)

REP MOVSB(W) ; , =-1 ?0

REPE/REPZ ; ?0 ZF=1

REPNE/REPNZ ; ?0 ZF=0



1)

CDL ; DF 0



LEA SI, source ; source > SI

LEA DI, ES:dest ; dest >DI

MOV CX, 100 ; 100 >

REP MOVSB ;

2)

CLD

MOV CX, 100 ; 100 >

CMPS ;

; 0, -

; (.. )

REPNE CMPS dest, source ;

3)

CLD

LEA DI, ES:b_string

MOV AL, ? ?

MOV CX, 100

REPE SCAS  b_string

5

5.1. .

IP IP CS .

)

JMP addr

JMP

)

CALL addr ; addr CS:IP >

CALL 򠠠 ; CS:IP >

)

RET ; > CS:IP

RET n ; > CS:IP, SP=SP+n

5.2

J offset ; ,

; = NC, Z NZ ..

5.3

LOOP offset ; =-1, offset, ?0



LOOPE/LOOPZ offset ; CX=CX-1, offset, ?0, ZF=1

LOOPNE/LOOPNZ offset ; CX=CX-1, offset, ?0, ZF=0

JCXZ offset ; , =0

5.4

INT n ; n=0255, FLAGS > , 0 >IF, 0 >TF,

; > CS:IP



IRET ; > CS:IP, > FLAGS



1

c=a*a+b , , error

MOV AL, A

MUL AL

JC error ; a*>255, CF=1 error

ADD AL, B

JC error ; a*+b>255, CF=1 error

MOV C, AL

2.

n ( 08)

n! = n(n-1)(n-2)..1

MOV AX, 1

MOV CL, n

MOV CH, 0 ; CX=n

JCXZ F1 ; n=0

MOV SI, 1

F: MUL SI ; (AX*SI >(DX,AX))

INC SI

LOOP F

F1:

3.

LEA BX, table

MOV CX, 100

CALL average

average PROC

SUB AX, AX ; 0

SUB DX, DX

PUSH CX ;

Add_w:

ADD AX, [BX] ;

ADC DX, 0

ADD BX, 2

LOOP add_w ; ?

POP CX ;

DIV CX ;

average RET

ENDP

(INT n)

0 255. (). ( ) ( ).


. () ( 2 IP, 2 CS).

, , , () , INT n (n=0..255) .



n, FLAGS n- , .. n- , ( . - ).

, , . - , , . , , , . IRET IP, CS .

DOS

, (, .). . , : ..

, . . , ..

INT n, n=0255

() n.


INT n n (, n=0), . ( MS DOS) . , .

. , INT n

MOV AH, < >

INT < >

INT n , , . , , . . .

21h

, 4ch 21h/

MOV AL, < >

MOV AH, 4ch

INT 21h

< > - , .

( )

02 21h.

MOV DL, < >

MOV AH, 2

INT 21h

, ( ).

( ) 09 21h.

DS:DX

MOV AH, 9



MOV 21h

DS , , DX . '$, .

6

1) FLAGS

) CF

CLC ; 0 > CF

STS ; 1 > CF

CMC CF

) DF

CLD ; 0 > DF

STD ; 1 > DF

) IF

CLI ; 0 > IF

STI ; 1 > IF

2)

HALT ;

;

3)

WAIT ;

;

4)

NOP

1.2.6.     I8086

.. . .: , 1987. 288 .

, .. ( ), - .

( ) , :

- , . () ;

-         , ;



-         ( ), .

.

.

, .. , . :

{:} {} 蠠 {()} {; }

.

:

{} ࠠ {()} {; }

. , , SEGMENT, ENDS, PROC . , NAME, ASSUME, ORG, PUBLIC . DB, DW, DD .

. .

, :

SEGMENT/ENDS( / )

PROC/ENDP ( / )

MACRO/ENDM ( / )

.

:

-         ;

-         ( );

-         ;

-         ;

-         ;

-         .

( ) , .


(MOV, PROC .).

( ) - . @, -, ?, ? . @, -, ? . , .

( , , , ) , . , abc , , .

:

BYTE - AL, AH, BL, BH, CL, CH, DL, DH

WORD - AX,BX,CX,DX,SP,BP,SI,DI

WORD - CS,DS,SS,ES.

- , . :

1)                (SEG) , , ;

2)                (OFFSET) () ( 0..65535 );

3)                (TYPE) , , , .. 1 (), 2 (), 4 ( ).

.

- , , , . 4 :

- ( );

- ( );

- (), , (.. - NEAR) (.. 4- : - FAR);

- CS. (1- ) , . : - NEAR , , 128, .. SHORT

, :

- , ,