Història dels microprocessadors intel 8088 i 8086

231 views

Published on

Història dels microprocessadors intel 8088 i 8086.

Més manuals a: http://www.exabyteinformatica.com

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
231
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Història dels microprocessadors intel 8088 i 8086

  1. 1. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware/© Roger Casadejús Pérez | ExatiendaHistòria dels microprocessadors Intel 8088/8086Des de laparició dels primers microprocessadors en els inicis de la dècada dels setanta, totesles àrees científiques i tecnològiques han estat experimentat el seu més acceleratdesenvolupament en la història de la humanitat. El baix cost, confiabilitat i reduït espai delssistemes digitals basats en microprocessadors els han possibilitat introduïr-los en aplicacionsque fins a abans daquesta dècada es trobaven restringides a sistemes dalt cost i consideratsdalta tecnologia. Les indústries de la telecomunicació, automoció, aeronàutica, detransformació, mèdica i de consum casolà, així com leducació, banca, i empreses de serveis,són només algunes de les àrees en les quals limpacte de lelectrònica digital és més evident, jaque ho palpem en el nostre actuar quotidià.CISCÉs un abreujament de "Complex Instrution set computer". Es refereix als microprocessadorstradicionals que operen amb grups grans dinstruccions de processador (llenguatge màquina).Els microprocessadors INTEL 80xxx estan dins daquesta categoria (inclòs el PENTIUM). Elsprocessadors CISC tenen un Set dinstruccions complexes per naturalesa que requereixen varisde molts cicles per completar-se.RISCÉs un abreujament de "Reduced Instruction Set Code", a diferència dels CISC, els processadorsRISC tenen un grup o set dinstruccions simples requerint un o pocs cicles dexecució. Aquestesinstruccions poden ser utilitzades més eficientment que la dels processadors CISC amb eldisseny de programari apropiat, resultant en operacions més ràpides.ELS MICROPROCESSADORS 8086 I 8088Història del 8086/8088:Al juny de 1978 Intel va llançar al mercat el primer microprocessador de 16 bits: el 8086. Aljuny de 1979 va aparèixer el 8088 (internament igual que el 8086 però amb bus de dades de 8bits) i al 1980 els coprocessadors 8087 (matemàtic) i 8089 (dentrada i sortida). El primerfabricant que va desenvolupar programari i maquinari per a aquests xips va ser la pròpia Intel.Reconeixent la necessitat de donar suport a aquests circuits integrats, lempresa va invertirgran quantitat de diners en un gran i modern edifici en Santa Clara, Califòrnia, dedicat aldisseny, fabricació i venda dels seus sistemes de desenvolupament que, com es va explicaranteriorment, són computadores autosuficients amb el maquinari i programari necessari perdesenvolupar programari de microprocessadors.
  2. 2. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware/© Roger Casadejús Pérez | ExatiendaEls sistemes de desenvolupament són factors clau per assegurar les vendes duna empresafabricadores de xips. La immensa majoria de vendes són a altres empreses, les quals usenaquests xips en aparells electrònics, dissenyats, fabricats i comercialitzats per elles mateixes. Aaquestes empreses se les anomena "fabricants dequip original", o en anglès, OEM (OriginalEquipment Manufacturer).El disminuir el temps de desenvolupament de maquinari i programari per les OEM és essencial,ja que el mercat daquests productes és molt competitiu. Necessiten suport doncs els mesosque els pot portar el desenvolupament de les eines apropiades els pot significar pèrdues permilions de dòlars. A més volen ser els primers fabricants al mercat, amb la qual cosa podenassegurar-se les vendes en dues àrees importants: a curt termini, ja que al principi la demandaés molt major que loferta, i a llarg termini, ja que el primer producte marca sovint elsestàndards.Daquesta manera lempresa Intel havia desenvolupat una sèrie completa de programari quesexecutava en una microcomputadora basada en el 8085 anomenada "Intellec MicrocomputerDevelopment System".Els programes incloïen assembladors creuats (aquests són programes que sexecuten en unmicroprocessador i generen codi de màquina que sexecuta en un altre), compiladors de PL/M,Fortran i Pascal i diversos programes dajuda.A més a més, hi havia un programa traductor anomenat AMB V86 que convertia codi font8080/8085 a codi font 8086/8088. Si sobserven de aprop tots dos conjunts dinstruccions,queda clar que la transformació és senzilla si els registres es tradueixen així: A -> AL, B -> CH, C-> CL, D -> DH, I -> DL, H -> BH i L -> BL. Pot semblar complicat traduir LDAX B (per exemple) jaque el 8088 no pot utilitzar el registre CX per a adreçament indirecte, no obstant això, es potfer amb la següent seqüència: MOV SI, CX; MOV AL,[SI]. Això aprofita el fet que no sutilitza elregistre SI. Per descomptat el programa resultant és més llarg (en quantitat de bytes)i de vegades més lent de córrer que en el seu antecessor 8085. Aquest programa de conversiónomés servia per no haver de tornar a escriure els programes en una primera etapa. Despréshauria de reescriures el codi font en assembler per poder obtenir els avantatges de velocitatofertes pel 8088.Després havia de córrer el programa en la iSBC 86/12 Single Board Computer basat en el 8086.A causa de lenfarfec que resultava tenir dues plaquetes diferents, lempresa GodboutElectronics (també de Califòrnia) va desenvolupar una placa on estaven el 8085 i el 8088, onsutilitzava un assemblador creuat proveït per la companyia Microsoft. Sota control deprogramari, podien commutar-se els microprocessadors. El sistema operatiu utilitzat era elCP/M (de Digital Research).El desenvolupament més notable per a la família 8086/8088 va ser lelecció de la CPU 8088 perpart dIBM (International Business Machines) quan en 1981 va entrar en el camp de lescomputadores personals.Aquesta computadora es va desenvolupar sota un projecte amb el nom "Acorn" (Projecte"Gla") però es va vendre sota un nom menys imaginatiu, però més correcte: "ComputadoraPersonal IBM", amb un preu inicial entre 1260 dòlars i 3830 dòlars segons la configuració (amb48KB de memòria RAM i una unitat de discos flexibles amb capacitat de 160KB costava 2235dòlars).Aquesta computadora va entrar en competència directa amb les ofertes per Apple (basat en el6502) i per Radi Shack (basat en el Z-80).
  3. 3. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware/© Roger Casadejús Pérez | ExatiendaARQUITECTURA DELS PROCESSADORS8088 I 8086:El 8086 és un microprocessador de 16 bits, tant pel que fa a la seva estructura com en les sevesconnexions externes, mentre que el 8088 és un processador de 8 bits que internament ésgairebé idèntic al 8086. Lúnica diferència entre tots dos és la grandària del bus de dadesextern. Intel tracta aquesta igualtat interna i desigualtat externa dividint cada processador8086 i 8088 en dos sub-processadors. O sigui, cadascun consta duna unitat dexecució (EU:Execution Unit) i una unitat interfície del bus (BIU: Bus Interface Unit). La unitat dexecució éslencarregada de realitzar totes les operacions mentre que la unitat dinterfície del bus éslencarregada daccedir a dades i instruccions del món exterior. Les unitats dexecució sónidèntiques en tots dos microprocessadors, però les unitats dinterfície del bus són diferents endiverses qüestions, com es desprèn del següent diagrama en blocs:Lavantatge daquesta divisió va ser lestalvi desforç necessari per produir el 8088. Només unameitat del 8086 (el BIU) va haver de redissenyar-se per produir el 8088.Lexplicació del diagrama en blocs és la següent:Registres dús general del 8086/8088:Tenen 16 bits cadascun i són vuit:1) AX = Registre acumulador, dividit en AH i Al (8 bits cadascun).2) BX = Registre base, dividit en BH i BL.3) CX = Registre comptador, dividit en CH i CL.4) DX = Registre de dades, dividit en DH i DL.5) SP = Capdavanter de pila (no es pot subdividir).6) BP = Capdavanter base (no es pot subdividir).7) SI = Capdavanter índex (no es pot subdividir).8) DIO = Capdavantera destinació (no es pot subdividir).Qualsevol daquests registres pot utilitzar-se com a font o destinació en operacionsaritmètiques i lògiques, la qual cosa no es pot fer amb cap dels sis registres que es veuran mésendavant.A més a més de lanterior, cada registre té usos especials:AX: Usant-ho es produeix (en general) una instrucció que ocupa un byte menys que sisutilitzessin altres registres dús general. La seva part més baixa, AL, també té aquestapropietat. Lúltim registre esmentat és lequivalent a lacumulador dels processadors anteriors(8080 i 8085). A més hi ha instruccions com DAA; DAS; AAA; AAS; AAM; AAD; LAHF; SAHF;CBW; IN i OUT que treballen amb AX o amb un dels seus dos bytes (AH o Al).També sutilitza aquest registre (juntament amb DX de vegades) en multiplicacions i divisions.BX: És el registre base de propòsit similar (susa per a adreçament indirecte) i és una versiómés potent del parell de registres HL dels processadors anteriors.CX: Sutilitza com a comptador en bucles (instrucció LOOP), en operacions amb cadenes (usantel prefix REP) i en desplaçaments i rotacions (usant el registre CL en els dos últims casos).
  4. 4. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware/© Roger Casadejús Pérez | ExatiendaDX: Sutilitza juntament amb el registre AX en multiplicacions i divisions, en la instrucció CWD ien IN i OUT per a adreçament indirecte de ports (el registre DX indica el nombre de portsdentrada/sortida).SP: Encara que és un registre dús general, ha dutilitzar-se només com a punter de pila, el qualserveix per emmagatzemar les adreces de tornada de subrutines i les dades temporals(mitjançant les instruccions PUSH i POP). En introduir (push) un valor en la pila a aquestregistre se li resta dos, mentre que en extreure (pop) un valor de la pila aquest a registre se lisumeixi dos.BP: Generalment sutilitza per realitzar adreçament indirecte dins de la pila.SI: Serveix com a capdavanter font per a les operacions amb cadenes. També serveix perrealitzar adreçament indirecte.DIO: Serveix com a capdavantera destinació per a les operacions amb cadenes. També serveixper realitzar adreçament indirecte.UNITAT ARITMÈTICA I LÒGICAÉs lencarregada de realitzar les operacions aritmètiques (suma, suma amb "arrossegament",resta, resta amb "préstec" i comparacions) i lògiques (AND, OR, XOR i TEST). Les operacionspoden ser de 16 bits o de 8 bits.Indicadors (flags): Hi ha nou indicadors dun bit en aquest registre de 16 bits. Els quatre bitsmés significatius estan indefinits, mentre que hi ha tres bits amb valors determinats: els bits 5 i3 sempre valen zero i el bit 1 sempre val un (això també ocorria en els processadors anteriors).Registre dindicadors (16 bits)Bit 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Flag -- -- -- -- OF DF IF TFSF ZF 0 AF 0 PF 1 CfCF (Carry Flag, bit 0): Si val 1, indica que va haver-hi "arrossegament" (en cas de summa) cap a,o "préstec" (en cas de resta) des del bit dordre més significatiu del resultat. Aquest indicadorés usat per instruccions que sumen o resten nombres que ocupen diversos bytes. Lesinstruccions de rotació poden aïllar un bit de la memòria o dun registre posant-ho en el Cf.PF (Parity Flag, bit 2): Si val un, el resultat té paritat parell, és a dir, un nombre parell de bits a1. Aquest indicador es pot utilitzar per detectar errors en transmissions.AF (Auxiliary carry Flag, bit 4): Si val 1, indica que va haver-hi "arrossegament" o "préstec" delnibble (quatre bits) menys significatiu al nibble més significatiu. Aquest indicador susa amb lesinstruccions dajust decimal.ZF (Zero Flag, bit 6): Si aquest indicador val 1, el resultat de loperació és zero.SF (Sign Flag, bit 7): Reflecteix el bit més significatiu del resultat. Com els nombres negatius esrepresenten en la notació de complement a dos, aquest bit representa el signe: 0 si és positiu,1 si és negatiu.TF (Trap Flag, bit 8): Si val 1, el processador està en mode pas a pas. D’aquesta manera, la CPUautomàticament genera una interrupció interna després de cada instrucció, permetentinspeccionar els resultats del programa a mesura que sexecuta instrucció per instrucció.IF (Interrupt Flag, bit 9): Si val 1, la CPU reconeix comandes dinterrupció externesenmascarables (pel pin INTR). Si val 0, no es reconeixen tals interrupcions. Les interrupcions noenmascarables i les internes sempre es reconeixen independentment del valor de IF.
  5. 5. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware/© Roger Casadejús Pérez | ExatiendaDF (Direction Flag, bit 10): Si val 1, les instruccions amb cadenes patiran "acte-decrement",això és, es processaran les cadenes des de les adreces més altes de memòria cap a les mésbaixes. Si val 0, hi haurà "acte-increment", la qual cosa vol dir que les cadenes es processarande "esquerra a dreta".OF (Overflow flag, bit 11): Si val 1, va haver-hi un desbordament en una operació aritmèticaamb signe, això és, un dígit significatiu es va perdre a causa que grandària del resultat és majorque la grandària de la destinació.SISTEMA DE CONTROL DE LA UNITAT DEXECUCIÓÉs lencarregat de desxifrar les instruccions que li envia la cua i enviar-li les ordres a la unitataritmètica i lògica segons una taula que té emmagatzemada en ROM anomenada CROM(Control Read Only Memory).CUA DINSTRUCCIONSEmmagatzema les instruccions per ser executades. La cua es carrega quan el bus estàdesocupat, daquesta manera saconsegueix una major eficiència del mateix. La cua del 8086 té6 bytes i es carrega de dos bytes per vegada (a causa de la grandària del bus de dades), mentreque el del 8088 té quatre bytes. Aquesta estructura té rendiment òptim quan no es realitzensalts, ja que en aquest cas caldria buidar la cua (perquè no es van a executar les instruccionsque van després del salt) i tornar-la a carregar amb instruccions que es troben a partir de ladirecció a on se salta.A causa daixò les instruccions de salt són (després de multiplicacions i divisions) les més lentesdaquest microprocessador.Registres de la unitat dinterfície amb el bus:El programador pot accedir a cinc registres de 16 bits cadascun, sent quatre dells registres desegment i el restant el punter dinstrucció (IP).Els registres de segment són:CS: Registre de segment de codi.DS: Registre de segment de dades.ÉS: Registre de segment extra.SS: Registre de segment de pila.La utilització daquests registres sexplica més endavant, en la secció que tracta ladreçament amemòria.Lògica de control del bus:La comesa daquest bloc és poder unir els blocs anteriorment esmentats amb el món exterior,és a dir, la memòria i els perifèrics.El 8088 té un bus de dades extern reduït de 8 bits. La raó per a això era preveure la continuïtatentre el 8086 i els antics processadors de 8 bits, com el 8080 i el 8085. Tenint la mateixagrandària del bus (així com similars requeriments de control i temps), el 8088, que és
  6. 6. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware/© Roger Casadejús Pérez | Exatiendainternament un processador de 16 bits, pot reemplaçar als microprocessadors ja nomenats enun sistema ja existent.El 8088 té molts senyals en comú amb el 8085, particularment les associades amb la forma enquè les dades i les adreces estan multiplexades, encara que el 8088 no produeix els seus propissenyals de rellotge com ho fa el 8085 (necessita un xip de suport anomenat 8284, que ésdiferent del 8224 que necessitava el microprocessador 8080). El 8088 i el 8085 segueixen elmateix esquema de compartir els terminals corresponents als 8 bits més baixos del busdadreces amb els 8 bits del bus de dades, de manera que sestalvien 8 terminals per a altresfuncions del microprocessador. El 8086 comparteix els 16 bits del bus de dades amb els 16 mésbaixos del bus dadreces.El 8085 i el 8088 poden, de fet, dirigir directament els mateixos xips controladors de perifèrics.Les recerques de maquinari per a sistemes basats en el 8080 o el 8085 són, en la seva majoria,aplicables al 8088.En tot el recentment explicat es va basar lèxit del 8088.El 8086/8088 pot connectar-se al circuit de dues formes diferents: la manera màxima i lamanera mínima. La manera queda determinat en posar un determinat terminal (anomenatMN/MX) a terra o a la tensió dalimentació.El 8086/8088 ha destar en manera màxima si es desitja treballar en col·laboració amb elProcessador de Dades Numèric 8087 i/o el Processador dEntrada/Sortida 8089 (daquí esdesprèn que en la IBM PC el 8088 està en manera màxima). En aquesta manera el 8086/8088depèn daltres xips addicionals com el Controlador de Bus 8288 per generar el conjunt completde senyals del bus de control. La manera mínima permet al 8086/8088 treballar duna formamés autònoma (per a circuits més senzills) en una manera gairebé idèntica almicroprocessador 8085.Els 40 pins del 8088 en manera mínima tenen les següents funcions:1.- GND (Massa)2.- A14 (Bus dadreces)3.- A13 (Bus dadreces)4.- A12 (Bus dadreces)5.- A11 (Bus dadreces)6.- A10 (Bus dadreces)7.- A9 (Bus dadreces)8.- A8 (Bus dadreces)9.- AD7 (Bus dadreces i dades)10.- AD6 (Bus dadreces i dades)11.- AD5 (Bus dadreces i dades)12.- AD4 (Bus dadreces i dades)13.- AD3 (Bus dadreces i dades)14.- AD2 (Bus dadreces i dades)15.- AD1 (Bus dadreces i dades)16.- AD0 (Bus dadreces i dades)
  7. 7. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware/© Roger Casadejús Pérez | Exatienda17.- NMI (Entrada dinterrupció no enmascarable)18.- INTR (Entrada dinterrupció enmascarable)19.- CLK (Entrada de rellotge generada pel 8284)20.- GND (Massa)21.- RESET (Per inicialitzar el 8088)22.- READY (Per sincronitzar perifèrics i memòries lentes)23.- /TEST24.- /INTA (El 8088 indica que va reconèixer la interrupció)25.- ALE (Quan està a 1 indica que surten adreces per AD, en cas contrari, és el bus de dades)26.- /DONIN (Data enable: quan val zero ha dhabilitar els transceptors 8286 i 8287 (esconnecta al pin de "output enable"), això serveix perquè no es barregin les dades i les adreces).27.- DT/R (Data transmit/receive: es connecta al pin dadreça dels xips recentment indicats).28.- IO/M (Si val 1: operacions amb ports, si val 0: operacions amb la memòria)29.- /WR (Quan val zero hi ha una escriptura)30.- HLDA (Hold Acknowledge: el 8088 reconeix el HOLD)31.- HOLD (Indica que un altre integrat vol ensenyorir-se del control dels busos, generalmentsusa per DMA o accés directe a memòria).32.- /RD (Quan val zero hi ha una lectura)33.- MN/MX (Quan aquesta entrada està en estat alt, el 8088 està en manera mínima, en cascontrari està en manera màxima)34.- /SSO (Juntament amb IO/M i DT/R aquesta sortida serveix per determinar estats del 8088)35.- A19/S6 (Bus dadreces/bit destat)36.- A18/S5 (Bus dadreces/bit destat)37.- A17/S4 (Bus dadreces/bit destat)38.- A16/S3 (Bus dadreces/bit destat)39.- A15 (Bus dadreces)40.- Vcc (+5V)En manera màxima (quan saplica +5V al pin 33) hi ha alguns pins que canvien de significat:24.- QS1: Estat de la cua dinstruccions (bit 1).25.- QS0: Estat de la cua dinstruccions (bit 0).26.- S0: Bit destat 0.27.- S1: Bit destat 1.28.- S2: Bit destat 2.
  8. 8. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware/© Roger Casadejús Pérez | Exatienda29.- /LOCK: Quan val zero indica a altres controladors del bus (altres microprocessadors o undispositiu de DMA) que no han de guanyar el control del bus. Sactiva posant-se a zero quanuna instrucció té el prefix LOCK.30.- RQ/GT1: És bidireccional i té la mateixa funció que HOLD/HLDA en manera mínima.31.- RQ/GT0: Com RQ/GT1 però té major prioritat.34.- Aquesta sortida sempre està a un.Per ser aquest microprocessador molt més complex que el 8085, té més bits destat que elrecentment esmentat. A títol informatiu es detallen els bits destat:S2IO/M S1DT/R S0/SSOSignificat1000Accés a codi (instruccions)1001Lectura de memòria1010Escriptura a memòria1011
  9. 9. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware/© Roger Casadejús Pérez | ExatiendaBus passiu (no fa res)0100Reconeixement dinterrupció0101Lectura de port dentrada/sortida0110Escriptura a port dI/S0111Estat de parada (Halt)QS1QS0Significat0
  10. 10. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware/© Roger Casadejús Pérez | Exatienda0No hi ha operació01Primer byte del codi doperació10Es buida la cua dinstruccions11Següent byte de la instruccióManeres dadreçament del 8086/8088:Aquests processadors tenen 27 maneres dadreçament (una quantitat bastant més gran queels microprocessadors anteriors) o regles per localitzar un operand duna instrucció.Tres dells són comuns a microprocessadors anteriors: adreçament immediat (loperand és unnombre que es troba en la mateixa instrucció), adreçament a registre (loperand és un registredel microprocessador) i adreçament inherent (loperand està implícit en la instrucció, perexemple, en la multiplicació un dels operands sempre és lacumulador).La resta de les maneres serveix per localitzar un operand en memòria. Per facilitar lexplicaciódaquestes maneres, es poden resumir de la següent manera:Han de sumar-se quatre quantitats: 1) adreça de segment, 2) adreça base, 3) una quantitatíndex i 4) un desplaçament.Ladreça de segment semmagatzema en el registre de segment (DS, ÉS, SS o CS). En la properasecció sindica la forma en què es fa això. Ara com ara nhi ha prou amb saber que el contingutdel registre de segment es multiplica per 16 abans dutilitzar-se per obtenir ladreça real.El registre de segmentació sempre susa per referenciar a memòria.La base semmagatzema en el registre base (BX o BP). Líndex semmagatzema en el registreíndex (SI o DIO). Qualsevol daquestes dues quantitats, la suma de les dues o cap, podenutilitzar-se per calcular ladreça real, però no poden sumar-se dues bases o dos índexs.Els registres restants (AX, CX, DX i SP) no poden utilitzar-se per a adreçament indirecte. Elprogramador pot utilitzar tant la base com líndex per gestionar certes coses, tals com amatrius de dues dimensions, o estructures internes a altres estructures, esquemes quesutilitzen en les pràctiques comunes de programació. La base i líndex són variables odinàmiques, ja que estan emmagatzemades en registres de la CPU. És a dir, poden modificar-se fàcilment mentre sexecuta un programa.
  11. 11. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware/© Roger Casadejús Pérez | ExatiendaA més del segment, base i índex, susa un desplaçament de 16 bits, 8 bits o 0 bits (sensedesplaçament). Aquesta és una quantitat estàtica que es fixa al temps dassemblat (pas de codifont a codi de màquina) i no pot canviar-se durant lexecució del programa (tret que elprograma sescrigui sobre si mateix, la qual cosa constitueix una pràctica no aconsellada).Tot això genera les 24 maneres dadreçament a memòria que es veuen a continuació:Registre indirecte: 1) [BX], 2) [DIGUES]. 3) [SI].Basat: 4) desp8[BX], 5) desp8[BP], 6) desp16[BX], 7) desp16[BP].Indexat: 8) desp8[SI], 9) desp8[DIGUES], 10) desp16[SI], 11) desp16[DIGUES].Basat-indexat: 12) [BX+SI], 13) [BX+VAIG DONAR], 14) [BP+SI], 15) [BX+VAIG DONAR].Basat-indexat amb desplaçament: 16) desp8[BX+SI], 17) desp8[BX+VAIG DONAR], 18)desp8[BP+SI], 19) desp8[BX+VAIG DONAR], 20) desp16[BX+SI], 21) desp16[BX+VAIG DONAR],22) desp16[BP+SI], 23) desp16[BX+VAIG DONAR].Directe: 24) [desp16].Aquí desp8 indica desplaçament de 8 bits i desp16 indica desplaçament de 16 bits. Altrescombinacions no estan implementades en la CPU i generaran error en voler assemblar, perexemple, ADD CL,[DX+SI].Lassemblador genera el tipus de desplaçament més apropiat (0, 8 o 16 bits) depenent delvalor que tingui la constant: si val zero sutilitza el primer cas, si val entre -128 i 127 sutilitza elsegon, i en un altre cas sutilitza el tercer. Notis que [BP] sense desplaçament no existeix. Enassemblar una instrucció com, per exemple, MOV AL,[BP], es generarà un desplaçament de 8bits amb valor zero. Aquesta instrucció ocupa tres bytes, mentre que MOV AL,[SI] ocupa dos,perquè no necessita el desplaçament.Aquestes maneres dadreçament produeixen alguns inconvenients en el 8086/8088. La CPUgasta temps calculant una adreça composta de diverses quantitats. Principalment això es deual fet que el càlcul dadreces està programat en microcodi (dins de la CROM del sistema decontrol de la unitat dexecució). En les següents versions (a partir del 80186/80188) aquestscàlculs estan cablejats en la màquina i, per tant, costa molt menys temps el realitzar-los.Vegem un exemple: MOV AL, ÉS:[BX+SI+6]. En aquest cas loperand de lesquerra téadreçament a registre mentre que el de la dreta indica una posició de memòria. Posant valorsnumèrics, suposem que els valors actuals dels registres siguin: ÉS = 3200h, BX = 200h, SI = 38h.Com es va apuntar més amunt ladreça real de memòria serà:ÉS * 10h + BX + SI + 6 = 3200h * 10h + 200h + 38h + 6 = 3223EhEstructura de memòria de segmentació: Com sha esmentat anteriorment, el 8086/8088 usaun esquema enginyós anomenat segmentació, per accedir correctament a un megaoctetcomplet de memòria, amb referències dadreces de només 16 bits.Vegem com funciona. Qualsevol adreça té dues parts, cadascuna de les quals és una quantitatde 16 bits. Una part és ladreça de segment i laltra és loffset. Al seu torn loffset es compon dediverses parts: un desplaçament (un nombre fix), una base (emmagatzemada en el registrebasi) i un índex (emmagatzemat en el registre índex). Ladreça de segment semmagatzema enun dels quatre registres de segment (CS, DS, ÉS, SS). El processador usa aquestes duesquantitats de 16 bits per calcular ladreça real de 20 bits, segons la següent fórmula:Adreça real = 16 * (adreça del segment) + offset
  12. 12. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware/© Roger Casadejús Pérez | ExatiendaTal com vèiem abans, atès que 16 en decimal és 10 en hexadecimal, multiplicar per aquestvalor és el mateix que córrer el nombre hexadecimal a lesquerra una posició.Hi ha dos registres de segment que tenen usos especials: el microprocessador utilitza elregistre CS (amb loffset emmagatzemat en el punter dinstrucció IP) cada vegada que shadaccedir a un byte dinstrucció de programa, mentre que les instruccions que utilitzen la pila(anomenats a procediments, tornades, interrupcions i les instruccions PUSH i POP) sempreutilitzen el registre de segment SS (amb loffset emmagatzemat en el registre capdavanter depila SP). Daquí els noms que prenen: CS és el segment de codi mentre que SS és el registresegment de pila.Per accedir a dades en la memòria es pot utilitzar qualsevol dels quatre registres de segment,però un dells provoca que la instrucció ocupi un byte menys de memòria: és lanomenatsegment per defecte, per la qual cosa en tant que sigui possible cal tractar dusar aquestsegment per adreçar dades. Aquest segment és el DS (registre de segment de dades) para totsels casos excepte quan sutilitza el registre base BP. En aquest cas el segment per defecte ésSS.Si sutilitza un altre registre, lassemblador genera un byte de prefix corresponent al segmentabans de la instrucció: CS -> 2Eh, DS -> 3Eh, ÉS -> 26h i SS -> 36h.Lús daquests diferents segments significa que hi ha àrees de treball separades per alprograma, pila i les dades. Cada àrea té una grandària màxima de 64 KBytes. Atès que hi haquatre registres de segment, un de programa (CS), un de pila (SS) i dues de dades (segment dedades DS i segment extra ÉS) làrea de treball pot arribar a 4 * 64 KB = 256 KB en un momentdonat suposant que les àrees no se superposen.Si el programa i les dades ocupen menys de 64 KB, la qual cosa es fa és fixar els registres desegment al principi del programa i després sutilitzen diferents offsets per accedir a diferentsposicions de memòria. En cas contrari necessàriament hauran de canviar-se els registres desegment en la part del programa que ho requereixi.Els registres de segment DS, ÉS i SS es carreguen mitjançant les instruccions MOV i POP,mentre que CS es carrega mitjançant transferències de control (salts, cridades, tornades,interrupcions) intersegment.Estructura dinterrupcions del 8086/8088Hi ha tres classes dinterrupció: per maquinari, per programari i internes (a les dues últimestambé les hi crida "excepcions").Veurem primerament el cas dinterrupcions per maquinari: Com es va esmentar anteriorment,el 8086/8088 té dues entrades de petició dinterrupció: NMI i INTR i una de reconeixement(INTA).La gran majoria de les fonts dinterrupció es connecten al pin INTR, ja que això permetemmascarar les interrupcions (el NMI no). Per facilitar aquesta connexió, sutilitza el circuitintegrat controlador dinterrupcions, que té el codi 8259A. Aquest xip té, entre altres coses,vuit potes per a sengles fonts dinterrupció (IRQ0 - IRQ7), vuit per al bus de dades (D0 - D7),una sortida de INTR i una entrada de INTA.Això permet una connexió directa amb el 8088/8086. En ocórrer una petició dalguna de lesvuit fonts, el 8259A activa la pota INTR. En acabar dexecutar la instrucció en curs, elmicroprocessador activa la pota INTA, la qual cosa provoca que el 8259A enviï pel bus de dadesun nombre de vuit bits (de 0 a 255) anomenat tipus dinterrupció (programable per lusuari
  13. 13. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware/© Roger Casadejús Pérez | Exatiendadurant la inicialització del 8259A), que el 8086/8088 utilitza per saber quin és la fontdinterrupció.A continuació busca en la taula de vectors dinterrupció ladreça del manejador dinterrupció(interrupt handler). Això es fa de la següent manera. Es multiplica el tipus dinterrupció perquatre, i es prenen els quatre bytes que es troben a partir d’aquesta direcció. Els dos primersindiquen loffset i els dos últims el segment del manejador, com es mostra a continuació.Posició memòria00020406080A0C0I1012……3FC3FEIPCSIPCSIPCSIPCSIPCS……IPCSTipus dInterrupció
  14. 14. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware/© Roger Casadejús Pérez | Exatienda0001020304FFCom es pot observar, la taula ocupa el primer kilobyte de memòria (256 tipus * 4 bytes/tipus =1024 bytes).Una vegada que es van posar en la pila els flags, CS i IP (en aquest ordre), la CPU fa IF Lesinterrupcions per programari ocorren quan sexecuta la instrucció INT tipus. Daquesta maneraes poden simular interrupcions durant la depuració dun programa.El tipus dinterrupció (per poder buscar el vector en la taula) apareix en la mateixa instrucciócom una constant de 8 bits. Molts sistemes operatius (programes que actuen a maneradinterfície entre els programes dels usuaris (anomenades també "aplicacions") i el maquinaridel sistema) utilitzen aquesta instrucció per a crides a serveis, la qual cosa permet no haver deconèixer ladreça absoluta del servei, permetent canvis en el sistema operatiu sense haver decanviar els programes que ho executen. Daquesta manera, una de les primeres operacionsque ha de realitzar aquest sistema operatiu és inicialitzar la taula de vectors dinterrupció ambels valors apropiats.Existeixen algunes interrupcions predefinides, dús exclusiu del microprocessador, per la qualcosa no és recomanable utilitzar aquests tipus dinterrupció per a interrupcions per maquinario programari.- Tipus 0: Ocorre quan es divideix per zero o el quocient és major que el valor màxim quepermet la destinació.- Tipus 1: Ocorre després dexecutar una instrucció si TF (Trap Flag) val 1. Això permetlexecució dun programa pas a pas, la qual cosa és molt útil per a la depuració de programes.- Tipus 2: Ocorre quan sactiva la pota NMI (interrupció no enmascarable).- Tipus 3: Existeix una instrucció INT que ocupa només un byte, que és la corresponent aaquest tipus. En els programes depuradors (debuggers) (tals com Debug, CodeView, TurboDebugger, etc.), sutilitza aquesta instrucció com a punt de parada (per executar un programafins a una determinada adreça, fixada per lusuari del depurador, sinsereix aquesta instruccióen ladreça corresponent a la parada i es llança lexecució. Quan el CS:IP apunti a aquestaadreça sexecutarà la INT 3, la qual cosa retornarà el control del processador al depurador). Acausa daixò, si se li ordena al depurador que executi el programa fins a una determinadaadreça en ROM (memòria de només lectura) (per exemple, per veure com funciona unasubrutina emmagatzemada en aquesta memòria), lexecució seguirà sense parar allí (ja que lainstrucció INT 3 no es va poder escriure sobre el programa). En el 80386, amb el seu elaboratmaquinari dajuda per a la depuració, es pot posar un punt de parada en ROM.- Tipus 4: Ocorre quan sexecuta la instrucció dinterrupció condicional INTO i el flag OF(Overflow Flag) val 1.Els tipus 5 a 31 (1F en hexadecimal) estan reservats per a interrupcions internes (tambéanomenats "excepcions") de futurs microprocessadors.
  15. 15. Más manuales en: http://www.exabyteinformatica.com/manuales-y-apuntes-freeware/© Roger Casadejús Pérez | ExatiendaPrioritat entre diferents fonts dinterrupció:1) Error de divisió, INT n (no enmascarable), INTO.2) NMI (no enmascarable).3) INTR (enmascarable mitjançant IF).4) Execució pas a pas (enmascarable mitjançant TF).

×