.


:




:

































 

 

 

 


-86




 

:

1 ?

2 ?

3 ?

4 ?

5 16- Intel.

6 , Intel?

7 Intel ?

8 ?

 

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

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

Intel . -86 100 , 3800 ; 20 , , , . , .

, : , , , , .

, , . - . - .asm. . , , . ᒺ . :ᒺ , .obj, , .lst .crf. , , , , . , , .

ϳ ᒺ -, . , .exe . - ᒺ ᒺ , , , 볳 , , . ᒺ , . . - . 9.8.

() :

- , ;

- , ;

- ;

- , ; , - , ; .

 


 

 

 


9.8 -

 

131 , . , . , , . :

- , ;

- 0 9;

- , :?, @, $, _, &, [ ], (), < >, { }, +, , /, *, %,!, , \, =, #,^ .

: , , , .

, ᒺ (, , ). , . . . 255 , 32 , .

. , ( , ). , ᒺ (, ).

- , , . .

, , . SEGMENT, :

 

{ } SEGMENT { } { } { } { }

 

{ } END

 

.

- . . :

- BYTE . -;

- WORD , 2, 0. ;

- DWORD , 4. ;

- PARA , 16, 0. ;

- PAGE , 256. ;

- MEMPAGE , 4 .

PARA.

- ᒺ , . :

- PRIVATE ᒺ ;

- PUBLIC ᒺ . , , , ;

- COMMON . , ;

- AT xxxx , ;

- STACK . , , ᒺ , SS.

. - 璺 , . ᒺ (, ). , , , CODE.

, 16- 32-. :

1 USE 16 16- . 64 .

2 USE 32 32- . 4 .

ASSUME, :

 

ASSUME ;

 

, , , TASM i MASM MODEL, . , . . . 9.1 MODEL.

near far ᒺ . ᒺ , near ( ). . ᒺ ( far) : . .

 

9.1

TINY near near DGROUP. .com
SMALL near near , ᒺ DGROUP. , ,
MEDIUM far near , , ᒺ. far. . near
COMPACT near far . . far
LARGE far far , , ᒺ. far

 

. , , . ֳ :

- db 1 ;

- dw 2 ();

- dd 4 ( );

- df 6 ;

- dq 8 ;

- dt 10 .

.

 

MODEL SMALL; ,

;

STACK 256;

DATA SEGMENT;

DATA ENDS

CODE SEGMENT;

ASSUME CS:CODE,DS:DATA,ES:DATA;

;

;

;

;

CODE ENDS; ʳ

END;

 

:

1 ?

2 -?

3 -?

4 - ?

5 () ?

6 ? near far?

7 ?

 

:

1 ?

2 ?

3 ?

 

 

, . . 9.9. .

 

{̳:} {} {} {; }

 

9.9

 


̳ , . - () , , . ̳ . 31 . . .

, :

- , ;

- ;

- ;

- .

() , , . () , . , .

, ᒺ, (). , . , . . :

- ;

- ;

- ;

- () ;

- () .

, , :

- , , , . , , =: equ;

- . ;

- , . ( ) ( ). , , ;

- , $. ;

- , ;

- , , .

. 9.10.

 

 

    0 2 4 0 2 4

 

 

9.10 Intel

 

, , . (COP) :

w , :

w = 0 ;

w = 1 ;

d :

d = 1 rg 2, ;

d = 0 ;

s , . w.

 

 
 

 


. :

- md ( ), :

 


 
 

 


- COP rg 2 COP , ; rg 2 , , ;

- rg 1 mem , . . rg 2 rg 1 s . 9.2.

 

9.2 rg 2 rg 1

rg 2 / rg 1 w = 0 w = 1 rg 2 / rg 1 w = 0 w = 1
  AL AX   AH SP
  CL CX   CH BP
  DL DX   DH SI
  BL BX   BH DI

 

- , . , .

 

:

1 ?

2 ?

3 ?

4 Intel?

5 ?

6 , ?

 

:

1 ?

2 , ?

3 , MOV AX,BX , () 89 D 8 .

 


 

:

1 - ?

2 ?

3 ?

4 ?

5 Intel?

 

, , , . :

;

( );

-;

;

.

, - . POPF i SAHF, .

, : , , , (), ().

 

MOV (MOV operand),

 

MOV dst,src.

 

src () dst (), src () . , . . , , . 3 6 .

:

 

MOV AL,B; AL

MOV BX,CX; CX

MOV AL,[BX]; ,

; , AL

MOV A,[BX];

; ,

; , A

 

MOV A,[BX] : , :

() = 1234 H

.

(DS) = 7000 .

(AX) .

 

 
 

 


ϳ , , AX AL (1235 ) AX AH. ϳ :

() = 1234 H .

(DS) = 7000 .

(AX) = 7856 , .

.

 

MOVSX (MOVe and Sign eXtension) . :

 

MOVSX dst,src.

 

, .

dst () 16- 32- , src () 8- 16- .

, , .

,

 

MOVSX A,L,

 

: (L) = 82 , (A) , L AL AH. ϳ A FF 82 H.

 

MOVZX (MOVe and Zero eXtension) . :

 

MOVZX dst,src.

 

, , .

dst () 16- 32- , src () 8- 16- .

, , , .

,

 

MOVZX A,L,

 

: (L) = 82 , (A) , L AL AH. ϳ A 0082 H.

 

XCHG (eXCHanGe) . :

 

XCHG dst,src.

 

8-, 16-, 32- , , . . - .

:

 

XCHG AL,B; () AL

XCHG BX,CX; () CX

XCHG AL,[BX]; ,

; , AL

XCHG A,[SI]; ,

; SI .

 

XLAT (transLATe byte from table) . :

 

XLAT.

 

AL 256- , . AL .

 

LDS/LES/LFS/LGS/LSS (Load pointer into DS/ES/FS/GS/SS segment register) . :

 

LDS/LES/LFS/LGS/LSSdst,src.

 

dst () 16- 32- , scr () 4 8 , . , , .

. , .

,

 

LES DI,[ SI +2],

 

:

(DS) = 7000 H; (SI) = 1234; DX ; 7000:1234 66 77 88 99

:

- 1234+2 (1234+2)+1 DX. 9988 ;

- (1234+2)+3 (1234+2)+2 S. .

 

L (Load Effective Address) . :

 

Ldst,src.

 

dst () 16- 32- , src () , . src (), , .

, , , .

LDS/LES/LFS/LGS/LSS L . , .

:

 

LEA DX,[BX+SI+2]; DX ,

;

; BX SI 2.

; (BX) = 0100, (S) = 0020, DX

;

; 0122 = 0100+0020+0002

 

LHF (Load AH register from register Flags) FLAGS. :

 

LHF.

 

Flags, 5 CF, PF, AF, ZF, SF, 7, 6, 4, 2 0 .

 

SHF (Store AH register into register Flags) FLAGS . :

 

SHF.

 

Flags , 5 CF, PF, AF, ZF, SF 7, 6, 4, 2 0 .

LHF SHF 8- , .

 

( ) . / SP. SS ( ) SP ( ).

 

PUSH (PUSH operand onto stack) . :

 

PUSH src.

 

src () , , , . 2 4 .

/ , SP , 2 (SP)1 (SP)2, (SP)1, (SP)2. 4- , (SP)1, (SP)2, (SP)3 (SP)4. PUSH POP.

 

POP (POP operand from the stack) . :

 

POP dst.

 

dst () . dst () , , . 2 4 . ³ SP, (SP)+2 2 , (SP)+4, .

 

PUSHA (PUSH All general registers onto stack) . :

 

PUSHA.

 

: AX, CX, DX, BX, SP, BP, SI, DI. DI ( ). SP, . SP, , (SP)16.

32- PUSHAD.

 

POPA (POP All general registers from the stack) . :

 

POPA.

 

, , PUSHA. SP , . SP 16.

32- POPAD.

 

PUSHF (PUSH Flags registers onto stack) . :

 

PUSHF.

 

POPF (POP Flags registers from the stack) . :

 

POPF.

 

PUSHF POPF , .

 

- , .

:

IN (INput operand from port). :

 

INdst,src,

 

dst () AL, AX EAX, src () () DX;

OUT (OUT operand to port).

 

OUTdst,src,

 

dst () () DX, src () AL, AX EAX.

, 255 , DX, 65536 . DX , .

.

- :

 

IN ,22; , 22

IN L,DX; L ,

; DX

OUT DX,; ,

; DX

 

, , . - , . , .

- - :

MOVSB (MOVe String Byte) ;

MOVSW (MOVe String Word) ;

MOVSD (MOVe String Double word) .

ֳ - , , DS:SI -, ES:DI. - ES, - , DS.

ϳ SI DI DF. DF 0 ( CLD), SI DI , DF 1 ( STD), SI DI . / 1, , 2, , 4, .

REP, 0.

 

AL/AX/EAX :

LODSB (LOad String Byte operands) ;

LODSW (LOad String Word operands) ;

LODSD (LOad String Double word operands) .

ֳ - , , DS(ES/GS/FS):SI . ϳ SI DF. DF 0 ( CLD), SI , DF 1 ( STD), SI . / 1, , 2, , 4, .

REP, LOOP -, .

 

AL/AX/EAX :

STOSB (Store String Byte operands) ;

STOSW (Store String Word operands) ;

STOSD (Store String Double word operands) .

ֳ AL/AX/EAX , , ES:DI. ϳ DI DF. DF 0 ( CLD), DI , DF 1 ( STD), DI . / 1, , 2, , 4, .

REP, , .

 

:

INSB (INput String Byte operands) ;

INSW (INput String Word operands) ;

INSD (INput String Double word operands) .

ֳ , ES:DI, , , DX. . ϳ DI DF. DF 0 ( CLD), DI , DF 1 ( STD), DI . / 1, , 2, , 4, .

REP, , .

 

:

OUTSB (INput String Byte operands) ;

OUTSW (INput String Word operands) ;

OUTSD (INput String Double word operands) .

 

ֳ , DX, , ES:SI, , . . DX. ϳ SI DF. DF 0 ( CLD), SI , DF 1 ( STD), SI . / 1, , 2, , 4, .

REP, , .

 

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

 

CBW (Convert Byte to Word) ( AL) ( ). AL . , AL 85 ( 05 ), FF 85 H. AL 74 ( +74 ), 0075 .

 

CWD (Convert Word to Double Word) ( ) ( DX:AX). DX.

, . , , . DIV.

 

CWDE (Convert Word to Double Word Extended) ( ) ( AX). A .

 

MOVSX i MOVZX, .

 

:

1 ?

2 MOV,MOVSX MOVZX?

3 DS BX LDS BX,[1234], : 7000:1234 10 20 30 40 50?

4 - ?

5 :

 

MOV CX,0004H; -

CLD

MOV SI,1234H

REP LODSB

 

SI AL , , 3.

6 ?

 

:

1 ?

2 REP?

3 SP 3456 3455 PUSH CX, : (SP) = 3457 () = 1234 ?

 





:


: 2015-10-19; !; : 1277 |


:

:

. .
==> ...

1684 - | 1608 -


© 2015-2024 lektsii.org - -

: 0.322 .