Системы адресации в Мини- и МикpоЭВМ

СОДЕРЖАНИЕ: МОСКОВСКИЙ ОРДЕНА ТРУДОВОГО КРАСНОГО ЗНАМЕНИ ЭКОНОМИКО-СТАТИСТИЧЕСКИЙ ИНСТИТУТ КАФЕДРА ВЫЧИСЛИТЕЛЬНЫХ МАШИН КУРСОВАЯ РАБОТА на тему: Сравнительный анализ различных систем адресации, используемых в мини и микроЭВМ.

-

:

, .

:

: ..

: ..

“____” “_________” 1994 .

1994 .

-

-101 1

: ..

: , .

:

1. . - .

2. , -.( ).

3. , .( ).

4. . - .

:

1. . . 1990.

2. ., .. 80386 . 1990.

3. , .. , .. . . 1992.

“____” “_________” 1994 .

1994 .

: ..

1. - .

60- -. , . , . 1977-78 ( ). , . , 3- , , , , , . - , , - , , . - . , - , . - , , .. - , . - 1700 32- .

1700 AMD 80386 DX 40Mhz

-

, ../ 3 9.6

32 32

5-15 1-128

AMD386 Ali 386 MINI ISA System Board. , , - .

2. -

, - 1700. 32- . 1700 . - 16- 4. 1700 4, 1700 . 1700 , . 1700 304 20 . . 1700? , , , .

2.1

. MOVL R2,R3. , - - . MOVL R2,R3 R2 R3, , MOV AX,BX c 8086 Intel. MOVL R2,R3. , D0 52 53, D0 - , 52 53 - , 2 , 3 .

:

R2 = 00000010

R3 = 00001000

:

R2 = 00000010

R3 = 00000010

, R2 R3.

2.2 -

. (Rn), (Rn) {MOVL (R2),R3} {MOVL R2,(R3)}. MOVL R2,(R3). , 52 63, 63 - 3 . , , :

MOVL R2,(R3):

R2 = 00000010

R3 = 00001000

(00001000) = 00000200 (R3)

...

R2 = 00000010

R3 = 00001000

(00001000) = 00000010

, R3 (00001000) 000000200 00000010.

2.3

CM1700 . , - , N, :

N = 1, ,

N = 2, ,

N = 4, ,

N = 8, ,

N =16, 128 .

MOVL (R0),(R2)+. D0 60 82, 60 - R0, 82 - R2 . .

MOVL (R0),(R2)+

R0 = 00001000

R2 = 00001050

(00001000) = 000000AC (R3)

(00001050) = 00000000 (R2)

...

R0 = 00001000

R2 = 00001054 —— 4

(00001000) = 000000AC

(00001050) = 000000AC

00001000 00001050 R2 4. ( MOVL . L - Long - . R2 4. , , B,W,L Q .)

2.4

, , . CLRB -(R5), 94 75. 94 - , 75 - : R5 ( ?5 ) ( 7? ).

CLRB -(R5)

R5 = 00001000

(00000FFF) = 0000001A

(000001000) = 0000001A (R5)

...

R5 = 00000FFF —— 1

(00000FFF) = 0000001A (R5)

(000001000) = 00000000 —— 0

. 00001000, R5 ( CLRB - CLeaR Byte - ), R5 1 00001000, .. 00000FFF.

2.5

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

, CLRB @(R5)+. @ ( ) , . 94 95, 94 - , 95 - R5 ( 9).

CLRB @(R5)+

R5 = 00001000

(00001000) = 000000AC (R5)

(000000AC) = 0A (00001000)

...

R5 = 00001004 —— 4

(00001000) = 000000AC

(000000AC) = 00 —— 0

000000AC, c 00001000, R5 , R5 4.

2.6

, , . . 3 : B^X(Rn), W^X(Rn), L^X(Rn), X , (Rn). .

CLRB B^2(R4), 3 , R5. 94 A4 02, 94 - , A4 - R4 ( C4 E4 , ), 02 , .

CLRB B^2(R4)

R4 = 00001000

(00001000) = 00 (R4)

(00001001) = 01

(00001002) = 02 (R4)+2

...

R4 = 00001000

(00001000) = 00 (R4)

(00001001) = 01

(00001002) = 00 —— 0

00001002, 00001000 2. , .

2.7

( , ) , . @B^X(Rn), @W^X(Rn) @L^X(Rn) X , . Rn - , .

MOVW @B^8(R5),(R2), (R2) , , R2 8. B0 B5 08 62, 0 - , B5 - R5 , 08 - 62 - R2.

MOVW @B^8(R5),(R2)

R5 = 00001000

R2 = 00000400

(00001000) = 00000100 (R5)

(00001004) = 00000200

(00001008) = 00000300 (R5)+8

(00000300) = AAAA @(R5)+8

(00000400) = 0000 (R2)

...

R5 = 00001000

R2 = 00000400

(00001000) = 00000100 (R5)

(00001004) = 00000200

(00001008) = 00000300 (R5)+8

(00000300) = AAAA

(00000400) = AAAA

00000400 00000300. 0000300 R5 ( 00001000 ) 8 .. 00001008. , , 00000300.

2.8

(), , , 1700 , . . , .

00 ?????? ——

0 63. S^#n, n - . MOVL S^#18,R3 D0 18 53. D0 - , 18 - , 53 - R3 .

MOVL S^#18,R3

R3 = 00001234

...

R3 = 00000018

, R3

2.9

1700 . :

15 11 7 3 0

- ,

- ,

- (0100),

- .

15 - 8 , . , , . , . , Rx . . 1, 2, 4 8, . :

1. - , (Rn)[Rx].

2. , (Rn)+[Rx].

3. , @(Rn)+[Rx].

4. , -(Rn)[Rx].

5. , N^X(Rn)[Rx], N B, W, L.

6. , @N^X(Rn)[Rx]

, . -, , . , [Rx] , . , CLRB B^2(R4), ( 2.6 ) CLRB (R0)[R4] R0 , R4 , 3 .

CLRB (R0)[R4]

R0 = 00001000

R4 = 00000002

(00001000) = 00 (R0)

(00001001) = 01

(00001002) = 02 (R0)+[R4]*1

...

R0 = 00001000

R4 = 00000002

(00001000) = 00 (R0)

(00001001) = 01

(00001002) = 00 —— 0

.

2.10 .

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

. , . , . . , . , , . MOVB #10,(R2)

MOVB #10,(R2)

00000305 : 90

00000306 : 8F ——— (R15)+

00000307 : 10 ———

00000308 : 62 ——— (R2)

R2 = 00001000

R15 = 00000305

(00001000) = FF (R2)

...

R2 = 00001000

R15 = 00000309

(00001000) = 10 (R2)

MOVB #10,(R2) MOVB (R15)+(R2), , (00001000).

, , , 4, 32- . . , (00001000) 10, 10. MOVB @#10,(R2):

MOVB @#10,(R2)

00000305 : 90

00000306 : 9F ——— @(R15)+

00000307 : 10

00000308 : 00

00000309 : 00

0000030A : 00

0000030B : 62 ——— (R2)

R2 = 00001000

R15 = 00000305

(00000010) = 00

(00001000) = FF (R2)

...

R2 = 00001000

R15 = 00000309

(00000010) = 00

(00001000) = 00 ——— 0

, -. , . , - . , , , . ? . , . . , , , . Addr, Addr - . MOVB 10,(R2)

MOVB 10,(R2)

00000305 : 90

00000306 : CF ——— @(R15)

00000307 : 07 (309-10),

00000308 : FD .

00000309 : 62 ——— (R2)

R2 = 00001000

R15 = 00000305

(00000010) = 00

(00001000) = FF (R2)

...

R2 = 00001000

R15 = 0000030A ——— + 5

(00000010) = 00

(00001000) = 00 ——— 0

, . . , , -. . . . @Addr, Addr - , . MOVB @10,(R2):

MOVB @10,(R2)

00000305 : 90

00000306 : CC ——— @W^FD7(R15)

00000307 : 07 (309-10),

00000308 : FD .

00000309 : 62 ——— (R2)

R2 = 00001000

R15 = 00000305

(00000000) = EE (00000010)

(00000010) = 00

(00001000) = FF (R2)

...

R2 = 00001000

R15 = 0000030A —— + 5

(00000000) = EE

(00000010) = 00

(00001000) = EE —— EE

2.11 .

, - . :

7 0

, . . , . 128 ? , , . .

3.

32- 80386 Intel. , 386- Cyrix AMD (Advanced Micro Devices), I80386. 80386 32- , 3-4 (MIPS). 32- 4 , 80386 64 . 80386 9 : , , , , , , , . 2-3 . 8,16 32 .

80386 , . 16- . 16- ( 8086), 20- . .. 45F7, 45F70. 32- ( ), 32- , - . . . SEG. DS:[?], ES:[?], CS:[?], FS:[?] .. EIP(IP), ESP(SP), ESI(SI), EDI(DI) EA, (, ..).

1. .

CS ( Code Segment )

EIP(IP) ( Instruction Pointer )

2. .

SS ( Stack Segment )

ESP(SP) ( Stack Pointer )

3. .

DS (CS,SS,ES,FS,GS)

EA

4. -.

DS (CS,SS,ES,FS,GS)

ESI(SI)

5. -.

ES

EDI(DI)

6. EBP(BP) ESP(SP).

SS (CS,DS,ES,FS,GS)

EA

EA 16- 32- . EA :

  • EBP(BP) EBX(BX);
  • ESI(SI) EDI(DI);
  • 8-, 16- 32- , .

EA . .

3.1 .

, . (MOV, PUSH), (ADD, ADC, SUB, SBB, CMP, IMUL), (AND, OR, XOR, TEST). - :

IMUL AX,5

AX = 10

...

AX = 50

3.2 .

. PUSH DS.

PUSH DS

DS = 5678h

SP = FFFEh

SS:FFFE = 0000h

...

DS = 5678

SP = FFFDh

SS:FFFD = 5678

SS:FFFE = 0000

DS .

3.3 - .

(SI, DI, ESI, EDI) ( BX, BP, EBX, EBP) EAX, ECX, EDX. :. .

MOV EBX,[EDI], DS:[EDI] EBX. ( - 4 .

MOV EBX,[EDI]

EBX = 5678h

EDI = 0100h

DS:0100h = 1221h (edi)

...

EBX = 1221h ——— 1221h

EDI = 0100h

DS:0100h = 1221h

. , DS:EDI EBX. DS .

3.4 .

. MOV EAX,[1994h], DS:1994 EAX.

MOV EAX,[1994h]

EAX = 0000h

DS:1994h = 5000h

...

EAX = 5000h —— 5000h

DS:1994h = 5000h

, , ds:[1994h] .

3.5 .

. . ADD AX,[BP+10h], AX , DS:[BP+10h]...

ADD AX,[BP+10h]

AX = 0067h

BP = 0100h

DS:0100h = 0000h (bp)

DS:0101h = 0001h

· · · · · ·

DS:0109h = 0009h

DS:0110h = 0010h (bp+10h)

...

AX = 0077h —— (67h+10h = 77h)

BP = 0100h

DS:0100h = 0000h

DS:0101h = 0001h

· · · · · ·

DS:0109h = 0009h

DS:0110h = 0010h

, BP 10h 110h, , AX.

3.6 .

, , ( SI,DI ) . 32- , EAX, ECX, EDX, EBX, EBP, ESI, EDI.. MOV WORD PTR ES:[DI+2],AX, ES:[DI+2] AX.

MOV WORD PTR ES:[DI+2],AX

AX = 0099h

DI = 000Dh

ES:000Dh = 0000h (di)

ES:000Fh = 0000h (di+2)

...

AX = 0099h

DI = 000Dh

ES:000Dh = 0000h

ES:000Fh = 0099h —— 99h

ES:000Fh DI 2 = F. 99h AX .

3.7 - .

( BX,BP ) ( SI,DI ) . MOV AX,[BP+SI] :

MOV AX,[BP+SI]

AX = 00AAh

BP = 0100h

SI = 0050h

DS:0100h = 0001h (bp)

DS:0150h = 0002h (bp+si)

...

AX = 0002h —— 02h

BP = 0100h

SI = 0050h

DS:0100h = 0001h

DS:0150h = 0002h

DS:0150h BP SI, AX.

3.8 - .

, 8- 16- . 32- , (SIB) . [EAX+EBX], [EAX+EAX], [ECX+EDX], ESP. F .. 0,1,3 4. F . MOV EAX,[EAX+EAX].

MOV EAX,[EAX+EAX]

EAX = 0010h

DS:0010h = 000Ah (eax)

DS:0020h = 000Bh (eax+eax)

...

EAX = 000Bh —— 0Bh

DS:0010h = 000Ah

DS:0020h = 000Bh

EAX, EAX DS:0020h EAX.

3.9

( ) 32- . : , . , -.

Start: jmp Begin

Var dd 5 dup (0)

Begin:

mov edi,2 ; 1

mov [Var+edi*4],12345678h ; 2

Var 5 32- . 1 2, , 2 1234567h. - Y[2]:=$1234567 , 1234567h - [Y+2], [Y+2*4] .. [Y+8] . , . , .

3.10 -

, EAX,EBX,ECX,EDX,ESI EDI. : MOV [EAX+EDI*4],666h 666h EAX EDI.

MOV [EAX+EDI*4],666h

EAX = 0100h

EDI = 0002h

DS:0100h = 000Ah (eax)

DS:0104h = 000Bh

DS:0108h = 000Ch (eax+edi*4)

...

EAX = 0100h

EDI = 0002h

DS:0100h = 000Ah (eax)

DS:0104h = 000Bh

DS:0108h = 0666h —— 666h

2- 32- , 666h EAX+2 .. 102h, .

3.11 -

3.6 32- . . INC [EAX+EDI*4+12345678h] , , 32- 12345678h 4 , EDI.

3.12

80386 ( , , .. ), , . EIP(IP) ( instruction pointer - ), , 8-, 16- 32- , , . :

.

.

mov ax,5

jmp @1

sub ax,ax

@1: mov bx,ax

.

.

JMP 02, .. 2 , . SUB AX,AX , MOV BX,AX .. CS:IP+2. ( . 128 EB??90, ?? - + 1 . 90h . NOP ( no operation ), , , . ?? - , , . 127 E9???? , ).

4. . CM1700 80386.

, - - . , , , , .

, , , , . , . , 1700 80386 , 8086 , . , , , . , , . , , - . . . , , . , . :

push 0f000h

push 0ffffh

ret

RET , . , :

mov ax,0f000h

push ax

mov ax,0ffffh

push ax

ret

, , , , . , , , , . 1700 , , i386 . , 1700 , 64 . 80386 , - .

, . , .. i386 1700, .

, . , , 1700 . , , . 1700 80386.

1. .

1700 MOVB R1,(R2)

i386 MOV [EBX],EAX

2. .

1700 MOVB W^32769(R4),R1

i386 MOV EAX,[EDX+32769]

3. .

1700 MOVW @B^8(R5),(R2)

i386 MOV ESI,[EDI+8]

MOV AX, word ptr [ESI]

MOV word ptr [EDX],AX

4. .

1700 MOVB (R1)[R2],R3

i386 MOV CX,[BP+DI]

5. .

1700 MOVB B^5(R1)[R2],R3

i386 MOV EAX,[EBX+ECX+5]

, . 3, , , 3 80386. 386- , . 80386 -. . i386 . . :

MOVS{B,W,D} -

STOS{B,W,D} - {AL,AX,EAX}

LODS{B,W,D} - {AL,AX,EAX}

CMPS{B,W,D} -

SCAS{B,W,D} -

REP. REPE, REPZ, REPNE REPNZ , - . . , , , ESI(SI),EDI(DI). MOVS -. , . 80386. MOVL @(R1)+[R3],(R2)+ i80386.

CLD

MOV ESI,[EAX+EBX]

MOVSD

, EDI = R2, . ESI EDI 4

MOV CX,1000

REP MOVSB

4000 DS:[ESI] ES:[EDI]. , , ECX, (CLD/STD - ESI () EDI), .

, i386 . 1700 , . , . - , ( , ..), . , , 80386 . , , , , . , , . , , , .

..

.

1. . . 1990.

2. ., .. 80386 . 1990.

3. , .. , .. . . 1992.

4. , . 1991.

5. ALI 386DX MINI ISA Systm Board users manual. Printed in the Taiwan. Edition - August 1993.

1. .

- .

2. -.

1. .

2. .

3. .

4. .

5. .

6. .

7. .

8. .

9. .

10. .

11. .

3. .

1. .

2. .

3. - .

4. .

5. .

6. .

7. - .

8. - .

9. .

10. - .

11. - .

12. .

4. . CM1700 80386.

5. .

Скачать архив с текстом документа