Los Registros de La CPU

download Los Registros de La CPU

of 10

Transcript of Los Registros de La CPU

  • 7/24/2019 Los Registros de La CPU

    1/10

    Arc-115 (Registros)

    Los registros de la CPU

    El programa se puede llamar debug.com o debug.exe, dependiendo de la versin de DOS quetenga usted. El Debugger puede ser invocado de dos formas: la primera se reduce a digitar enla lnea para comandos debug seguido de la tecla [Enter, ! la segunda consiste en

    proporcionar el nombre del arc"ivo sobre el cual deseamos operar, digitando debug de arc"ivo! posteriormente la tecla [Enter. #niciemos con la primera opcin$ digite:

    C:\Debug [Enter]

    %er& que aparece un guin en la siguiente lnea. Este guin le indica que Debug se encuentraesperando alg'n comando.Digite:

    - r [Enter]

    Donde r es el comando (E)#S*E( del Debug ! su propsito es ex"ibir o modificar uno o m&sregistros de la +-. a sintaxis de este comando es r [(E)#S*(O, donde [(E)#S*(O es la

    notacin de un registro v&lido de la +- ! consta de dos caracteres alfab/ticos siguiendo lanomenclatura de los microprocesadores 010x ! 01x02.

    Las combinaciones de caracteres aceptables son:

    34, 54, +4, D4, DS, ES, +S, SS, S#, D#, #, S, 5 ! 6

    Si no se indica el nombre de un registro, Debug desplegar& el contenido de todos ellos. Si seindica el nombre del registro, el contenido de /ste ser& desplegado en notacin "exadecimal !en la lnea de aba7o aparecer&n dos puntos [:.

    En este momento se tienen dos opciones: cambiar el valor del registro digitando el nuevo valor,o digitar r para de7ar el valor original. %eamos algunos e7emplos:

    Despu/s de "aber digitado el comando 8r8 ! [Enter, como resultado se desplegar& lo siguiente:

    3491111 5491111 +491111 D491111 S966EE 591111 ;91111 D#91111DS9+

  • 7/24/2019 Los Registros de La CPU

    2/10

    Arc-115 (Registros)

    %/ase la 6igura ;.B. a primera lnea muestra lo que contienen algunos registros de la +-.

    a segunda lnea contin'a mostrando el contenido de los registros restantes, as como elestado actual del registro de banderas. 6inalmente, la tercera lnea muestra cu&l es lainstruccin que est& a punto de ser e7ecutada. Observe que despu/s de +S9

  • 7/24/2019 Los Registros de La CPU

    3/10

    Arc-115 (Registros)

    H ES (egistro del segmento extraGH SS (egistro del segmento de pilaGH +S (egistro del segmento de cdigoGH 5 (egistro de apuntadores baseGH S# (egistro ndice fuenteGH D# (egistro ndice destinoG

    H S (egistro del apuntador de la pilaGH # (egistro de apuntador de siguiente instruccinGH 6 (egistro de banderasG

    El registro 34 generalmente se usa para almacenar resultados de operaciones, lectura oescritura desde o "acia los puertos, ! como un &rea de memoria temporal scratc" padG.

    El 54 sirve como registro apuntador base o ndice. El +4 se utiliAa constantemente enoperaciones de iteracin, como un contador que autom&ticamente se incrementa o decrementade acuerdo con el tipo de instruccin usada. El D4 com'nmente se usa como puente para elacceso de datos.El DS es un registro de segmento cu!a funcin es actuar como polica donde se encuentran losdatos. +ualquier dato, !a sea una variable inicialiAada o no, debe encontrarse dentro de este

    segmento. a 'nica excepcin es cuando tenemos programas del tipo .+OI, !a que en /stosslo puede existir un segmento, como se ver& m&s adelante. El registro ES tiene el propsitogeneral de permitir operaciones sobre cadenas, pero tambi/n puede ser una extensin del DS.

    El SS tiene la tarea exclusiva de mane7ar la posicin de memoria donde se encuentra la pilastacJG. Esta es una estructura usada com'nmente para almacenar datos en forma temporal,tanto de un programa como de las operaciones internas de la +. En t/rminos de operacininterna, la +- usa este segmento para almacenar las direcciones de retorno de las llamadas arutinas. El registro de segmentos m&s importante es el +S o segmento de cdigo. Es aqudonde se encuentra el cdigo e7ecutable de cada programa, el cual est& directamente ligado alos diferentes modelos de memoria.

    El registro 5 base pointerG se usa para manipular la pila sin afectar al registro de segmentos

    SS. )eneralmente es mu! 'til cuando se usa la interfaA entre lengua7es de alto nivel ! elensamblador. uesto que dic"a interfaA se basa en el concepto de la pila 5, permite accesarpar&metros pasados sin alterar el registro de segmento SS. os registros S# ! D# son 'tiles paramane7ar bloques de cadenas en memoria, siendo el primero el ndice fuente ! el segundo elndice destino. En otras palabras, S# representa la direccin donde se encuentra la cadena, ! D#la direccin donde ser& copiada.

    El registro S o apuntador de pila stacJ pointerG apunta a un &rea especfica de memoria quesirve para almacenar datos ba7o la estructura #6O last in, first out: 'ltimo en entrar, primero ensalirG, me7or conocida como pila stacJG. El registro # instruction pointerG apunta a la siguienteinstruccin que ser& e7ecutada en memoria. *ome en cuenta siempre que el # apunta a unalocalidad en memoria.

    %eamos qu/ pasa cuando se modifica el contenido en alguno de los registros antesmencionados. En este caso se operar& sobre el registro 54.

    rbx despliega el contenido del registro 54G

    54 1111

    :;< /ste es el nuevo valor del registro, digitado despu/s del signo:G

    r despliega los registros para verificar el cambioG

    3491111 54911;< +491111 D491111 S966EE 591111 S#91111 Dl91111DS9+

  • 7/24/2019 Los Registros de La CPU

    4/10

    Arc-115 (Registros)

    Se comprueba que el cambio fue efectuado.*ambi/n podemos alterar el valor del registro de banderas v/anse los bits del registro en la6igura ;.BG. Dic"o registro es la base para efectuar bifurcaciones basadas en el resultado dealguna operacin.

    Si el resultado de comparar dos registros es cero, entonces, >? sera ?( lo cual significa que

    el resultado de la operacin es ceroG. 3 continuacin se describe el significado de cada bit delregistro de banderas.Todas las banderas apagadas :>% - D# >? >3 O >+Todas las banderas prendidas:O% D> El >) ?( 3+ E +KSignificado de los bits:H OverfloF >%9no "a! desbordamiento$ O%9s lo "a!H Direction -9"acia adelante$ D>9"acia atr&sH #nterrupts D#9desactivadas$ E#9activadas

    H Sign 9positivo$ >)9negativoH ?ero >?9no es cero$ ?(9s es ceroH3uxiliar! +arr! >39no "a! acarreo aux. 3+9"a! acarreo aux.H arit! 19paridad non E9paridad parH +arr! >+9no "a! acarreo +K9 s lo "a!

    El registro de banderas es un registro de ;2 bits, pero como "abr& notado no todos los bits seusan.InterrupcionesDe alguna manera, la +- tiene que estar consciente de lo que sucede a su alrededor. Esta

    8conciencia8 la adquiere mediante las interrupciones. +ada veA que se oprime una tecla, elteclado interrumpe a la +- ! esta detiene lo que est& "aciendo ! pone atencin al teclado.Obtiene el cdigo de la tecla presionada ! lo guarda en una parte de su memoria llamadamemoria intermedia de teclado t!pe a"ead bufferG. Otra interrupcin que ocurreautom&ticamente, aproximadamente ;0 veces por segundo, es la que actualiAa la "ora del da.Esta actualiAacin >O se basa en un relo7 de tiempo real sino en el relo7 que mantiene la + aliniciar sus operaciones.as #nterrupciones ocurren tan seguido que la +- necesita un modo eficiente de mane7arlas.ara ello usa un circuito integrado c"ipG que le permite saber cu&l es la prioridad de cadainterrupcin a nivel de "ardFareG. -na manera de administrar las interrupciones, que se usa enel entorno ISDOS, es mantener una tabla de vectores en la memoria ba7a, empeAando por lalocalidad 1 ! terminando en la

  • 7/24/2019 Los Registros de La CPU

    5/10

    Arc-115 (Registros)

    as interrupciones de DOS DisJ Operating S!stemG son las que se encargan de administrartanto la memoria como el disco. *ambi/n existen interrupciones que mane7an la entrada !salida de informacin.as interrupciones de DOS generalmente se usan cargando el par&metro de la funcindeseada en el registro 3C e invocando la interrupcin

  • 7/24/2019 Los Registros de La CPU

    6/10

    Arc-115 (Registros)

    El programa no contiene todas las facilidades de verificacin que se incluiran normalmente, nitampoco otras funciones$ eso se de7a a su imaginacin ! creatividad. 3lgunas de las adicionesque puede "acerle son:

    +omprobar que la letra EG o IG sea v&lida E9oculta ! I9muestraG. >o permitir letrasque no sean las anteriores.

    %erificar que el arc"ivo exista en disco.

    %erificar que en el nombre del arc"ivo se digite la extensin. ermitir que el programa sea invocado desde la lnea para comandos con los

    par&metros de funcin ! el nombre del arc"ivo.

    e7. ESI-ES E 4.3SI

    >ota: Observe que al invocar al programa desde la lnea para comandos, debemos separar lospar&metros mediante espaciosEG ! 4.3SIG. rimero se describir& el algoritmo ! despu/s elprograma:

    #>#+#3:O>E( E> 53>+O 3 3>*33$(E)->*3( O( 3 6->+#T> 3 (E3#?3($(E)->*3( O( E >OI5(E DE 3(+C#%O$#6 6->+#T> ES 9 PEP *CE>

    O+-*3( E 3(+C#%OESE IOS*(3( E 3(+C#%OE>D#6*E(I#>3

    %eamos por partes el algoritmo:oner en blanco la pantallaExisten varias maneras de poner en blanco la pantalla. a elegida no es de uso mu! com'n,pues se basa en el funcionamiento del "ardFare ! en las modalidades de video. Se usa lainterrupcin ;1 del 5#OS con la funcin 8cambiar modalidad de video8 cambia a 01 4

  • 7/24/2019 Los Registros de La CPU

    7/10

    Arc-115 (Registros)

    el resultado en memoria. El contenido de la memoria intermedia debe estar inicialiAado de lasiguienteforma:

    El primer b!te debe contener el n'mero total de caracteres a leer, inclu!endo el. El segundo b!te contendr& la cantidad actual de caracteres ledos este b!te es

    inicialiAado por la funcin, no necesita "acerlo ustedG. o que dgito ser& puesto en la memoria intermedia bufferG a partir del tercer b!te.

    #6 6->+#T> 9PEP E>*O>+ES O+-*3 E 3(+C#%OESEI-ES*(3 E 3(+C#%OE>D#6

    +uando se digit la funcin a realiAar, /sta fue guardada en una localidad de memoria parapoder recuperarla posteriormente. Si no se "iciera as, podra suceder que la llamada a algunaotra funcin destru!era el contenido del registro que tena el resultado, provocando que elprograma no sepa qu/ "acer. -na veA definida la funcin a realiAar se invoca la funcin =C dela interrupcin ota: *odos los valores de los atributos anteriores est&n en "exadecimal.El registro D4 deber& tener el apuntador o la direccin del nombre del arc"ivo en el formato decadena 3S+##?. -na cadena 3S+##? es una cadena de caracteres que al final tiene un car&cternulo. Es decir, una secuencia de 11.

    rograma:

    c:debug

    a;11

  • 7/24/2019 Los Registros de La CPU

    8/10

    Arc-115 (Registros)

  • 7/24/2019 Los Registros de La CPU

    9/10

    Arc-115 (Registros)

    #impiar Pantalla bajo D$%-# 100

    68$%:0100 !& ax'600

    68$%:0103 !& cx'0

    68$%:0106 !& dx'18(f

    68$%:010$ !& b)'0%

    68$%:010B int 10 68$%:010D int 20

    68$%:010F

    &* +,DB,,."+,/

    # 100

    /, #'00(0

    /, D'#

    /, ,4D 5.4 00%27'FFFF

    +I

    /5 F000:FFF0

    4 +

    11

    9

    '* #4/B,,."+,/

    # 100

    /, #'00(0

    /, D'#

    /, ,4D 5.4 00%27'123(

    +I

    /5 F000:FFF0

    4 +

    11

    9

    iclos en debg#$$Pmp 1*5E 1+* ,i nombre es ./a 1*5mo0 c2+++5mo0 d2+1+*mo0 a32+4

    int *1loop +1*dint *+Realiar cambios ae 1+* 6 i nombre es 6 +d 6.7ejectar el programa con ge 1+* 6 i nombre es 6 +A 6.7Ejectar el programa con ge 1+* 6 i nombre es 6 +A +d 6.7

    Asignar en toda la pantalla la letra A

  • 7/24/2019 Los Registros de La CPU

    10/10

    Arc-115 (Registros)

    mo0 d2B8++ 9asignamos la direcci!n del segmento de pantalla en dmo0 es2d 9 : asigno al segmento etra el 0alor de dmo0 c2;D+ 9Asigno el < de ciclos2es decir 8+ &5=*+++ en 3ea=;D+mo0 si2+ 9inicialio si en + 2>e se encargar de recorrer la letra por pantallaes? 9con esta instrcci!n me dirijo al segmento de pantalla

    mo0 b:te ptr@si2'1 9asigno la letra A ('1) de tipo b:te : apnto a @siadd si2* 9smo si=si* para desplaar los *+++ caracteres por pantallaloop 1+B 9repite c 0eces desde la direcci!n 1+B : dismin:e c 3asta ser=+

    int *+ 9 terminar el programa