Системы адресации в Мини- и Мик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. .