Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

UNIDAD 2

No description
by

Georgina Valencia Gutiérrez

on 28 April 2014

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of UNIDAD 2

LENGUAJE DE INTERFAZ
UNIDAD 2: "PROGRAMACIÓN BÁSICA"

2.1 Ensamblador (y ligador) a utilizar
El lenguaje ensamblador, o assembler (assembly language en inglés), es un lenguaje de programación de bajo nivel para los computadores, microprocesadores, microcontroladores y otros circuitos integrados programables. Implementa una representación simbólica de los códigos de máquina binarios y otras constantes necesarias para programar una arquitectura dada de CPU y constituye la representación más directa del código máquina específico para cada arquitectura legible por un programador.

Características:
El código escrito en lenguaje ensamblador posee una cierta dicultad de ser entendido ya que su estructura se acerca al lenguaje máquina, es decir, es un lenguaje de bajo nivel.
El lenguaje ensamblador es difícilmente portable, es decir, un código escrito para un microprocesador, puede necesitar ser modificado para ser usado en otra máquina distinta
2.2 Ciclos numéricos
El lenguaje ensamblador cuenta con una instrucción muy poderosa que permite la programación de ciclos fnitos, la instrucción LOOP. Esta instrucción trabaja en forma conjunta con el registro contador CX. El formato general de esta instrucción es:
Mov CX,Numero_Veces
Etiqueta:
Instrucciones a realizar
Loop
Etiqueta
La instrucción
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 1 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 instrucción Loop decrementa el registro CX en cada iteración y se detiene cuando CX es igual a cero.
2. 3 Captura básica de cadenas
En el lenguaje ensamblador el tipo de dato cadena (string) no está definido, pero para fines de programación, una cadena es definida como un conjunto de localidades de memoria consecutivas que se reservan bajo el nombre de una variable.

Instrucciones para el manejo de strings

El lenguaje ensamblador cuenta con 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 instrucción CLD,
la cual permite establecer que el sentido en el que las cadenas serán procesadas será de izquierda a derecha.
Otra instrucción importante es el prejo de repetición REP, el cual permite que una instrucción para manejo de cadenas pueda ser repetida un número 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 dirección de la cadena original que será procesada, y el par ES:DI contienen la dirección donde las cadenas pueden
ser almacenadas.
2.4 Comparación y prueba
Existen dos instrucciones especiales en el microprocesador 8086: CMP y TEST.
CMP (Comparar) compara si dos valores son iguales o diferentes. Su funcionamiento es similar al de la instrucción SUB (restar), sólo que no modica el operando de destino, solamente modifica las banderas de signo (SF), de cero (ZF) y de acarreo (CF).
Por ejemplo:
CMP AX,33
Esta instrucción compara si el valor almacenado en el registro AX es igual que el valor 33 en decimal.
Por otro lado, la instrucción
TEST
realiza la operación
AND
de los operandos
especificados sin que el resultado se almacene en algún registro, modificando únicamente ciertas banderas. Su aplicación más común es la de probar si algún bit es cero.
Por ejemplo:
Test AL,1
Esta instrucción prueba si el bit menos signicativo de
AL
es 1 y
Test AL,128
prueba si el bit más signicativo de AL es 1.
Por lo general estas instrucciones van seguidas de alguna de las instrucciones de salto.
2.5 Saltos
En los lenguajes de alto nivel como Pascal y C, los programadores pueden controlar el flujo de los programas por medio de instrucciones condicionales compuestas; por ejemplo, en Pascal el siguiente conjunto de instrucciones permite tomar una decisión sobre el ujo del programa:
IFA = 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 instrucción 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 comparación y prueba para determinar el flujo 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 situación para poder transferir el control del programa a otra sección, por ejemplo:
CMP AX,0 JEotro
::::::::::
otro :
::::::::::
End
La instrucción JE (Salta si es igual) revisa si la prueba implícita en la instrucción anterior resultó positiva, si la comparación de AX con 0 fue cierta. En caso de que AX sea igual a 0, JE transfiere el control del programa a las instrucciones que se encuentran después 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 descripción
:
JA o JNBE:
Salta si está arriba o salta si no está por debajo o si no es igual. El salto se efectúa 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. El salto se efectúa si CF=0.
JB o JNAE
: Salta si está por debajo o salta si no está por arriba o es igual. El salto se efectúa si CF=1.
JBE o JNA:
Salta si está por debajo o es igual o salta si no está por arriba. El salto se efectúa si CF=1 o ZF=1.
JE o JZ
: Salta si es igual o salta si es cero. El salto se efectúa si ZF=1.
JNE o JNZ
: Salta si no es igual o salta si no es cero. El salto se efectúa si ZF=0.
JG o JNLE:
Salta si es mayor o salta si no es menor o igual. El salto se efectúa si ZF=0 u OF=SF.
JGE o JNL:
Salta si es mayor o igual o salta si no es menor. El salto se efectúa si SF=OF.
2.7 Incremento y Decremento
Las instrucciones
INC y DEC
permiten incrementar los contenidos de los registros.
Ejemplos:
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 Captura de cadenas con formato
;
Lee cadenas
Lee cadena con teclas de edición
:
;
Entrada
Dl= dirección destino de la cadena
: CL= límite máximo de cadena sin incluír
: terminador nulo
: Si CL=0, LeeCadena no hace nada
:
Salida
Cadena copiada de la entrada
: estándar en el buffer
;
Registros
ninguno

Procedimientos para convertir cadenas de números binarios y viceversa:
PUBLIC
BinSASC, ValCar, AscNum
PUBLIC
BinAscBin, AscBin, CarBas
2.9 Instrucciones aritméticas
Existen 8 instrucciones aritméticas básicas: ADD (Suma), SUB (Resta), MUL (Multiplicación sin signo), DIV (División sin signo), IMUL (Multiplicación con signo), IDIV (División con signo), INC (Incremento unitario) y DEC (Decremento 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 Manipulación 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 información. 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 básicas:
Push
(Meter) y
Pop
(sacar).
El formato de estas instrucciones es el siguiente:
Push operando
Pop operando
Cuando se ejecuta la instrucción
Push
, el contenido del operando se almacena en la ultima posición de la pila.
Por ejemplo:
Si AX se carga previamente con el valor 5, una instrucción Push AX almacenar ía el valor 5 en la ultima posición de la pila.
Por otro lado la instrucción
Pop
saca el último dato almacenado en la pila y lo coloca en el operando.
Siguiendo el ejemplo anterior, la instrucción Pop BX obtendría el número 5 y lo almacenaría en el registro
BX
.
2.11 Obtención de cadena con representación decimal
En las computadoras el formato natural para la aritmética es el binario. La representación del número decimal
1; 527
en los tres formatos decimales:
ASCII 31 35 32 37
(cuatro bytes)
BCD

desempaquetado 01 05 02 07 (cuatro bytes)
BCD

empaquetado 15 27 (dos bytes)
El procesador realiza aritmética en valores
ASCII
y
BCD
un dígito a la vez. Ya que los datos son ingresados desde un teclado signican que están en formato
ASCII
, la representación en memoria de un número decimal ingresado tal como
1234
es
31323334H
. Pero realizar aritmetica sobre tal número implica un tratamiento especial. Las instrucciones
AAA
y
AAS
realizan aritmética de manera directa sobre números
ASCCI
2.12 Instrucciones lógicas
Se cuenta con un grupo de instrucciones lógicas que operan a nivel de bit, estas instrucciones son: AND, OR, XOR y NOT.
Las instrucciones que se enlistan antes requieren dos operandos, a excepción de la operación NOT que sólo requiere uno.
La operación OR establece el resultado a 1 si cualquiera de los dos operandos es 1, de lo contrario el resultado será 0.
La instrucción XOR coloca en 0 el resultado si los operandos son iguales, de lo contrario establece 1.
Finalmente, la instrucción NOT cambia de estado todos los bits del operando, los unos por ceros y los ceros por unos.
La principal aplicación de estas instrucciones es el enmascaramiento de información. La operación AND nos permite poner a cero cualquier bit de un dato; la operación OR nos permite poner a uno cualquier bit de un dato y la operación XOR permite borrar el contenido de algún registro o localidad de memoria, así como para negar algún bit.
2.13 Desplazamiento y rotación
El microprocesador cuenta con un conjunto de instrucciones que permiten la manipulación 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 rotación e instrucciones de desplazamiento (también conocidas como instrucciones para corrimientos).
Las instrucciones para rotación son cuatro y nos permiten mover de forma cíclica 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 instrucción
ROL
, el bit más signicativo del dato es desplazado hacia la bandera de acarreo y también hacia la posición del bit memos signicativo, por lo cual todos los bits restantes son rotados o movidos hacia la izquierda. La instrucción ROR funciona igual, sólo que ésta trabaja hacia la derecha.
Las instrucciones
RCL
y
RCR
permiten la rotación de los bits de una localidad de memoria o registro, considerando también el contenido de la bandera de acarreo. En el caso de
RCL
, el bit más signicativo pasa hacia la bandera de acarreo, el bit que se encontraba en la bandera de acarreo pasa al bit menos significativo y nalmente los bits restantes son rotados hacia la izquierda. La instrucción RCR funciona igual, pero aplica su rotación hacia la deecha.
2.14 Obtención de una cadena con la representación hexadecimal
Los sistemas numéricos son un "mal" necesario en el mundo de la programación, el sistema decimal, es sencillo de manejar y es el que mejor conocemos, pero para la computadora, no significa nada.
El binario es su idioma nativo y es con el que trabaja pero es demasiado tardado y confuso entenderlo e usarlo.
La ventaja es que existe un sistema numérico que combina las ventajas de ambos, su nombre es sistema exadecimal.
Los números exadecimales son 16, se usan las letras de la A a la F para representar del 10 al 15.
El primer paso para convertir un número a sistema hexadecimal es convertirlo a binario.
Para el caso de las celdas de un byte, primero hay que escribir los 8 bits.
2.15 Captura y almacenamiento de datos numéricos
Los viejos procesdores podrían transferir de 1 a 2 bytes a la vez pero los 386 y 486 pueden transferir más de 4 bytes a la vez.
Cuando los bytes son escritos en memoria, estos son almacenados de manera recta, sin embargo cuando las palabras son escritas a la memoria, los dos bytes de cada palabra son almacenadas en orden inverso.
El único modo de trabajar con un bit es acceder al byte en el cual, el bit está contenido. Para hacer esto, hay instrucciones especiales que te permiten examinar y cambiar bits particulares.
En un byte, el orden de los bits, es especialmente importante por esta razón, tenemos un modo estandar de referirnos a cada bit, los bits están numerados desde el 0 al 7.
2.16 Operaciones básicas sobre archivos de disco
Entrada y salida - (Funciones que realiza).
Para diseñar, señalar las funciones que debe realizar un ordenador para ejecutar trabajos de E/S.
Direccionamiento o selección del dispositivo que debe llevar a cabo la operación de E/S.
Transferencia de datos entre el procesador y el dispositivo.
Sincronización y coordinación de las operaciones.
Esta última función es necesaria debido a la deferencia de velocidades entre los dispositivos y la CPU y a la independencia que debe existir entre los periféricos y la CPU (por ejemplo, suelen tener relojes diferentes).
Se define una transferencia elemental de información como la transmisión de una sola unidad de información (normalmente un byte) entre el procesador y el periférico o viceversa.
Full transcript