, .
, , .
, , ,
8086, . , , .
, . . , , . , , , .
8086
.
. 8086 14 ( 1), , . . : AX, BX, CX, DX; SP, BP, SI, DI; CS, SS, DS, ES; IP FLAGS.
AH | AL | AX | SP | |||||
BH | BL | BX | BP | |||||
CH | CL | CX | SI | |||||
DH | DL | DX | DI | |||||
CS | IP | |||||||
DS | FLAGS | |||||||
ES | ||||||||
SS |
|
|
1.
CS, DS, SS ES. CS . , (IP), . SS . DS . , , , . ES , , DS. , . ES .
AX, BX, CX DX. . , . AX , /, . BX , , . , BX . CX , , , . DX . /, AX. , . , , AX - AH AL. . 8- 16- .
. . SP - . . SS. BP - . ( , ). , . SI - . , DS. DI - . , SI. ES.
IP. IP . CS IP. IP , , .
FLAGS. FLAGS ( 16), (. 2).
|
|
OF | DF | IF | TF | SF | ZF | AF | PF | CF |
. 2. FLAGS
FLAGS
OF . 1, .
DF . : 0 , 1 .
IF . , IF=1. IF=0, .
TF . TF=1, INT 3 . - .
SF . SF=1, 1. , SF=0 , SF=1 .
ZF . ZF=1, .
AF . 1 .
PF . 1,
CF . 1, ; , .
FLAGS . FLAGS. POPF, IRET, SAHF, , PUSHF, LAHF .
.
1, .. 220 , 16 . . 216 (64 65535 ), . : , CS; , , , DS; , , , SS, , ES. , .
16 ( ). , 16. 16 .
, . , IP . , - SP. . . ( DS) ( ES).
|
|
, , , . , . 20 , 1 .
.
1. INC ( 1) MOV , .
1.
8086
INC AX | 8 16 . . | |
MOV AX,5 | . , . . | |
INC [1000] | . ( ) . . | |
INC [BP], INC [SI] | BX, BP, SI, DI. BP - , . (). | |
INC [BP + A], INC B[BX] | 8- 16- BX BP. (). | |
INC A[SI], INC [DI + B] | 8- 16- SI DI. . , , . | |
INC [BX][SI], INC [BP + DI] | (BX BP) (SI DI) . BP - , . (), , . | |
INC [BX][SI + 10], INC A[BP + SI], INC X[BX][DI] | 8- 16- , (BX BP) (SI DI) . BP - , . (). | |
- | DS:SI, ES:DI. |
.
, . LIFO (" - "), / (stack - , , ). . SP - . , - , "" . (TOS). SP SS BP SS, SP , SS - . SS () . SP , .
|
|
. . BP , , .
.
, , , . , . : . , - , . : , .., - - / .
, . , , .
IF TF, . , , : Flags ( pushf); CS ( push CS); IP ( push IP); IF TF.
IP CS ( ). , : IP ( pop IP); CS ( pop CS); Flags ( popf).
, IP CS, , . 0...255, .
.
FPU.
: , .
, , . , 10 , 2. 0,625 = 0,101b. , , 0,625 = 0,101b = 1,01b * 2-1.
, 1,01 -1. , 1, , 1 . , , , . IEEE, Intel
- 31 , 30 23 8- + 127, 22 0 23- ;
- 63 , 62 52 11- + 1024, 51 0 52- ;
- 79 , 78 64 15- + 16 383, 63 0 64- ( 63 1).
3
|
|
3..
FPU
32768 ¸ 32767 | |||
2*109 ¸ 2*109 | |||
-9*1018 ¸ 9*1018 | |||
-99..99 ¸ +99..99 (18 ) | |||
1.18*10-38 ¸ 3.40*1038 | |||
1516 | 2.23*10-308 ¸ 1.79*10308 | ||
3.37*10-4932 ¸ 1.18*104932 |
FPU 80- , 32- 64- .
IEEE ,
- ;
- 1, ;
- 0, 0, 1;
- 1, 0, 1;
- 0 ( 10-16445 );
- 1, ( 80- ) 1, 0, 1;
- - SNAN () 1, 0 ( 80- 10), ;
- - QNAN () 1, ( 80- ) 1, . QNAN;
.
FPU , 16 .
FPU
FPU .
(R0 R7) , . , ST, ST(1), ST(2) ST(7). , , - R5 ST (. 13), R4, ST, R5 ST(1) ..
R0 | ST(5) | |||||||||||||||||||||||||
R1 | ST(6) | |||||||||||||||||||||||||
R2 | ST(7) | |||||||||||||||||||||||||
R3 | ST | TOP = 3 | ||||||||||||||||||||||||
R4 | ST(1) | |||||||||||||||||||||||||
R5 | ST(2) | |||||||||||||||||||||||||
R6 | ST(3) | |||||||||||||||||||||||||
R7 | ST(4) | |||||||||||||||||||||||||
SW | B | C3 | TOP | C2 | C1 | C0 | ES | SF | PE | UE | OE | ZE | DE | IE | ||||||||||||
CW | ´ | ´ | ´ | ´ | RC | PC | ´ | ´ | PM | UM | OM | ZM | DM | IM | ||||||||||||
TW | R7 | R6 | R5 | R4 | R3 | R2 | R1 | R0 | ||||||||||||||||||
IP | ||||||||||||||||||||||||||
DP | ||||||||||||||||||||||||||
. 13. FPU
SR FPU. .. .
FPU 8087, ES;
0 7, , R0 R7 ;
3, 2, 1, 0 , ;
ES 1, , SF, PE, UE, OE, ZE, DE, IE , ;
SF ; 1 = 1, ( ), 1 = 0, ( );
;
UE ;
;
ZE ;
DE ;
IE (SF = 1) .
0 3 , , , ;
fstsw ax
sahf
FLAGS , 0 CF, 2 PF, 3 ZF ( 2 ).
0 5 , FPU. .
CR FPU.
IC ( 8087 80287 +);
RC , : 00 , 01 , 10 , 11 .
PC , : 00 (32- ), 01 , 10 (64- ), 11 (80- )
, UM, OM, ZM, DM, IM , , , , , .
0 5 CR , , .
TW , , 15 14 R7, 13 12 R6 .. () 11, . 00 , , 01 , 10 , , , .
FIP FDP ( FINIT, FCLEX, FLDCW, FSTCW, FSTSW, FSTSWAX, FSTENV, FLDENV, FSAVE, FRSTOR FWAIT) .
FPU
FPU , . SR 1 , CR , INT 10h ( NE CR0 1) IRQ13 (INT 75h), SR, ( FIP, FDP) , , . CR 1,
- RC ( . 1/6 ). 1 , 0 , 1 ;
- , , ;
- ;
- ( );
- , ;
- 12.
12. ,
SNAN | QNAN |
NAN | C0 = C2 = C3 = 1 |
0/0 | |
FPREM FPREM1, 0 | C2 = 0 |
C2 = 0 | |
, x < 0, log(x+1), x < -1 | |
FBSTP, -SRS , NAN, 18 | |
FXCH, |
1. 1 8086. , 8086 8086 , . , FLAGS 8088 , :? ; * ; 0 - ; 1 - .
, .
2 2 . , .