Está en la página 1de 9

Organizacin de computadoras I Ing.

Monica Vzquez Gutirrez

Mdulo 4: Lenguaje de Programacin en los Procesadores


4.1 Ensambladores y Compiladores Primero identificamos dos clases de lenguaje de programacin: de alto nivel y de bajo nivel. Los de alto nivel codifican comandos poderosos, cada uno de los cuales genera muchas instrucciones en lenguaje mquina. Los de bajo nivel, codifican instrucciones simblicas, cada una de las cuales genera una instruccin en lenguaje mquina. A pesar de que los lenguajes de alto nivel son ms entendibles, algunas ventajas de programar en lenguaje ensamblador son: Proporciona ms control sobre el manejo particular de los requerimientos de HW. Genera mdulos ejecutables ms pequeos y ms compactos. Es ms probable que tenga una ejecucin ms rpida. Sin importar en que lenguaje se programe, de todos modos es un lenguaje simblico que tiene que traducirse a una forma que la computadora pueda ejecutar. Un lenguaje de alto nivel utiliza un compilador para traducir el cdigo fuente en lenguaje mquina (cdigo objeto). Un lenguaje de bajo nivel utiliza un ensamblador para realizar la traduccin. Un programa enlazador para ambos niveles, alto y bajo, completa el proceso al convertir el cdigo objeto en lenguaje ejecutable de mquina. Ejemplos de programas .COM y .EXE, (libro verde pg. 56 y 109) Para un programa .COM, el DOS define de manera automtica una pila, y establece la misma direccin de segmento en los 4 registros de segmento. (pila de 64k bytes).

4.2 MASM y DEBUG MASM


El programa ensamblador convierte un mdulo simblico fuente (archivo) a un archivo objeto hexadecimal. Siempre que se crea un archivo fuente debe tener una extensin ASM. Dando esta extensin a la hora de ser guardado y encerrando entre comillas el nombre del programa. Para crear el archivo fuente se emplea cualquier editor de texto. El programa ensamblador MASM solicita: el nombre del archivo fuente, el nombre del archivo objeto, (el archivo objeto no es ejecutable pero se usa como archivo de entrada al ligador.) el nombre para el listado del archivo y ( contiene la versin ensamblada del archivo fuente y su equivalente a lenguaje mquina hexadecimal.) un nombre de archivo para referencias cruzadas.( incluye todas la etiquetas y la informacin requerida para la referencia cruzada.) el programa ligador lee los archivos objeto, y los liga para formar un solo archivo para ejecucin. Que es el archivo .EXE. si los archivos .EXE son cortos, de menos de 64k bytes de longitud, se puede convertir en un archivo para comando .COM. la ventaja de los .COM es que requiere mucho menos espacio en disco y puede ser ms rpida su ejecucin que uno .EXE. Antes de llamar al ligador se deben ensamblar primero los programas y no deben tener errores. Para llamar al ligador se teclea LINK, y es aqu donde pregunta por los mdulos objeto.

Formatos de programas: .com, .exe y simplificado (.data, .code). DEBUG


El DOS viene con un programa llamado Debug que se utiliza para probar y depurar programas ejecutables. Una caracterstica de Debug es que todo el cdigo y los datos los despliega en formato hexadecimal, as como los datos que se introducen en la memoria. Tambin nos permite ejecutar un programa en modo de paso sencillo (un paso a la vez) de manera que se pueda ver el efecto de cada instruccin sobre las localidades de memoria y los registros. Comandos de Debug: A: ensamblar instrucciones simblicas y pasarlas a cdigo mquina. La operacin es para escribir programas y examinar pequeos segmentos de cdigo. Por omisin la direccin inicial es CS:0100H y el formato es: A[direccin]. Cuando se introduce un programa y se quiere cambiar datos se escribe A y la direccin exacta de donde esta el dato que queremos cambiar: A 104. 1

Organizacin de computadoras I Ing. Monica Vzquez Gutirrez C: compara el contenido de 2 bloques de memoria. El registro por omisin es DS y el formato es: C [rango] [direccin]. Se puede usar de 2 formas: una direccin inicial (desde), una longitud y una direccin inicial (a). Una direccin inicial y una direccin final (desde) y una direccin inicial (a). D: mostrar el contenido de un rea de memoria. Por omisin el registro es DS y el formato es: D [direccin] D [rango]. Formas en que se puede usar: D 200 (despliega 80h bytes empezando en DS:200) D (despliega 80h bytes empezando desde el ltimo despliegue) D CS:150 (despliega 80h bytes empezando en CS:150) D DS:20 L5 (despliega 5 bytes empezando en DS:20) D 300 32C (despliega los bytes desde 300H hasta 32CH) E: introducir datos en memoria, iniciando en una localidad especfica. Por omisin el registro es DS y el formato es: E direccin [lista]. Opciones de uso: E 105 13 3A 21 (ingresa tres bytes empezando en Ds:105H) E CS:211 21 2A (ingresa dos bytes empezando en CS:211H) E 110 cualquiera (ingresa una cadena empezando en DS:110H) *pueden se apstrofos o comillas. F: llena un intervalo de localidades de memoria con valores de una lista. Por omisin es el registro DS y el formato es: F intervalo lista. Opciones de uso: F 214 L21 SAM utiliza una longitud de 21h F 214 234 SAM utiliza un rango, 214 hasta 234h. G: correr el programa ejecutable que se encuentra en memoria. Por omisin es el registro CS y el formato: G [=direccin] direccin [direccin...] N: nombrar un programa. Nombra a un programa o un archivo que tiene la intencin de leer o escribir en disco. Ejemplo: N D:SAM.com. P: proceder o ejecutar un conjunto de instrucciones relacionadas. Efecta una llamada a una subrutina (CALL), iteracin (LOOP), interrupcin (INT) o repite una cadena de instruccin (REP) hasta la siguiente instruccin. El formato es: P [=direccin] [valor]. (=direccin es opcional, si no se pone toma a CS:IP, valor es nmero de instrucciones para preceder con ellas, tambin opcional). Q: salir de Debug. No guarda los archivos. R: mostrar el contenido de uno o ms registros. El formato es: R[nom-registro]. Opciones de uso: R despliega todos los registros. R DX despliega el DX R IP despliega el IP, puede cambiar su valor. RF despliega la configuracin actual de cada bandera. T: rastrear la ejecucin de una instruccin. El registro por omisin es CS:IP y el formato es : T [=direccin] [valor]. Direccin y valor especifican en la direccin y el nmero de instrucciones que va a rastrear. Sin ningn operando solo ejecuta la siguiente instruccin. U: Desensamblar cdigo de mquina y pasarlo a cdigo simblico. Muestra el cdigo de mquina para sus instrucciones en lenguaje ensamblador. El registro por omisin es CS:IP y el formato es: U [direccin] u [rango]. Opciones de uso: U 0100 empieza en CS:100 U empieza desde el ltimo U. U 100 140 desde 100H hasta 140H. W: escribir o grabar un programa en disco. Primero se debe poner nombre al archivo, si no estaba cargado. El registro por omisin es CS y el formato es: W [direccin [unidad sector-inic nm-de-sectores]]. W solo da soporte a los programas .COM. Reglas de los comandos Debug: Debug no distingue entre maysculas y minsculas as que pueden introducir comandos de cualquier manera. Tambin solo se introduce un espacio donde sea necesario separar parmetros. Adems, Debug supone que todos los nmeros estn en hexadecimal. Se especifica segmento y desplazamiento con dos puntos (:), en la forma segmento:desplazamiento. El despliegue de Debug: Consiste en tres partes: A la izquierda est la direccin hexadecimal del ltimo byte de la izquierda que se despliega en la forma segmento:desplazamiento. La parte del centro es la representacin en hexadecimal del rea desplegada. A la derecha se presenta la representacin en ASCII de los bytes que contienen caracteres desplegables, los cuales pueden ayudar a interpretar el rea hexadecimal. Direccin-----------------------------------representacin hexadecimal--------------------------------ASCII 2

Organizacin de computadoras I Ing. Monica Vzquez Gutirrez Cada lnea despliega 16 bytes de memoria. La direccin de la izquierda se refiere solo al ltimo byte de la izquierda, en la forma segmento:desplazamiento. El rea de representacin hexadecimal muestra dos caracteres hexadecimales por cada byte, seguidos por un espacio en blanco por legibilidad. Adems un guin separa a los segundos ocho bytes de los primeros ocho.

Modelos de la memoria MODEL ,libro 4.3 Palabras reservadas Libro verde pag. 50
PALABRAS RESERVADAS Ciertas palabras en lenguaje ensamblador estn reservadas para sus propsitos propios, y son usadas slo bajo condiciones especiales. Por categoras, las palabras reservadas incluyen: a) Instrucciones, como MOV y ADD, que son operaciones que la computadora puede ejecutar. b) Nombres de registros, como AX y AH. c) Directivas, como END , SEGMENT, que se emplean para proporcionar comandos al ensamblador. d) Operadores, como FAR, SIZE, DUP y SEG que se utilizan en expresiones. e) Smbolos predefinidos, como @DATA y @MODEL, que regresan informacin a su programa. El uso de una palabra reservada para un propsito equivocado provoca que el ensamblador genere un mensaje de error.

4.4 Operandos y directivas Tema de tarea.


OPERADORES: un operador proporciona una facilidad para cambiar o analizar operandos durante un ensamblado. Los operadores se dividen en varias categoras: Operadores de clculo: aritmticos, ndice, lgicos, desplazamiento, y nombre de estructura de campo. Operadores de macro: operaciones de E/S que cargan registros y realizan interrupciones, conversiones de informacin ASCII y binaria, aritmtica de palabras mltiples, rutinas de cadenas y divisin por sustraccin. Operaciones de registro: MASK y WIDTH. Operadores relacionales: EQ, GE, GT, LE, LT y NE. Operadores de segmento: OFFSET, SEG y pasar por alto el segmento. Operadores de tipo: HIGH, HIGHWORD, LENGTH, LOW, LOWWORD, PTR, SHORT, SIZE, THIS y TYPE. HIGH: regresa el byte alto de una expresin (izq.). HIGHWORD: regresa la palabra alta de una expresin. LOW: regresa el byte bajo de una expresin (der.). LOWWORD: regresa la palabra baja de una expresin. INDEX: operadores para direccionamiento indexado de la memoria. [Constante], un nmero o nombre inmediato entre corchetes. MOV CL, TABLA [4]. Registro base BX como [BX]. MOV DX, [BX] ; registro base DS:BX Registro ndice DI como [DI] y registro SI como [SI]. Combinado con DS. MOV AX, [SI] ;registro ndice DS:SI Registro ndice combinados. MOV [BX+SI+4], AX ;base + ndice + constante. No se deben combinar dos registros base (bx + bp) o dos registros ndice (di + si). LENGTH: regresa el nmero de entradas definidas por un operador DUP. OPERADORES LGICOS: AND, OR, XOR Y NOT. Usados como operadores no como instrucciones.

Organizacin de computadoras I Ing. Monica Vzquez Gutirrez OFFSET: regresa la direccin de desplazamiento (dir. Relativa del segmento de datos o cdigo)de una variable o de una etiqueta. Formato: OFFSET etiqueta. PTR: es usado en variables de datos y en etiquetas de instruccin para especificar un tamao en un operando ambiguo o para pasar por encima del dato definido para variables. Formato: tipo PTR expresin. SEG: regresa la direccin de segmento en el que una variable o etiqueta especificada es colocada. Formato: SEG variable o etiqueta. SHL: hace un corrimiento a la izquierda de la constante durante un ensamblado. Formato: expresin SHL contador. SHR: hace un corrimiento a la derecha de la constante durante un ensamblado. Formato: expresin SHL contador. SHORT: modifica el atributo NEAR del destino de un JMP que esta entre 127 y 128. Formato: JMP SHORT etiqueta. SIZE: regresa el producto de LENGTH veces TYPE y es til slo si la variable referenciada contiene la entrada DUP. Formato: SIZE variable. TYPE: regresa el nmero de bytes de la variable referenciada. La operacin regresa 1 para una variable de cadena y 0 para una constante. Formato: TYPE variable o etiqueta. Tabla, pag. 493 THIS: crea un operando con segmento y desplazamiento que son iguales a aqullos de la posicin actual del contador. Formato: THIS tipo. Tipo puede ser: BYTE, WORD, DWORD, FWORD, QWORD O TBYTE para variables o NEAR, FAR o PROC para etiquetas. DIRECTIVAS El lenguaje ensamblador permite usar diferentes enunciados que permiten controlar la manera en que un programa ensambla y lista. Estos enunciados actan slo durante el ensamblado de un programa y no generan cdigo ejecutable de mquina. PAGE: designa el nmero mximo de lneas y caracteres para listar en una pgina. Formato: PAGE [longitud] [,ancho] Longitud: lneas por pgina, vara desde 10 hasta 255. ancho: caracteres por lnea, desde 60 hasta 132. Por omisin PAGE toma los valores 50, 80. TITLE: pone un ttulo al programa que se imprime en la lnea 2 de cada pgina del programa. Se pone al inicio del programa. Formato: TITLE texto. SEGMENT: define un segmento (datos, pila o cdigo) para un programa .EXE. Las directivas que se usan son SEGMENT y ENDS. Formato: nombre SEGMENT operando (opciones) ;comentarios ... nombre ENDS El tamao mximo de un segmento es de 64K bytes. SEGMENT tiene tres tipos de opciones: alineacin, combinar y clase: nombre SEGMENT alineacin combinar clase Tipo alineacin: indica el limite en el que inicia el segmento. PARA es el tpico, alinea el segmento con el lmite de un prrafo, de manera que la direccin inicial sea divisible entre 16 (10H). Tipo combinar: indica si se combina el segmento con otros segmentos cuando son enlazados despus de ensamblar. Los tipos son STACK, COMMON, PUBLIC y AT. Stack es para la pila, Common y Public combina de forma separada programas ensamblados cuando se enlazan. Tipo clase: agrupa segmentos cuando se enlazan. Por ejemplo code para el seg. de cdigo, stack para el de pila y data para el de datos. PROC: define procedimientos, dentro de un segmento. Un segmento puede contener cualquier nmero de procedimientos. Formato: Nombre SEGMENT PARA Nomproc PROC FAR ... ;un procedimiento dentro de un segmento. 4

Organizacin de computadoras I Ing. Monica Vzquez Gutirrez nomproc nombre ENDP ENDS

Procedimiento NEAR: es un procedimiento que esta en el mismo segmento que el programa que lo llama. Procedimiento FAR: para un programa .EXE, el PROC principal que es el punto de entrada de la ejecucin debe ser FAR (o sea el primer PROC del programa). Tambin un procedimiento lejano, donde se usa CALL. ASSUME: indica al ensamblador el propsito de cada segmento en el programa. La directiva ASSUME asocia el nombre del segmento de pila con el registro SS, el segmento de datos con el DS y el de cdigo con el CS. Formato: ASSUME SS: nompila, DS: nomsegdatos, CS: nomsegcdigo, [ES: nomsegdatos] END: finaliza un segmento ENDS, y ENDP finaliza un procedimiento. END finaliza todo el programa. Formato: END [nomprog]. COMMENT: me permite poner mltiples lneas de comentarios. El formato: COMMENT * todos los comentarios* GROUP: junta bajo un mismo nombre varios segmentos del mismo tipo. Formato: nombre GROUP nom-seg, nom-seg,... *INCLUDE: hay archivos que contienen secciones de cdigo o macroinstrucciones que varios programas utilizan. Para usar estos archivos en mi programa, sin necesidad de volver a escribir el cdigo los llamo con INCLUDE, en la posicin en el cdigo fuente en donde se necesita la accin que hara el programa. Ejemplo: INCLUDE D:CONVERT.LIB. *LABEL: permite redefinir el atributo de una variable de datos o de una etiqueta de instruccin. Formato: nombre LABEL especificador-de-tipo ORG: contador de localidades para llevar la cuenta de la posicin relativa en un segmento de datos o cdigo. En un inicio el contador de localidades es puesto en 00. Con ORG se puede cambiar el contenido del contador, y con esto, la localidad de los siguientes elementos definidos. Formato: ORG expresin. Expresin: nmero de dos bytes y no debe ser un nombre simblico. EVEN: le indica al ensamblador avanzar su contador de localidad si es necesario, para que el dato o etiqueta definido est alineado con una frontera par de almacenamiento. Haciendo ms rpido el procesamiento el procesadores de 16 0 32 bits. %OUT: le indica al ensamblador que dirija un mensaje al dispositivo de salida estndar (pantalla). Como mensajes de error. Ver directiva .ERR. Formato: #OUT mensaje. *PUBLIC: informa al ensamblador y al enlazador que los smbolos identificados en un ensamblado sern referenciados por otros mdulos enlazados con el actual. Formato: PUBLIC smbolo [, ...] RECORD: permite definir patrones de bits. Formato: nomreg RECORD nomcampo:ancho [, ...] Ejemplo: BITREC RECORD BIT1:3, BIT2:7, BIT3:6 (BIT1 define los primeros 3 bits, BIT2 los siguientes 7, y BIT3 los ltimos 6 de BITREC). WIDTH: regresa el ancho de nmeros de bits en un RECORD o un campo RECORD. *STRUC: facilita la definicin de campos relacionados dentro de una estructura. Formato: nom-estruct STRUC .... nom-estruct ENDS SUBTTL: hace que un subttulo de hasta 60 caracteres se imprima en la lnea 3 de cada pgina de un listado fuente en ensamblador. Formato: SUBTTL texto .XLIST: sirve para discontinuar la impresin de un programa ensamblado. Cuadno los enunciados son comunes a otros programas y no se necesita otro listado, no se imprimen. .LIST: directiva por omisin. Causa que el ensamblado liste el programa fuente. Cuando se usa .XLIST con .LIST reasume el listado. 5

Organizacin de computadoras I Ing. Monica Vzquez Gutirrez Directivas simplificadas de segmento: .MODEL: inicializar el modelo de memoria (tiny, small, medium, compact, large). Genera de forma automtica el enunciado ASSUME. .CODE: define el segmento de cdigo. Para modelos tiny, small y compact el nombre del segmento es _TEXT. .DATA: define un segmento de datos. .STACK: define un segmento de pila. .STARTUP: genera las instrucciones para inicializar los registros de segmento. .EXIT: genera las instrucciones de la INT 21H, funcin 4CH para la salida del programa. .ALPHA: le indica al ensamblador que acomode los segmentos en orden alfabtico. Se coloca al inicio. .FARDATA: define un segmento de datos lejano inicializado. .FARDATA? define un segmento para datos no inicializado. .SEQ: esta directiva al inicio de un programa le indica al ensamblador que deje los segmentos en su secuencia original. Directivas para la definicin de datos: Tema visto, modulo 3, tema 3.4

4.5 Lgica y control de programas


libro verde, pag. 112 Practicas Trasferencia de control a la direccin de una instruccin que no sigue de inmediato de la que se est ejecutando actualmente. Una transferencia de control puede ser hacia delante, para ejecutar una serie de pasos nuevos, o hacia atrs, para volver a ejecutar los mismos pasos. Instrucciones para transferencia de control:

Operaciones de comparacin
CMP TEST JNNN LOOP

Operaciones de transferencia
CALL JMP

Operaciones lgicas
AND NOT OR XOR

Corrimiento y rotacin
SAR/SHR SAL/SHL RCR/ROR RCL/ROL

ETIQUETAS La instruccin JMP, JNNN (salto condicional) y LOOP requieren de un operando que se refiere a la etiqueta de una instruccin. Cuando las etiquetas terminan con dos puntos (:) es para darle un atributo cercano, esto es, la etiqueta esta dentro de un procedimiento en el mismo segmento de cdigo. JMP Salto incondicional. Instruccin usada para transferencia de control, el control se transfiere bajo cualquier circunstancia. Formato: [etiqueta] JMP direccin corta, cercana o lejana. Salto corto hacia atrs (dentro de 128 bytes): A50: ... JMP A50 Un salto cercano es el que excede de 128 a +127 bytes. Salto hacia delante: JMP A90 ... 6

Organizacin de computadoras I Ing. Monica Vzquez Gutirrez A90: Ejemplo de programa con JMP, pg. 115

LOOP Realiza un ciclo un nmero especifico de veces o hasta que se cumpla una condicin particular. Se inicializa el registro CX, LOOP va disminuyendo en 1 el CX hasta llegar a 0, y continua con la siguiente instruccin. La distancia debe ser un salto corto. Formato: [etiqueta] LOOP direccin corta Tarea programa pg. 115, con LOOP CMP Compara dos campos de datos, uno o ambos de los cuales estn contenidos en un registro. CMP resta internamente el segundo operando del primero y pone en uno o en cero las banderas, pero no almacena el resultado. Formato: [etiqueta] CMP {reg/mem}, {reg/mem/inmediato} Afecta las banderas: AF (acarreo auxiliar), CF (acarreo), OF (desbordamiento), PF (paridad), SF (signo) y ZF (cero). Ejemplo: X CMP BX,OO ;compara JX B50 ;si es cero salta a B50 ... ;si no es cero sigue aqui B50: ... INSTRUCCIONES DE SALTO CONDICIONAL Las instrucciones de salto condicional transfieren el control dependiendo de la s configuraciones en el registro banderas. Formato: [etiqueta] Jnnn direccin corta. Un ejemplo de uso similar a LOOP es usar DEC para ir decrementando CX y JNZ para saltar a una etiqueta. DEC CX ;equivalente a LOOP JNZ A20 ... CX se va decrementando en uno cada vez que se repite un ciclo, mientras JNZ prueba la configuracin de la bandera de cero. Cuando CX es diferente de 0, el control pasa a A20 y si CX=0 el control pasa a la siguiente instruccin. Tarea programa pg. 115 con JNZ LLAMADAS A UN PROCEDIMIENTO Un procedimiento llamado (o subrutina) es una seccin de cdigo que realiza una tarea definida y clara. La organizacin de un programa es procedimientos proporciona los beneficios siguientes: Reduce la cantidad de cdigo Fortalece la mejor organizacin del programa Facilita la depuracin del programa Ayuda al mantenimiento progresivo de programas CALL Y RET CALL transfiere el control a un procedimiento llamado RET regresa del procedimiento llamado al procedimiento original que hizo la llamada. Formatos: [etiqueta] CALL procedimiento [etiqueta] RET [inmediato] programa pg. 122, llamadas a procedimientos OPERACIONES BOOLEANAS Las instrucciones para lgica booleana son AND, OR, XOR, TEST y NOT. Que pueden usarse para poner bits en 0 o 1 y para manejar datos ASCII con propsitos aritmticos. Formato: [etiqueta] operacin {reg/mem}, {reg/mem/inmediato} La operacin compara los bits de los dos operandos referenciados y de acuerdo con esto establece las banderas CD, OF, PF, SF y ZF. AND: si ambos bits son 1 = 1, los dems dan 0. OR: si cualquiera o ambos bits son 1 = 1, si ambos bits son cero = 0. 7

Organizacin de computadoras I Ing. Monica Vzquez Gutirrez XOR: si ambos bits son iguales es 0, los dems 1. TEST: establece las banderas como AND, pero no cambia los bits. NOT: invierte los bits. Formato: [etiqueta] NOT {reg/mem}

Ejemplos de instrucciones booleanas pg. 125 CORRIMIENTO DE BITS Las instrucciones de corrimiento pueden realizar las siguientes acciones: Hacer referencia a un registro o direccin de memoria Recorre bits a la izquierda o a la derecha Recorre hasta 8 bits en un byte, 16 bits en una palabra y 32 en una doble (386+) Corrimiento lgico o aritmtico. Formato: [etiqueta] corrimiento {reg/mem}, {CL/inmediato} Inmediato solo puede ser 1, CL puede contener un valor de ms de uno. CORRIMIENTO DE BITS HACIA LA DERECHA SHR y SAR mueven los bits hacia la derecha en el registro designado. SHR: desplazamiento lgico a la derecha 0 el bit de la izquierda se llena con ceros SAR: desplazamiento aritmtico a la derecha S el bit de la izquierda se llena con el bit de signo El bit de la derecha se va a la bandera de acarreo. Estas instrucciones son tiles para obtener mitades y para operaciones de divisin, al terminar una operacin de corrimiento puede utilizar la instruccin JC (salta si hay acarreo) para examinar el bit desplazado a la bandera de acarreo. CORRIMIENTO DE BITS HACIA LA IZQUIERDA SHL y SAL mueven los bits a la izquierda en el registro designado. El bit desplazado ingresa a la bandera de acarreo. Las dos instrucciones hacen lo mismo. SHL: desplazamiento lgico a la izquierda SAL: desplazamiento aritmtico a la izquierda. 0 el bit de la derecha se pone en cero Los corrimientos a la izquierda son tiles para duplicar valores y para multiplicaciones. Despus de una operacin de corrimiento se puede utilizar JC para examinar el bit de signo que ingres a la bandera de acarreo. ROTACIONES DE BITS Formato: [etiqueta:] rotacin {reg/mem}, {CL/inmediato} ROTACION A LA DERECHA DE BITS ROR y RCR desplazan a la derecha los bits en el registro designado. ROR rotacin lgica a la derecha. El bit de la derecha se pasa a la primera posicin de la izq. RCR rotacin a la derecha con acarreo. El bit de la derecha es pasado a la bandera de acarreo, ese bit es el que se toma y se pasa al primer bit de la izq. Ejemplo pg. 130 ROTACION A LA IZQUIERDA DE BITS ROL y RCL desplazan a la izquierda los bits del registro designado. ROL rotacin lgica a la izquierda. El bit de la izquierda se pasa a la primera posicin de la derecha. RCL rotacin a la izquierda con acarreo. El bit de la izquierda es pasado a la bandera de acarreo, ese bit es el que se toma y se pasa al primer bit de la derecha. Ejemplo pg. 130 ORGANIZACIN DE UN PROGRAMA Pasos para escribir un programa en lenguaje ensamblador: 1. Tener una idea clara del problema que el programa va a resolver 2. Esboce sus ideas en trminos generales y planee la lgica general 3. Organice el programa en unidades lgicas tales que, rutinas relacionadas se sigan unas a otras. Procedimientos de alrededor 25 lneas. 4. Utilizar como gua otros programas 8

Organizacin de computadoras I Ing. Monica Vzquez Gutirrez 5. Utilizar comentarios para clarificar lo que se supone hace un procedimiento.

4.6 Interrupciones
Libro verde, pg. 469, capitulo 25 y 26. Una interrupcin es una operacin que suspende la ejecucin de un programa de modo que el sistema pueda realizar una accin especial. La rutina de interrupcin ejecuta y por lo regular regresa el control al procedimiento que fue interrumpido. El cual entonces reasume su ejecucin. El BIOS maneja las interrupciones 00H-1FH y el DOS maneja las interrupciones 20H-3FH. Tabla de servicio de interrupciones La tabla permite el uso de 256 (100H) interrupciones, cada una con un desplazamiento:segmento relativo de 4 bytes en la forma IP:CS. Como existen 256 entradas, la tabla ocupa los primeros 1,024 bytes de memoria, desde 00H hasta 3FFH. Cada direccin de la tabla relaciona a una rutina de BIOS o del DOS para un tipo especfico de interrupcin. Por lo tanto los bytes 0-3 contienen la direccin de la interrupcin 0, los bytes 4-7 para la int. 1, y as sucesivamente. INT 00H INT 01H INT 02H INT 03H INT 04H IP:CS IP:CS IP:CS IP:CS IP:CS 00H 04H 08H 0CH 10H ... Ejecucin de una interrupcin Una interrupcin guarda en la pila el contenido del registro banderas, el CS y el IP. Por ejemplo la INT 05H, la operacin extrae la direccin de 4 bytes de la posicin 0014H y almacena dos bytes en el IP y dos en el CS. La direccin en el CS:IP entonces apunta al inicio de la rutina en el rea del BIOS, que ahora se ejecuta. La interrupcin regresa va una instruccin IRET, que saca de la pila el IP, CS y las banderas y regresa el control al la instruccin que sigue al INT en el programa que se esta ejecutando. Interrupciones externas e internas Una interrupcin externa es provocada por un dispositivo que es externo al procesador. Las dos lneas que pueden sealar interrupciones externas son la lnea de interrupciones no enmascarable (NMI) y la lnea de peticin de interrupciones (INTR). La lnea NMI reporta la memoria y errores de paridad de E/S. Las interrupciones externas no se pueden deshabilitar. La lnea INTR reporta las peticiones desde los dispositivos externos, interrupciones 05H a 0FH, para el cronmetro, el teclado, los puertos seriales, el disco duro, las unidades de disco flexible y los puertos paralelos. Una interrupcin interna ocurre como resultado de una instruccin INT o una operacin que cause desbordamiento, ejecucin en modo de un paso o una peticin para una interrupcin externa, como E/S de disco. 4.7 Desarrollo de Programas Prcticas

También podría gustarte