1.1. Structura microprocesorului I8x86 Registre generale (816!"#iti$ 31 15 8 0 EAX . AX %& %L Acumulator EBX . BX '& 'L Baze reg. ECX . CX C& CL Counter reg. EDX . DX (& (L Data reg. Registre pointer si in)ex( 16!"#iti$ 31 1* 0 ESP . SP Stack pointer EBP . BP Baze pointer ES . S Source in!e" ED . D De#tination in!e" Registre )e #a+a pentru segmente 31 1* 0 ECS . CS Co!e #egment EDS . DS Data #egment ESS . SS Stack #egment EES . ES E"tra #egment $la Pentium e"i#ta #i reg.#egment %S& 'S( Registre )e stare 31 15 0 P . %)resa instructiune curenta n#truction pointer %)A' .*+ O ( I , S - % P C %lag regi#ter Bitii !in regi#trul %lag #unt in!icatori !e #tare care #e pozitioneaza ,unctie !e rezultatul ultimei operatii aritmetice #au logice #i #e te#teaza !e in#tructiunile !e #alt. Instructiunile de transfer a datelor si salt nu pozitioneaza indicatorii. - . -/er,lo0 ,lag !epa#ire capacitate regi#tru la operatii aritmetice D . Direction ,lag !irectia !epla#arii la in#tr. pe #iruri !e caractere$ !10 #pre !reapta( . nterupt ena2le,lag intreruperi a!mi#e + . +rap ,lag S . Sign ,lag in!ica #emnul rezultatului $S10 poziti/& S11 negati/( 3 . 3ero ,lag in!ica rezultat zero $311( A . Au"iliar carr4 +ran#port interme!iar !in rangul 5 $ A11( P 6 Parit4 ,lag *umar !e 2iti par in rezultat $P11( C . Carr4 ,lag +ran#port !in rangul cel mai #emni,icati/ $C11( *+ . *e#te! ta#k Pentru control ta#k6uri 1 1.". Segmentarea programelor Programele tre2uie #a ,ie mo!ulare #i relocata2ile 6 #a poata ,i incarcate oriun!e in memorie #i #a poata rula !in acea zona. 7o!ulele /or cuprin!e in,ormatii !e acela#i tip rezultate !in compilarea programelor. 8n #egment poate cuprin!e mai multe mo!ule a#am2late !e )ink6E!itor. 8n program poate cuprin!e mai multe #egmente. E"i#ta 5 tipuri !e #egmente 9 segment )e co) ce contine numai in#tructiuni !e program cu a!re#e relati/e la inceputul #egmentului& 2azat cu regi#trul !e #egment CS: segment )e )ate ce contine numai !ate !in program& 2azat cu regi#trul DS : segment )e )ate comune pentru mai multe #egmente& 2azat cu regi#trul ES : segment )e sti.a ce contine !atele ge#tionate ca #ti/e& 2azat cu regi#trul SS : mplicit a!re#ele !atelor !in program #e 2azeaza cu reg.DS& a!re#ele !e #alt cu reg.CS #i a!re#ele !e #ti/a in!icate !e SP $Stack Pointer( cu reg.SS. Structura unui program relocata#il /ormat )in segmente Segment )e co) CS01111 11 1 2 "* 1 3MP CS 4"*1 MO5 %6(S 471*18 MO5 '6ES 47918 6#alt la a!re#a ;50 !in #eg. !e co! pla#at la a!re#a 1000 in!icata !e CS $a!re#a a2#oluta 1;50( 6incarca z !in #eg. !e !ate 2azat cu DS !e la a!r. 150 6incarca " !e la a!r.50 !in #eg.E"tern 2azat cu ES Segment )ate locale (S0"111 11 1 1* 1 -0!*1 6 a!re#a a2#oluta ;000<1501;150 Segment )ate extern (comune$ ES0*111 11 1 91 60!!! 6 a!re#a a2#oluta 5000<5015050 Segment )e sti.a SS0:*11 .. . Contine toate #ti/ele ,olo#ite in program ; 3 Calculul a)resei /i+ice 15 0 Co) instr. O//set %)resa ((eplasament$ %)resa relati.a in segment 15 ; 0 CS %)resa inceput segment 1111 1= 0 0 %)resa )e memorie /i+ica 1.!. Mo)uri )e a)resare )a microproce#orul "8> poate e"i#ta o singura a)resa )e memorie in instructiune. 8n operan! e#te in regi#tru iar celalalt in memorie #au alt regi#tru. %)resarea registru registru %(( %6(6 se a)una continutul lui (6 la %6 pe 16 #iti %(( '&CL se a)una continutul lui CL la '& pe 8 #iti CO( instr Reg.sursa Reg.)estinatie < co)ul poate /i pe 1 sau " octeti %)resarea ime)iata 6 un operan! e#te in in#tructiune %(( %6*111 #e a!una 5000 la AX %(( SI"* #e a!una ;5 la regi#trul S CO( instr *111 $/aloare( < .aloarea operan) poate /i pe 1 " sau 9 octeti %)resarea )irecta 6 un operan! e#te in memorie %(( %6al/a continutul lui al,a #e a!una la AX $2azat cu DS( %(( %67*118 continutul a!re#ei 500 #e a!una la AX CO( instr %)resa relati.a in segment < a)resa poate /i pe 1 " sau 9 octeti < co)ul poate /i pe 1 sau " octeti %)resarea in)irecta %(( %67'68 continutul a!re#ei in!icate !e BX #e a!una la AX $2azat cu DS( '6 R%M CO( in#tr. %)resa relati.a operan) Operan)" 5 %)resarea in)exata %(( %667SI8 )in ta#loul 6 se ia elementul in)icat )e SI (a)r.in ta#lou$ ,a#lou 6 ;SI CO( in#tr. %)resa relati.a ta#lou 6 61 6" 6! 6i %)resarea cu #a+a %(( %67'6;*8 '6 in)ica o +ona )e )ate iar * este a)r.relati.a in +ona '6 -ona )e )ate ;* CO( in#tr. %)resa relati.a +ona Oper" %)resarea cu #a+a si in)ex %(( %67'6;SI;*8 '6 in)ica o +ona iar * este a)r.rel.a unui ta#lou si SI po+itia elementului in ta#lou(nu in)ice$ '6 ;* ,a#lou 6 SI CO( in#tr. %)resa relati.a +ona 61 6" 6i 1.9. =ormatul instructiunilor n,ormatiile !in memoria ?A7 pot ,i9 6 )ate in 2inar& in /irgule ,lotanta& in zecimal #i pe !i,erite lungimi < instructiuni !e !i,erite lungimi n#tructiunile care #e ,olo#e#c !etermina cum #e interpreteaza acele in,ormatii. n lim2a@ !e a#am2lare nu exista tipuri )e )ate )eclarate #i #e poate !a !oar lungimea. Daca o /aria2ile in A% #e a!re#eaza cu o in#tructiune 2inara /aloarea e#te impre/izi2ila. Daca regi#trul P $n#truction Pointer( #e incarca cu o a!re#a !e !ate& !atele #e interpreteaza ca intructiune #i #e pot ,ace !i#trugeri in program. )a incarcarea unui program #e #terge toata memoria pentru a nu ramane rezi!uri !in /ecBile programme. Datele pot ,i 9 locale in segment #peci,icate prin a!re#a relati/e la care #e a!auga CDSD comune mai multor segmente $e"t( #pec.prin a!r.rel. #i #e a!auga CESD temporare care #e pa#treaza in #ti/e in #egmentul !e #ti/a a!r. CSPD< CSSD Setul !e in#tructiuni al calculatorului cuprin!e9 in#tructiuni !e tran#,er& aritmetice #i logice realizate in !i#poziti/ul aritmetic: in#tructiuni pentru prelucrare #iruri !e caractere $te"te(: in#tructiuni !e control a programului $#alturi con!itionate(: in#tructiuni !e calcul in Airgula %lotanta $A%( realizate in coproce##or: in#tructiuni !e calcul in zecimal realizate in coproce##or Pentium #i 58> cuprin! proce#or #i coproce#or care lucreaza in paralel. Coprocesorul nu are mecanism )e calcul al a)resei si salt& care #e realizeaza !e proce##or. 5 Structura instructiunilor I8x86 CO( 6 in#tructiune pe un octet 7-A A)&B) CO( a)r.rel 6in#tr. pe 3 octeti& a!re#are !irecta ADD BX&al,a CO( operan)" 6 in#tr. pe ; #au 3 octeti . in#tr. ime!iata 7-A S&55 CO( a)r.rel operan)" 6 in#tr.pe 5 #au 5 oct 7-A X&5;00 CO( Mo) r>m )eplasament operan)" 6 in#tr > octeti 7-A XCSD&5;30 n toate cazurile !e mai #u# implicit la a!re#a relati/a #e a!una continutul reg. DS. Daca #e !ore#te #a #e #peci,ice al regi#tru #egment !ecat cel implicit DS #au SS pentru #ti/a& #e a!auga in ,ata un octet #uplimentar care #peci,ica reg.#egment e"plicit. 7-A AX&ES 9 CBX<5000D operan!ul #e ia !in #egmentul in!icat !e ES Co!ul in#tructiei e#te pe 1 octet #i are #tructura !e 2aza 9 i Co) instr ) ? i11 . in#tructiune ime!iata !11 . rezultatul in regi#tru !10 .rezultatul in memorie 011 6 operan! pe 1>2iti 010 6 operan! pe 8 2iti n#tructiunile care ,ac re,erire la memorie contin o e"ten#ie !e co! notata 7o! rEm care #peci,ica mo!ul !e a!re#are ,olo#it $reg6reg& 2azata& in!irecta&in!e"ata( #i are #tructura9 MO( r>m Mo) 6 ;c2 . mo!ul !e a!re#are ,olo#it 00 . !epla#ament 0 7-A AX&CBXD 01 . !epla#ament pe 8c2 7-A DX&CBX<;5D 10 . !epla#ament pe 1>c2 7-A DX&CBX<;500D 11 . a!re#are reg6 reg #i rEm pe 3c2 #peci,ica reg !e#tinatie reg 6 3c2 co!ul regi#trului #ur#a utilizat r>m 6 3c2 in!ica mo!ul !e a!re#are 000 a!re#area e#te !ata !e CBX<S<!eplD 001 a!re#area e#te !ata !e CBX<D<!eplD 010 a!re#area e#te !ata !e CBP<S<!eplD 011 a!re#area e#te !ata !e CBP<D<!eplD 100 a!re#area e#te !ata !e CS<!eplD 101 a!re#area e#te !ata !e CD<!eplD 110 a!re#area e#te !ata !e CBP<!eplD 111 a!re#area e#te !ata !e CBP<D<!eplD Com2inatia 7o!100 #i rEm1110 in!ica o a!re#are !irecta. > >c2 ;c2 3c2 3c2 861>c2 861>c2 CO( ) ? Mo) reg r>m (epl>)ata )ata Co!i,icarea regi#trelor in zona reg #i rEm e#te 9 reg si r>m ?01 reg. pe 16c# ?01 reg. pe 8c# reg pe !"c# Registre segment 111 %6 %L E%6 ES 111 C6 CL EC6 CS 111 (6 'L E(6 SS 111 '6 (L E'6 (S 111 SP %& ESP =S 111 'P C& E'P @S 111 SI (& ESI 111 (I '& E(I P8SFA #al/eaza toare regi#trele in or!inea !ata !e co!ul regi#trului. Pentru utilizarea regi#trelor pe 3; 2iti #e intro!uce un octet e"ten#ie !e co! #i inca unul pentru utilizarea a!re#elor pe 3; 2iti. Pentru e"ercitii #e /a ,olo#i programul !e !epanare A%D #i #e /or #tu!ia #tructurile in#tructiunilor utilizate. A!re#ele !in memorie au octetii in/er#ati. Speci,icarea lungimii operan!ului can! nu rezulta !in rei#trul ,olo#it #e #peci,ica prin 9 >' pentru un octet #i >A pentru ; octeti $0or!(. %(( A>7'68*1 operan!ul #e con#i!er ape ; octeti Pentru e"ercitii #e pot ,olo#i in#tructiunile !e mutare& aritmetice #i logice pe 1 #au ;octeti. MO5 regB)estregBsursa tran#,er intre regi#tre MO5 reg7a)resa8 tran#,er !in memorie in regi#tru $citire !in memorie( MO5 7a)resa8reg tran#,er !in regi#tru in memorie $memorare regi#tru( MO5 reg.aloare incarcare ime!iata in regi#tru MO5 a)resa.aloare memorare ime!iata in memorie Can! #e #peci,ica a!re#a& ea poate ,i !irecta& in!irecta&#auE#i in!e"ata. PUS&% memorare toate regi#trele in #ti/a POP% incarcare toate regi#trele !in #ti/a %(( )estsursa #e a!una #ur#a la !e#tinatie cu un #ingur operan! in memorie SU' )estsursa #e #ca!e !in !e#tinatie #ur#a %C( )estsursa operatia logica S intre #ur#a #i !e#tinatie OR )estsursa operatia logica SA8 intre #ur#a #i !e#tinatie 6OR )estsursa operatia logica SA8 EXC)8SA intre #ur#a #i !e#tinatie
G 1.*. Utili+are %=( (%).ance) =ull screen (e#uger$ E"i#ta mai multe ,ere#tre !epla#area cu ta#tele =9 sus =8 Dos=E stinga =11 )reapta n ,iecare ,erea#tra #e poate mo!i,ica !irect pe ecran continutul regi#trelor& a!re#elor !e memorie& a continutului celulelor !e memoriei. ScBim2an! a!re#a #au reg.#egment #e #cBim2a zona !e memorie a,i#ata. Aalorile !in regi#ter #i memorie #unt reprezentate in Be"azecimal. %erea#tra !in !reapta @o# !a continutul ASC al locatiilor !e memoriei !in ,erea#tra ;. =9 a,i#eaza Felp6ul programului =1 Step e"ecuta o in#tructiune !e program$ pa# !e program(. =1 StepProg e"ecuta un program terminat cu IC, ! $termina un ta#k #i re/ine in A%D(. =ereastra CM( !e coman!a permite intro!ucerea !e comenzi 9 ( a)resa 6a,i#eaza in Be"a #i in lim2a@ !e a#am2lare o zona !e program. R reg1/al initializeaza regi#tre M n a)resa a,i#eaza zona !e memorie in ,erea#tra 1 #au ; $n11&;( % a)resa a#am2leaza un program !e la a!re#a $H100(& reg #eg. CS $Exit<Ctr>&ome( @ a)resa lan#are un program !e la a!re#a 2azata cu CS $oprire cuCtr>Esc( L prog incarca un program .e"e in memorie la a!re#a A /isa)rlung #crie intr6un ,i#ier o zona !e memorie !e lungime #peci,icata FUI, terminare A%D #i ie#ire in D-S #au Iin!o0# 8