Está en la página 1de 21

Instituto Tecnolgico de Tuxtla Gutirrez.

Lenguajes de Interfaz
Tala Prez Manuel de Jess 10270981

Catedrtico: MC. Walter Torres Robledo

Ingeniera en Sistemas Computacionales.

Unidad 2 Programacin bsica al lenguaje ensamblador.


March 23, 2013

Contents
1 Introduccin al lengua je ensamblador. 2

1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8


2

Importancia de la programacin en lenguaje ensamblador. . . . . El procesador y sus registros internos . . . . . . . . . . . . . . . . La memoria principal (RAM) . . . . . . . . . . . . . . . . . . . . El concepto de interrupciones . . . . . . . . . . . . . . . . . . . . Llamadas a servicios del sistema Modos de direccionamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2 3 6 6 7 7 9 10
11

Proceso de ensamblado y ligado . . . . . . . . . . . . . . . . . . . Desplegado de mensajes en el monitor

Programacin bsica

2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9

Ensamblador (y ligador) a utilizar Ciclos numricos

. . . . . . . . . . . . . . . . .

11 12 12 13 14 14 15 15 15 16 16 17 17 18 18 18
18

. . . . . . . . . . . . . . . . . . . . . . . . . . .

Captura bsica de cadenas . . . . . . . . . . . . . . . . . . . . . . Comparacin y prueba . . . . . . . . . . . . . . . . . . . . . . . . Saltos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ciclos condicionales

Incremento y decremento

Captura de cadenas con formato

Instrucciones aritmticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.10 Manipulacin de la pila 2.12 Instrucciones lgicas

2.11 Obtencin de cadena con representacin decimal

. . . . . . . . . . . . . . . . . . . . . . . . .

2.13 Desplazamiento y rotacin . . . . . . . . . . . . . . . . . . . . . . 2.14 Obtencin de una cadena con la representacin hexadecimal . . . 2.15 Captura y almacenamiento de datos numricos 2.16 Operaciones bsicas sobre archivos de disco
3 Preguntas

. . . . . . . . . .

. . . . . . . . . . . .

Introduccin al lenguaje ensamblador.

1.1

Importancia de la programacin en lenguaje ensamblador.

A pesar del hecho de que codicar en un lenguaje de alto nivel es ms productivo, alguna de las ventajas de codicar en lenguaje ensamblador 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 programa escrito en lenguaje ensamblador requiere considerablemente menos memoria y tiempo de ejecucin que un programa escrito en los conocidos lenguajes de alto nivel, como Pascal y C. [1] El lenguaje ensamblador da a un programador la capacidad de realizar tareas muy tcnicas que seran difciles, si no es que imposibles de realizar en un lenguaje de alto nivel. El conocimiento del lenguaje ensamblador permite una comprensin de la arquitectura de la mquina que ningn lenguaje de alto nivel puede ofrecer. Aunque la mayora de los especialistas en software desarrolla aplicaciones en lenguaje de alto nivel, que son ms fciles de escribir y de dar mantenimiento, una prctica comn es recodicar en lenguaje ensamblador aquellas rutinas que han causado cuellos de botella en el procesamiento. Los programas residentes y rutinas de servicio de interrupcin casi siempre son desarrollados en lenguaje ensamblador. [1] Los lenguajes de alto nivel fueron diseados para eliminar las particularidades de una computadora especca, mientras que un lenguaje ensamblador est diseado para una computadora especca, o, de manera ms correcta, para una familia especca de microprocesadores. Por ltimo, una buena razn para programar en lenguaje ensamblador es que no todos los computadores ofrecen la posibilidad de usar lenguajes de alto nivel. La mayora de los computadores antiguos o los especializados no poseen compiladores de lenguaje de alto nivel, por tanto la nica opcin del programador es usar el lenguaje ensamblador.

1.2

El procesador y sus registros internos

Los registros del procesador se emplean para controlar instrucciones en ejecucin, manejar direccionamiento de memoria y proporcionar capacidad aritmtica. Son reas del almacenamiento dentro del procesador, usadas para almacenar datos con los cuales est trabajando el procesador en un momento dado de la ejecucin de una instruccin.

Figure 1: Diagrama Bloques

Algunas caractersticas de los Registros internos

Cada Procesador contiene cierto nmero de estos. Los registros son la memoria ms rpida de la PC La mayora de las operaciones se realizan en los registros El ancho de los registros (en bits), determina cuanta informacin puede manejar El tamao del procesador est ligado a los registros internos

Los registros internos del procesador se pueden clasicar en 6 tipos diferentes 1. Registros de segmento 2. Registros de propsito general 3. Registros de apuntadores 4. Registros de banderas 5. Registros de Puntero de instruccin 6. Registros de Pila

Los registros de segmento se utilizan para referenciar reas de memoria.

La

plataforma IA-32 permite direccionar la memoria segn el modelo de memoria lineal o el modelo de memoria segmentada. El modelo de memoria lineal presenta todo el espacio de direcciones de la memoria como un espacio contiguo. Todas las instrucciones, los datos y la pila se encuentran en el mismo espacio de direcciones de memoria. Cada posicin de memoria se referencia mediante una direccin especca llamada "direccin lineal". El problema del enfoque anterior consiste en que todos los datos se encuentran mezclados entre s y a la vez distribuidos a lo largo de todo el espacio de direcciones memoria, lo cual hace que su manejo sea engorroso e ineciente. El modelo de memoria segmentada resuelve este problema dividendo el espacio de direcciones en segmentos independientes entre s. Cada segmento contiene un tipo especco de informacin, es decir el cdigo (las instrucciones) se ubica en un segmento, los datos en otro y la pila en un tercer segmento. Las posiciones de memoria en los segmentos se denen por direcciones lgicas. lineal. Los registros de propsito general, como su nombre lo indica, se utilizan en la forma en que lo desee el programador.Cada uno de estos registros se puede direccionar como un registro de 16 bits (AX, BX, CX, DX) o como un registro de 8 bits (AH, AL, BH, BL, CH, CL, DH, DL). Cada uno de los registros de 16 bits est formado por la concatenacin de dos registros de 8 bits: AX = AH:AL, BX = BH:BL, CX = CH:CL y DX = DH:DL, donde el bit 0 del registro AH es el bit 8 del registro AX. Una direccin lgica est compuesta por una direccin de segmento y un desplazamiento. El procesador traduce una direccin lgica a una direccin

Figure 2: Registros Apuntadores Y De ndices

SP (Apuntador de pila): Contiene el desplazamiento con respecto al segmento de pila del tope de la pila del programa. El registro SP se emplea para direccionar datos en la pila cuando se ejecutan las instrucciones push y pop y cuando se llama o se regresa de un procedimiento mediante las instrucciones: call y ret, respectivamente. Registros De Segmentos

CS (Cdigo): Tiene la direccin lgica del segmento en que se encuentra el cdigo de un programa. Si el cdigo ocupa ms de un segmento, contiene la direccin lgica de uno de los segmentos.

DS (Datos):

Tiene la direccin lgica del segmento en que se encuen-

tran los datos estticos de un programa. Si los datos ocupan ms de un segmento, contiene la direccin lgica de uno de los segmentos

1.3

La memoria principal (RAM)

La memoria RAM (Random Access Memory) o memoria de acceso aleatorio de lectura/escritura voltil, se dispone como una  hoja de trabajo para almacenamiento temporal y ejecucin de programas. En la memoria de acceso aleatorio (RAM), las celdas de la memoria pueden accesarse para la transferencia de informacin en cualquier posicin aleatoria deseada. Esto es, el proceso de ubicar una palabra en la memoria es igual y requiere la misma cantidad de tiempo, sin importar la ubicacin fsica de las celdas en la memoria. Existen dos tipos de memorias RAM: Las RAM estticas o SRAM y las RAM dinmicas o DRAM. En una RAM esttica (SRAM) el valor almacenado en una celda se mantiene mediante un par de inversores y, mientras se suministre electricidad, el valor puede mantenerse indenidamente. En una RAM dinmica (DRAM), el valor almacenado en una celda se mantiene como una carga en un condensador. Para acceder a la carga almacenada se usa slo un transistor, tanto para leer el valor como para sobrescribirlo. Debido a que las DRAMs slo usan un transistor por bit de almacenamiento, son mucho ms densas y el precio por bit es menor. En comparacin, las SRAMs requieren entre cuatro y seis transistores por bit. En las DRAMs la carga se almacena en un condensador, por lo tanto no puede mantenerse indenidamente y debe refrescarse peridicamente. [2] Cualquiera que sea el tipo de memoria RAM utilizada, esttica o dinmica, en general se utiliza para almacenar datos a corto plazo porque estos se pierden al retirarles la alimentacin.[3]

1.4

El concepto de interrupciones

Una interrupcin no es ms que un evento que genera la ruptura de la ejecucin de un programa para pasar a ejecutar otro relacionado con el evento causante de la interrupcin. La interrupcin, desde el puto de vista del mecanismo que la activa, puede ser de tipo:

Hardware Software

Las interrupciones de hardware, estn asociadas generalmente a un dispositivo fsico (reloj del sistema, perifrico) y consisten en la activacin de una lnea para dar a conocer a la UCP la Aparicin del evento asociado. [4] Las interrupciones de software consisten en instrucciones cuyo efecto es la ejecucin de una rutina de servicio de interrupcin (se suelen usar para llamadas al sistema operativo porque aslan software de usuario y de sistema). [4]

1.5

Llamadas a servicios del sistema

La interfaz entre el sistema operativo y los programas de usuarios est denida por el conjunto de llamadas al sistema ofrecidas por el sistema operativo. Las llamadas al sistema con que cuenta la interfaz varan de un sistema operativo a otro. Puesto que el mecanismo real para emitir una llamada al sistema depende mucho de la mquina y muchas veces debe de expresarse en cdigo ensamblador, se proporciona una biblioteca de procedimientos que permite hacer llamadas al sistema desde programas en C y tambin desde otros lenguajes. En cierto sentido, efectuar una llamada al sistema es como efectuar una llamada a un procedimiento especial, solo que las llamadas al sistemas entran al kernel y las llamadas a procedimientos no. [6] Se trata de que una aplicacin ejecute una rutina del sistema operativo, con objeto de que la rutina le preste un servicio. Por ejemplo, cuando un programa desea abrir un chero de disco, llama a un servicio del sistema que le permite llevar a cabo sta tarea. Debe tenerse en cuenta que una aplicacin no puede acceder directamente al disco, y debe hacerlo a travs del sistema operativo. [5] Hay dos tipos de instrucciones relacionados con la llamada a servicios del sistema operativo:

Syscall.

Instruccin de llamada a un servicio del sistema operativo, a

travs de su API. Cuando una tarea ejecuta esta instruccin pasa el control al sistema operativo. [5]

Sysret. Instruccin de retorno de un servicio. El sistema operativo ejecuta esta instruccin justo antes de devolver el control a la tarea que solicit el servicio. Entre la ejecucin de las instrucciones Syscall y Sysret, el sistema operativo accede al espacio de memoria de la tarea. Por ejemplo, el sistema operativo escribe en una estructura de datos de la tarea asociada a un chero si la apertura del chero se ha completado con xito o no. Despus de ejecutar la instruccin Sysret, se ejecuta la instruccin siguiente a la Syscall. [5]

1.6

Modos de direccionamiento

Los modos de direccionamiento de un procesador son las diferentes formas de trasformacin del campo de operando de la instruccinn en la direccin del operando. El campo de la operacin de una instruccin especifca la operacin que se debe realizar. sta debe ser ejecutada sobre algunos datos almacenados en registros del computador o en palabras de memoria, es decir, sobre los operadores. El modo de direccionamiento especifca la forma de interpretar la informacin contenida en cada campo de operando para localizar, en base a esta informacin del operando. Los ordenadores utilizan tcnicas de direccionamiento con los siguientes nes:

Dar versatilidad de programacin al usuario proporcionando facilidades

tales como ndices, direccionamientos indirectos, etc., esta versatilidad nos servir para manejar estructuras de datos complejas como vectores, matrices, etc. [7]

Reducir el nmero de bits del campo de operando. Los modos de direc-

cionamiento pordran clasicarse en propios e impropios; en los direccionamientos propios el operando est localizado en una direccin concreta de memoria, mientras que en los impropios en otros lugares tales como los registros del procesador, etc. [7] Implcito: En este modo de direccionamiento no es necesario poner ninguna direccin de forma explcita, ya que en el propio cdigo de operacin se conoce la direccin del (de los) operando(s) al (a los) que se desea acceder o con el (los) que se quiere operar. Supongamos una arquitectura de pila, las operaciones aritmticas no requieren direccionamiento explcito por lo que se ponen como:

add sub

Porque cuando se opera con dos datos en esta arquitectura se sabe que son los dos elementos del tope de la pila: Ejemplo de una pila: 1 2 3 4 5 6 <- pila top() es 1 ntop() es 2 donde top() representa el tope de la pila y ntop() el siguiente al tope de la pila y son estos argumentos con los que se opera al llamar a una orden en concreto. Inmediato: En la instruccin est incluido directamente el operando. este modo el operando es especicado en la instruccin misma. En otras palabras, una instruccin de modo inmediato tiene un campo de operando en vez de un campo de direccin. [7] El campo del operando contiene el operando actual que se debe utilizar en conjunto con la operacin especicada en la instruccin. Las instrucciones de modo inmediato son tiles para inicializar los registros en un valor constante. Cuando el campo de direccin especica un registro del procesador, la instruccin se dice que est en el modo de registro.[7] Directo: El campo de operando en la instruccin contiene la direccin en memoria donde se encuentra el operando. En este modo la direccin efectiva es igual a la parte de direccin de la instruccin. El operando reside en la memoria y su direccin es dada directamente por el campo de direccin de la instruccin. [7] En una instruccin de tipo ramicacin el campo de direccin especica la direccin de la rama actual. Con este tipo de direccionamiento, la direccin efectiva es contenida en la misma instruccin, tal como los valores de datos inmediatos que son contenidos en la instruccin. Un procesador de 16 bits suma la direccin efectiva al contenido del segmento de datos previamente desplazado en 4 bits para producir la direccin fsica del operando. [7] Indirecto: El campo de operando contiene una direccin de memoria, en la que se encuentra la direccin efectiva del operando. [7] Absoluto: El campo de operando contiene una direccin en memoria, en la que se encuentra la instruccin. De registro: Sirve para especifcar registros. Indirecto mediante registros: En este modo el campo de la direccin de la instruccin da la direccin en donde la direccin efectiva se almacena en la En

memoria. El control localiza la instruccin de la memoria y utiliza su parte de direccin para acceder a la memoria de nuevo para leer una direccin efectiva. Unos pocos modos de direccionamiento requieren que el campo de direccin de la instruccin sea sumado al control de un registro especicado en el procesador. [7] La direccin efectiva en este modo se obtiene del siguiente clculo: sador... Dir. efectiva = Dir. de la parte de la instruccin + Contenido del registro del proce-

1.7

Proceso de ensamblado y ligado

Para crear un programa ejecutable utilizando lenguaje ensamblador es necesario realizar la serie de pasos, conocida como ciclo de desarrollo de programas, que se muestra en la gura.

Figure 3: Proceso para el ciclo de desarrolo de programas

Un ensamblador es el programa que convierte un listado de cdigo fuente, escrito en un chero de texto, en cdigo objeto, es decir, lenguaje mquina (el que nalmente interpretar el procesador) en el que slo le faltan las referencias a rutinas externas. El cdigo fuente es un chero que contiene la secuencia de instrucciones en lenguaje ensamblador que forma el programa, as como ciertas directivas o comandos para el propio ensamblador, que ha sido creado utilizando un editor de texto. El cdigo objeto consta del cdigo en lenguaje mquina y de la informacin necesaria para enlazarlo con otros mdulos objeto. Proceso de ligado Al construir un programa algunos de sus mdulos pueden colocarse en el mismo mdulo fuente y ensamblarse juntos, otros pueden estar

en mdulos diferentes y ser ensamblados separadamente. En cualquier caso, los mdulos objeto resultantes, algunos de los cuales pueden estar agrupados en libreras, deben ser enlazados para formar el mdulo de carga, antes de que se pueda ejecutar el programa. Adems de dar como salida el mdulo de carga, el linker o enlazador imprime un mapa de memoria que indica donde sern cargados los mdulos objeto en la memoria. Despus de crearse el mdulo de carga, ste es cargado por el cargador en la memoria del ordenador y comienza la ejecucin.[8]

Figure 4: Proceso de ligado

1.8

Desplegado de mensajes en el monitor

La pantalla es una malla de posiciones direccionables, en cualquiera de las cuales se puede colocar el cursor. El sistemas proporcionara espacio en la memoria para un are de despliegue de video, o buer. El rea de despliegue monocromtico inicia en la localidad BISOS B000[0]H y permite utilizar 4K bytes de memoria: 2KB disponibles para caracteres y 2K para atributos de cada carcter, como video inverso, intermitencia, intensidad y subrayado. Funciones de la INT 10H del BIOS 02H Fija el cursor 06H Recorre pantalla Funciones de la INT 21H del DOS 02H Despliega en pantalla 09H Despliega pantalla 0AH Entrada desde el teclado 3FH Entrada desde el teclado 40H Despliega en pantalla Table 1: Funciones predenidad de la bios

10

Figure 5: Funcin para mostrar el conjunto de caracteres ASCII

Programacin bsica

2.1

Ensamblador (y ligador) a utilizar

El lenguaje ensamblador, o assembler (assembly language en ingls), es un lenguaje de programacin de bajo nivel para los computadores, microprocesadores, microcontroladores y otros circuitos integrados programables. Implementa una representacin simblica de los cdigos de mquina binarios y otras constantes necesarias para programar una arquitectura dada de CPU y constituye la representacin ms directa del cdigo mquina especco para cada arquitectura legible por un programador.

Caractersticas

El cdigo escrito en lenguaje ensamblador posee una cierta dicultad de ser entendido ya que su estructura se acerca al lenguaje mquina, es decir, es un lenguaje de bajo nivel.

El lenguaje ensamblador es difcilmente portable, es decir, un cdigo escrito para un microprocesador, puede necesitar ser modicado, para poder

11

ser usado en otra mquina distinta. Al cambiar a una mquina con arquitectura diferente, generalmente es necesario reescribirlo completamente.

Con el lenguaje ensamblador se tiene un control muy preciso de las tareas realizadas por un microprocesador por lo que se pueden crear segmentos de cdigo difciles y/o muy inecientes de programar en un lenguaje de alto nivel, ya que, entre otras cosas, en el lenguaje ensamblador se dispone de instrucciones del CPU que generalmente no estn disponibles en los lenguajes de alto nivel.

2.2

Ciclos numricos
LOOP . Esta instruccin trabaCX . El formato general de esta

El lenguaje ensamblador cuenta con una instruccin muy poderosa que permite la programacin de ciclos nitos, la instruccin ja en forma conjunta con el registro contador instruccin es: Mov CX,Numero_Veces Etiqueta: Instrucciones a realizar

Loop

Etiqueta

La instruccin Loop ejecuta las instrucciones que se encuentran entre la Etiqueta: y Loop Etiqueta el numero de veces que indique el campo No_Veces. Por ejemplo, el siguiente grupo de instrucciones incrementa en

el registro

AX ,

esto lo repite 100 veces.

Mov CX,100 ;100 veces repetir: Nombre de la etiqueta Inc AX ;AX

= AX + 1

Loop repetir Regresa a la etiqueta y compara el ciclo La instruccin Loop decrementa el registro CX en cada iteracin y se detiene cuando CX es igual a cero.

2.3

Captura bsica de cadenas

En el lenguaje ensamblador el tipo de dato cadena (string) no est denido, pero para nes de programacin, una cadena es denida como un conjunto de localidades de memoria consecutivas que se reservan bajo el nombre de una variable.
Instrucciones para el manejo de strings

Instrucciones para el manejo de strings El lenguaje ensamblador cuenta con

12

cinco instrucciones para el manejo de cadenas:


MOVS: Mueve un byte o palabra desde una localidad de memoria a otra. LODS : Carga desde la memoria un byte en AL o una palabra en AX. STOS : Almacena el contenido del registro AL o AX en la memoria. CMPS : Compara localidades de memoria de un byte o palabra. SCAS : Compara el contenido de AL o AX con el contenido de alguna localidad

de memoria. Las instrucciones para cadenas trabajan en conjunto con la instruccin CLD, la cual permite establecer que el sentido en el que las cadenas sern procesadas ser de izquierda a derecha. Otra instruccin importante es el prejo de repeticin REP, el cual permite que una instruccin para manejo de cadenas pueda ser repetida un nmero determinado de veces. Los registros ndice juegan un papel importante en el procesamiento de cadenas de datos, el par de registros CS:SI indican la direccin de la cadena original que ser procesada, y el par ES:DI contienen la direccin donde las cadenas pueden ser almacenadas.

2.4

Comparacin y prueba
8086:
CMP y TEST. Su fun-

Existen dos instrucciones especiales en el microprocesador

CMP (Comparar) compara si dos valores son iguales o diferentes.

cionamiento es similar al de la instruccin SUB (restar), slo que no modica el operando de destino, solamente modica las banderas de signo (SF), de cero (ZF) y de acarreo (CF).

Por ejemplo: CMP AX,33 Esta instruccin compara si el valor almacenado en el registro AX es igual que el valor 33 en decimal. Por otro lado, la instruccin TEST realiza la operacin AND de los operandos especicados sin que el resultado se almacene en algn registro, modicando nicamente ciertas banderas. Su aplicacin ms comn es la de probar si algn bit es cero. Por ejemplo: Test AL,1 Esta instruccin prueba si el bit menos signicativo de AL es 1 y Test AL,128 prueba si el bit ms signicativo de AL es 1. Por lo general estas instrucciones van seguidas de alguna de las instrucciones de salto.

13

2.5

Saltos

En los lenguajes de alto nivel como Pascal y C, los programadores pueden controlar el ujo de los programas por medio de instrucciones condicionales compuestas; por ejemplo, en Pascal el siguiente conjunto de instrucciones permite tomar una decisin sobre el ujo del programa:

IF A = 5then
write(?Error...?); else A:=A+1; En contraste, el lenguaje ensamblador no proporciona tales mecanismos. Este tipo de decisiones se realizan por medio de una serie de instrucciones que van teniendo un signicado consecutivo; es decir, el efecto de la instruccin siguiente depende del resultado anterior. El lenguaje ensamblador proporciona un conjunto de instrucciones conocidas como instrucciones de salto. Estas instrucciones son utilizadas en conjunto con instrucciones de comparacin y prueba para determinar el ujo del programa.

2.6

Ciclos condicionales

Existen dos tipos de instrucciones de salto: las instrucciones de salto condicional y las de salto incondicional. Las instrucciones de salto condicional, revisan si ha ocurrido alguna situacin para poder transferir el control del programa a otra seccin, por ejemplo: CMP AX,0

JEotro

........... ........... otro : .......... .......... End


En este ejemplo, la instruccin JE (Salta si es igual) revisa si la prueba implcita en la instruccin anterior result positiva, es decir, si la comparacin de AX con 0 fue cierta. En caso de que AX sea igual a 0, JE transere el control del programa a las instrucciones que se encuentran despus de la etiqueta "otro". En caso contrario ejecuta las instrucciones siguientes a JE.
La siguiente es una lista de las instrucciones de salto condicional y su

14

descripcin:

JA o JNBE: Salta si est arriba o salta si no est por debajo o si no es igual (jump if above or jump if not below or equal). El salto se efecta si la bandera de CF=0 o si la bandera ZF=0. JAE o JNB: Salta si est arriba o es igual o salta si no est por debajo (jump if above or equal or jump if not below). El salto se efecta si CF=0. JB o JNAE: Salta si est por debajo o salta si no est por arriba o es igual (jump if below or jump if not above or equal). El salto se efecta si CF=1. JBE o JNA: Salta si est por debajo o es igual o salta si no est por arriba (jump if below or equal or jump if not above). El salto se efecta si CF=1 o ZF=1. JE o JZ: Salta si es igual o salta si es cero (jump if equal or jump if zero). El salto se efecta si ZF=1. JNE o JNZ: Salta si no es igual o salta si no es cero (jump if not equal or jump if not zero). El salto se efecta si ZF=0. JG o JNLE: Salta si es mayor o salta si no es menor o igual (jump if greater or jump if not less or equal). El salto se efecta si ZF=0 u OF=SF. JGE o JNL: Salta si es mayor o igual o salta si no es menor (jump if greater or equal or jump if not less). El salto se efecta si SF=OF.

2.7
istros.

Incremento y decremento

Las instrucciones INC y DEC permiten incrementar los contenidos de los regEjemplos: INC AX ;AX=AX+1 INC VAR1 ;VAR1=VAR1+1 DEC AX ;AX=AX-1 DEC VAR1 ;VAR1=VAR1-1 y de las variables almacenadas en memoria.

2.8 2.9

Captura de cadenas con formato Instrucciones aritmticas


8
instrucciones aritmticas bsicas: ADD (Suma), SUB (Resta), MUL

Existen

(Multiplicacin sin signo), DIV (Divisin sin signo), IMUL (Multiplicacin con signo), IDIV (Divisin con signo), INC (Incremento unitario) y DEC (Decre-

15

mento unitario). Las instrucciones ADD y SUB permiten realizar sumas y restas sencillas y tienen el siguiente formato:

ADD Destino, Fuente SUB Destino, Fuente

Ejemplos: ADD AX,BX ;AX=AX+BX ADD AX,10 ;AX=AX+10 SUB AX,BX ;AX=AX-BX SUB AX,10 ;AX=AX-10 En las operaciones de suma y resta el resultado siempre es almacenado en el operando de destino, el cual puede ser un registro o una variable.

2.10

Manipulacin de la pila

La pila es un grupo de localidades de memoria que se reservan con la nalidad de proporcionar un espacio para el almacenamiento temporal de informacin. La pila de los programas es del tipo LIFO (Last In First Out, Ultimo en entrar, Primero en salir). Para controlar la pila el microprocesador cuenta con dos instrucciones bsicas:
Push (Meter) y Pop (sacar). El formato de estas instrucciones es el siguiente:

Push operando Pop operando Cuando se ejecuta la instruccin Push, el contenido del operando se almacena en la ultima posicin de la pila. Por ejemplo: Si AX se carga previamente con el valor 5, una instruccin Push AX almacenara el valor 5 en la ultima posicin de la pila. Por otro lado la instruccin Pop saca el ltimo dato almacenado en la pila y lo coloca en el operando. Siguiendo el ejemplo anterior, la instruccin Pop BX obtendra el nmero 5 y lo almacenara en el registro BX.

2.11

Obtencin de cadena con representacin decimal


1, 527
en los tres formatos decimales:

En las computadoras el formato natural para la aritmtica es el binario. La representacin del nmero decimal

ASCII

31 35 32 37

(cuatro bytes)

16

BCD desempaquetado BCD empaquetado

01 05 02 07

(cuatro bytes)

15 27

(dos bytes)

El procesador realiza aritmtica en valores ASCII y BCD un dgito a la vez. Ya que los datos son ingresados desde un teclado signican que estn en formato ASCII, la representacin en memoria de un nmero decimal ingresado tal como 1234 es 31323334H. Pero realizar aritmetica sobre tal nmero implica un tratamiento especial. Las instrucciones AAA y AAS realizan aritmtica de manera directa sobre nmeros ASCCI

2.12

Instrucciones lgicas

Se cuenta con un grupo de instrucciones lgicas que operan a nivel de bit, estas instrucciones son: AND, OR, XOR y NOT. Las instrucciones que se enlistan antes requieren dos operandos, a excepcin de la operacin NOT que slo requiere uno. La operacin OR establece el resultado a 1 si cualquiera de los dos operandos es 1, de lo contrario el resultado ser 0. La instruccin XOR coloca en 0 el resultado si los operandos son iguales, de lo contrario establece 1. Finalmente, la instruccin NOT cambia de estado todos los bits del operando, los unos por ceros y los ceros por unos. La principal aplicacin de estas instrucciones es el enmascaramiento de informacin. La operacin AND nos permite poner a cero cualquier bit de un dato; la operacin OR nos permite poner a uno cualquier bit de un dato y la operacin XOR permite borrar el contenido de algn registro o localidad de memoria, as como para negar algn bit.

2.13

Desplazamiento y rotacin

El microprocesador cuenta con un conjunto de instrucciones que permiten la manipulacin de las posiciones individuales de los bits dentro de un registro o localidad de memoria, estas instrucciones se encuentran divididas en dos grupos: instrucciones de rotacin e instrucciones de desplazamiento (tambin conocidas como instrucciones para corrimientos). Las instrucciones para rotacin son cuatro y nos permiten mover de forma cclica los bits que forman parte de un registro o localidad de memoria, estas instrucciones son ROL, ROR, RCL , RCR.
ROL y ROR funcionan de forma muy semejante; al ejecutar una instruccin ROL, el bit ms signicativo del dato es desplazado hacia la bandera de acarreo

y tambin hacia la posicin del bit memos signicativo, por lo cual todos los

17

bits restantes son rotados o movidos hacia la izquierda. funciona igual, slo que sta trabaja hacia la derecha.

La instruccin ROR

Las instrucciones RCL y RCR permiten la rotacin de los bits de una localidad de memoria o registro, considerando tambin el contenido de la bandera de acarreo. En el caso de RCL, el bit ms signicativo pasa hacia la bandera de acarreo, el bit que se encontraba en la bandera de acarreo pasa al bit menos signicativo y nalmente los bits restantes son rotados hacia la izquierda. La instruccin RCR funciona igual, pero aplica su rotacin hacia la deecha.

2.14 2.15 2.16


3

Obtencin de una cadena con la representacin hexadecimal Captura y almacenamiento de datos numricos Operaciones bsicas sobre archivos de disco

Preguntas

Esta arquitectura fue utilizada en la computadora ENIAC 1. Mencione alguna de las ventajas de codicar en lenguaje ensamblador son: a)El programa slo corre en un CPU b)Es facil escribir programas grandes y complejos c)Proporciona ms control sobre el manejo particular de los requerimientos de hardware.R= (c)

2. En un programa escrito en lenguaje ensamblador requiere considerablemente menos memoria y tiempo de ejecucin que un programa escrito en los conocidos lenguajes de alto nivel. a) verdadero b)falso R= a)verdadero 3. El conocimiento del lenguaje ensamblador permite una comprensin de la arquitectura de la mquina que ningn lenguaje de alto nivel puede ofrecer a) verdadero b)falso R= a)verdadero 4. Los lenguajes de alto nivel fueron diseados para eliminar las particularidades de una computadora especca, mientras que un lenguaje ensamblador est diseado para una computadora especca a) verdadero b)falso. R=a)verdadero 5. La memoria ____________ se dispone como una  hoja de trabajo para almacenamiento temporal y ejecucin de programas.R= RAM (Random Access Memory) 6. 6-Existen dos tipos de memorias RAM: ____________ y las____________ R=Las RAM estticas o SRAM yl as RAM dinmicas o DRAM.

18

7. 7- En una RAM esttica (SRAM) el valor almacenado en una celda se mantiene mediante un par de inversores y, mientras se suministre electricidad, el valor puede mantenerse indenidamente a) verdadero b)falso R=a)verdadero 8. 8.En una memoria_____________el valor almacenado en una celda se mantiene como una carga en un condensador. Para acceder a la carga almacenada se usa slo un transistor, tanto para leer el valor como para sobrescribirlo R= RAM dinmica (DRAM), 9. Una ___________ no es ms que un evento que genera la ruptura de la ejecucin de un programa para pasar a ejecutar otro relacionado con el evento causante de la interrupcin R= interrupcin 10. La __________________ es parte de un computador que se encarga de almacenar la informacin que ste maneje. R=Memoria. 11. El ___________ es un chip que sirve como cerebro del ordenador. R=CPU. 12. La arquitectura de ___________________ es una tcnica de implementacin por la cual se solapa la ejecucin de mltiples instrucciones.R=segmentacin . 13. Las ___________________ son un recurso que reduce los tiempos de espera del procesador por los servicios solicitados a un dispositivo. R=Interrupciones. 14. La arquitectura de computadoras es el diseo conceptual y la estructura operacional fundamental de un sistema de computadora. R=Verdadero 15. La Unidad de Control: Se encargada de Coordinar todos los componentes y los ujos de datos. 16. Se denomina CPU a los circuitos que permiten almacenar y recuperar la informacin. R=Falso 17. La memoria RAM s e puede denir como una memoria rapida y pequea, situada entre la memoria principal y el procesador. R=Falso 18. El modelo de arquitectura de cmputo segmentada fue utilizada en la computadora ENIAC y consiste en una unidad central de proceso que se comunica a travs de un solo bus. R=Falso 19. Es es el diseo conceptual y la estructura operacional fundamental de un sistema de computadora. A)*La arquitectura de Computadoras. B) La ergonomia C) Memoria cach.

19

20. Cul de las siguientes armaciones sobre la memoria cach es cierta? A)* La cach de nivel es la ms pequea y la ms rpida. b) La cach de nivel 1 es la ms grande y ms lenta. C) La cach de nivel 2 es igual de rpida que la memoria principal. D) Se puede producir producir un fallo en la cach de nivel 2 que no se ha producido antes en la de nivel 1. 21. La tecnologa de la RAM se ha dividido en A)*2 . B)1 C)3 D)5 E)Ninguna de las anteriores 22. En que partes esta dividida la RAM .A) Voltil B)Estatica C)*Esttica y dinmica. D)Dinamica. 23. Su sistema de trabajo se basa en la microprogramacin. Consiste en hacer que cada instruccin sea interpretada por un mini programa.A)*CISC B)RISC 24. las comunicaciones entre la CPU y la memoria principal se realizan a travs de __ canales funcionalmente distintos: el de direcciones y el de datos. R:2 25. 1981, solo trabaja con un ancho de banda de __bits. R=16 26. Cuantas unidades conforman la Unidad Central de Procesos (CPU).R=4 27. VESA (Video Electronics Standard Association), trabaja a ___ bits. R=32 28. El actual PCI (Peripheral Component Interconnect), su ancho de banda es de ___ bits.R=64

References
[1] Martnez, Jaime Garza JAOR. Organizacin y arquitectura de computadoras. Estado de Mxico, Mxico.: Pretince Hall; 2000. [2] Canal, Ramn; Elias, Eduard; Gonzlez, Jos; Marcuello, Pedro; Molina, Carlos, Pea, M.A.; Valero, Miguel. Estructura y Diseo de Computadores. Barcelona, 2000. Revert. ISBN: 84-291-2619-8. [3] Blanco niversidad Viejo, de Cecilio.Electrnica Oviedo. ISBN: Digital. U-

84-8317-372-7.

http://books.google.com.mx/books?id=myOXwYAhOwgC&pg=PA209&dq=MEMORIA+RAM&hl=en&s

[4] Gil, Jos ; Pealver, Lourdes; Pont, Ana; Robles, Antonio. Estructura de computadores (vol I); Un recorrido por la Unidad Central de Procesos. Universidad Politcnica de Valencia. ISBN: 84-7721-415-8.

20

[5] Garca, Manuel; Lpez, Jos. Apuntes de Organizacin de Computadoras. Ediciones de la Universidad de Oviedo. 2007. ISBN: 978-84-8317-606-1. [6] Tanenbaum, Andrew S. Sistemas Operativos Modernos; Segunda Edicin. Pearson Educacin. Mxico, 2003. ISBN: 970-26-0315-3. Pag: 976. [6] http://www.infor.uva.es/cllamas/2/2-2.pdf [7] Apuntes de Modos de Direccionamiento. Departamento de Informtica, Universidad de Valladolid. www.infor.uva.es/~bastida/OC/modos.pdf [8] http://www.itescam.edu.mx/principal/sylabus/fpdb/recursos/r86194.PDF

21

También podría gustarte