Sunteți pe pagina 1din 9

ARQUITECTURA DE COMPUTADORES II Resumen del Captulo IV ENSAMBLADORES Y COMPILADORES: Existen dos clases de lenguajes de programacin: de alto nivel y de bajo

nivel. Los programadores que escriben en un lenguaje de alto nivel codifican comandos poderosos cada uno de los cuales puede generar muchas instrucciones en lenguaje mquina. Los programadores que escriben en lenguaje ensamblador codifican instrucciones simblicas, cada una de las cuales genera una instruccin en lenguaje mquina. Algunas de las ventajas de codificar en un lenguaje mquina son: Proporciona ms control sobre el manejo particular de los requerimientos de hardware. Genera mdulos ejecutables ms pequeos y ms compactos. Con mayor probabilidad tiene una ejecucin ms rpida. Un lenguaje de alto nivel utiliza un compilador para traducir el cdigo fuente a lenguaje mquina. Mientras un lenguaje de bajo nivel utiliza un ensamblador para dicha traduccin. Un programa enlazador completa la operacin para ambos niveles. COMENTARIOS EN LENGUAJE ENSAMBLADOR: El uso de comentarios de un programa mejora su claridad, en especial en lenguaje ensamblador. Un comentario empieza con punto y coma (;) y, a su derecha el comentario que sea prudente. PALABRAS RESERVADAS: Existen palabras reservadas para sus propios propsitos y son usadas slo bajo condiciones especiales. Por categoras las palabras reservadas incluyen: Instrucciones : operaciones que la computadora puede ejecutar como ADD y MOV Directivas: se emplean para proporcionar comandos al ensamblador (END Y SEGMENT). Operadores: se utilizan en expresiones como FAR y SIZE. Smbolos Predefinidos: que regresan informacin a su programa como @Data y @Model. IDENTIFICADORES: Un identificador es un nombre que se aplica a elementos del programa. Los dos tipos de identificadores que existen son los nombres, que se refiere a la direccin de un elemento de dato y las etiquetas, que se refiere a la direccin de una instruccin. Un identificador puede utilizar letras del alfabeto, signo de interrogacin, subrayado, signo de pesos, arroba, punto y dgitos; los dos ltimos no pueden ser el primer dgito. La longitud mxima de un identificador es 31 caracteres. 1

INSTRUCCIONES: Un programa en lenguaje ensamblador consiste en un conjunto de enunciados. Los dos tipos de enunciados son: Instrucciones: que el ensamblador traduce a cdigo objeto, tal como MOV. Directivas: que indican al ensamblador que realice una accin especfica, como definir un elemento de dato. El formato general de un enunciado, en donde los corchetes indican una entrada opcional: Identificador: El trmino nombre se aplica al nombre de un elemento o directiva definida, mientras que el trmino etiqueta se aplica al nombre de una instruccin. Operacin: La operacin debe ser codificada, es con mayor frecuencia usada para la definicin de reas de datos y codificacin de instrucciones. Una operacin como DB o DW define un campo, rea de trabajo o constante. Para una instruccin, una operacin como MOV o ADD indica una accin a realizar. Operando: El operando si existe, proporciona informacin para la operacin que acta sobre l. Para un elemento de datos, el operando identifica su valor inicial. NOMBRE COUNTER OPERACIN DB OPERANDO 0 COMENTARIO ;Define un byte [DB] con el valor 0

Para una instruccin, un operando indica en donde realizar la accin. OPERACIN RET INC ADD DIRECTIVAS: Las directivas son diferentes enunciados que permiten controlar la manera en que un programa ensambla y lista. Estos actan slo durante el ensamblado de un programa y no generan cdigo ejecutable de mquina. Directivas para listar: Las directivas PAGE y TITLE ayudan a controlar el formato de un listado de un programa en ensamblador. PAGE: al inicio de un programa, la directiva PAGE designa el nmero mximo de lneas para listar en una pgina y el nmero mximo de caracteres en una lnea. Por ejemplo 60 lneas por pgina y 132 caracteres por lnea: PAGE 60, 132 2 OPERANDO CX AX,12 COMENTARIO ; REGRESA ;Incrementa el registro CX. ;Suma el 12 al registro AX OPERANDO NINGUNO UNO DOS

TITLE: Se emplea al inicio de un programa para hacer un ttulo al programa. Se recomienda despus del ttulo poner un comentario despus del ttulo establecido. SEGMENT: Un programa ensamblado en formato .EXE consiste en uno o ms segmentos. Un segmento de datos define los elementos de datos y un segmento de cdigo proporciona Un segmento de pila define el almacn de la pila, un segmento de datos define los elementos de datos y un segmento de cdigo proporciona un cdigo ejecutable. El enunciado SEGMENT define el inicio de un segmento. El operando de un enunciado SEGEMENT puede tener tres tipos de opciones: alineacin, combinar y clase. Tipo alineacin: la entrada alineacin indica el lmite en el que inicia el segmento. Tipo combinar: la entrada combinar indica si se combina el segmento con otros segmentos cuando son enlazados despus de ensamblar. Los tipos combinar son STACK, COMMON, PUBLIC y la expresin AT. Se utiliza PUBLIC y COMMON en donde tenga el propsito de combinar de forma separada programas ensamblados cuando los enlaza. En otros casos, donde un programa no es combinado con otros, puede omitir la opcin o codificar NONE. Tipos Clase: La entrada clase, encerrada entre apstrofos, es utilizada para agrupar segmentos cuando se enlazan. Generalmente se utiliza la clase `code' para el segmento de cdigos, `data' por segmento de datos y `stack' para el segmento de la pila. PROC : El segmento de cdigo contiene el cdigo ejecutable de un programa. Tambin tiene uno o ms procedimientos, definidos con la directiva PROC. El operando FAR que se escribe quizs despus de la directiva esta relacionado con la ejecucin del programa Y SU INCIO.. La directiva ENDP define el fin del procedimiento antes de un ENDS que define el final del segmento. ASSUME: Un programa utiliza al registro SS para direccionar la pila, al registro DS para direccionar el segmento de datos y al registro CS para direccionar el segmento de cdigo. Para este fin se debe indicar al ensamblador el propsito de cada segmento en el programa. Para ello se utiliza esta directiva de la siguiente manera: OPERACIN ASSUME OPERANDO SS: [Nombre de la pila], DS: NOMSEGDATOS, CS: NOMSEGCODIGO

Un programa termina su ejecucin de la siguiente manera MOV AH, 4CH ; Solicitud de terminacin MOV AL, retcode ; cdigo de regreso (opcional) INT 21H ; SALIR Esta interrupcin utiliza un cdigo de funcin en el registro AH para especificar una accin que ser realizada. DB es el formato preferido para la definicin de cadenas de caracteres, ya que permite cadenas de ms de dos bytes de longitud y las convierte a la secuencia normal de izquierda a derecha.

Los elementos DB son usados para procesar la mitad de registros (AL, BL...). DW para registros completos (AX, BX...) y DD para registros extendidos (EAX, EBX...) RESUMEN DEL CAPITULO V EJECUCIN DE UN PROGRAMA: El programa es slo un archivo de texto realizado en un editor. Es necesario ensamblarlo y luego enlazarlo. El paso de ensamble consiste en la traduccin del cdigo fuente al cdigo objeto y la generacin de un archivo intermedio .OBJ (Objeto). El paso de enlace implica convertir el mdulo .OBJ es un mdulo de cdigo mquina .EXE. El ltimo paso es cargar el programa para su ejecucin. El programa ensamblador de Microsoft es MASM.EXE, mientras que el programa de Borland es TASM.EXE o se puede utilizar el DEBUGGER del DOS. El enlazador (LINK o TLINK) convierte un archivo .OBJ en un archivo .EXE. RESUMEN DEL CAPTULO VI Los registros son conocidos por sus nombres especficos: AX Acumulador BX Registro base CX Registro contador DX Registro de datos DS Registro del segmento de datos ES Registro del segmento extra SS Registro del segmento de pila CS Registro del segmento de cdigo BP Registro de apuntadores base SI Registro ndice fuente DI Registro ndice destino SP Registro del apuntador de la pila IP Registro de apuntador de siguiente instruccin F Registro de banderas

Instrucciones de transferencia: Son utilizadas para mover los contenidos de los operandos. Cada instruccin se puede usar con diferentes modos de direccionamiento. MOV MOVS (MOVSB) (MOVSW) Instrucciones de carga: Son instrucciones especficas de los registros. Son usadas para cargar en algn registro bytes o cadenas de bytes. LODS (LODSB) (LODSW) Carga una cadena LAHF Transfiere el registro AH el contenido de las banderas LDS Cargar el registro de segmento de datos LEA Carga la direccin del operando fuente. LES Carga el registro de segmento extra Instrucciones de la pila: Estas instrucciones permiten el uso de la pila para almacenar y extraer datos. POP Remueve una palabra de la pila. POPF PUSH Agrega a la pila. PUSHF Instrucciones lgicas. Son utilizadas para realizar operaciones lgicas sobre los operandos. AND Conjuncin lgica. NEG NOT Negacin lgica. OR Disyuncin lgica. TEST XOR Disyuncin exclusiva Instrucciones aritmticas. Se usan para realizar operaciones aritmticas sobre los operandos. ADC Adicin con acarreo. ADD SUMA DIV DIVIDE SIN SIGNO

IDIV Divisin con signo MUL Multiplica sin signo. IMUL Multiplicacin de dos operandos con signo. SBB Substraccin con acarreo SUB Substraccin. Instrucciones de salto: Son utilizadas para transferir el flujo del proceso al operando indicado. JMP Salta. JA (JNBE) Bifurca si es mayor o salta si no es menor o igual. JAE (JNBE) Salta si es mayor o igual o salta si no es menor. JB (JNAE) Salta si es mayor o igual o salta si no es menor. JBE (JNA) Salta si es mayor o igual o salta si no es menor. JE (JZ) Salta si es igual o salta si es cero. JNE (JNZ) Salta si es igual o salta si es cero. JG (JNLE) Salta si es mayor o igual o salta si no es menor. JGE (JNL) Salta si es mayor o igual o salta si no es menor. JL (JNGE) Salta si es mayor o igual o salta si no es menor. JLE (JNG) Salta si es mayor o igual o salta si no es menor. JC Salta si hay acarreo o salta si no lo hay JNC Salta si hay acarreo o si no lo hay JNO Si hay desbordamiento o si no lo hay. JNP (JPO) Salta si no hay paridad o salta si la paridad es impar. JNS Salta si el signo es positivo o si es negativo. JO Si hay desbordamiento o si no lo hay. JP (JPE) Si hay paridad o salta si la paridad es par. JS Salta si el signo es positivo o si es negativo. Instrucciones para ciclos: LOOP Transfieren el flujo del proceso, condicional o incondicionalmente, a un destino repitindose esta accin hasta que el contador sea cero. 6

LOOP Repetir el ciclo hasta que se complete. LOOPE Repetir el ciclo mientras sea cero. LOOPNE Repetir el cclo mientras no sea cero. Instrucciones de conteo: Se utilizan para decrementar o incrementar el contenido de los contadores. DEC Decrementa. INC Incrementa Instrucciones de comparacin Son usadas para comparar operandos, afectan al contenido de las banderas. CMP Compara cadenas. CMPS (CMPSB) (CMPSW) Instrucciones de banderas Afectan directamente al contenido de las banderas. CLC Limpia la bandera de acarreo. CLD Limpia la bandera de direccin. CLI Limpia la bandera de interrupcin. CMC Complementa la bandera de acarreo. STC Establece la bandera de acarreo. STD Establece la bandera de direccin STI Establece la bandera de interrupcin Instruccin MOV Propsito: Transferencia de datos entre celdas de memoria, registros y acumulador. Sintaxis: MOV Destino,Fuente Donde Destino es el lugar a donde se movern los datos y fuente es el lugar donde se encuentran dichos datos. Los diferentes movimientos de datos permitidos para esta instruccin son: Destino: memoria. Fuente: acumulador Destino: acumulador. Fuente: memoria Destino: registro de segmento. Fuente: memoria/registro

Destino: memoria/registro. Fuente: registro de segmento Destino: registro. Fuente: registro Destino: registro. Fuente: memoria Destino: memoria. Fuente: registro Destino: registro. Fuente: dato inmediato Destino: memoria. Fuente: dato inmediato Ejemplo: MOV AX,0006h MOV BX,AX MOV AX,4C00h INT 21H Este pequeo programa mueve el valor 0006H al registro AX, luego mueve el contenido de AX (0006h) al registro BX, por ltimo mueve el valor 4C00h al registro AX para terminar la ejecucin con la opcin 4C de la interrupcin 21h. Instruccin INC Propsito: Incrementar el operando. Sintaxis: INC destino La instruccin suma 1 al operando destino y guarda el resultado en el mismo operando destino. Instruccin DEC Propsito: Decrementar el operando Sintaxis: DEC destino Esta operacin resta 1 al operando destino y almacena el nuevo valor en el mismo operando. RESUMEN DEL CAPTULO VII Un programa .COM es ms compacto y pequeo que un programa .EXE contraparte. Este clase de extensin no define una pila o un segmento de datos ni actualiza el registro DS.

Un programa para correr como .COM utiliza ORG 100HY inmediatamente despus del enunciado SEGMENT. El enunciado establece la direccin de desplazamiento al inicio de la ejecucin que sigue al PSP. La omisin de un solo registro .COM puede provocar que un programa falle. [ IDENTIFICADOR ] OPERACION [OPERANDO (S)] [;COMENTARIO]

S-ar putea să vă placă și