Practica 2 Acela

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 17

TECNOLÓGICO DE ESTUDIOS SUPERIORES DE JOCOTITLÁN

INGENIERÍA EN SISTEMAS COMPUTACIONALES

Asignatura: Lenguajes de Interfaz


Docente: M. en C.C. Juan Carlos Ambriz Polo
Fecha de asignación: 19/03/2020
Fecha límite de entrega: 3/04/2020
Alumno: Acela Garcia Valdes
Nota1: Recuerde que las primeras entregas obtiene el 100% del valor, posteriormente por cada clase que
transcurra reduce el 10% esto hasta llegar a la fecha límite, ya que después de dicha fecha no se aceptan
entregas. Lea detenidamente las instrucciones y evite omitir pasos, trabaje sobre este formato de lo
contrario no se recibirá la práctica. La práctica se realizara de forma individual.

Practica 2 Ciclos y Saltos


Objetivo:
Implementar ciclos numéricos así como saltos y saltos condicionales en lenguaje
ensamblador.

Actividad 1: Resumir conceptos principales del tema

Redacte un resumen de los ciclos numéricos así como de los saltos, saltos condicionales,
incrementos, decrementos y comparaciones. Nota2: extensión mínima dos cuartillas.

Ciclos Numéricos
Un ciclo, conocido también como iteración, es la repetición de un proceso un cierto
número de veces hasta que alguna condición se cumpla.
En estos ciclos se utilizan los brincos "condicionales" basados en el estado de las banderas.
Los ciclos predefinidos de ensamblador son los siguientes:
LOOP:
Esta función decremento el valor del registro contador CX, si el valor contenido en CX es
cero ejecuta la siguiente instrucción, en caso contrario transfiere el control a la ubicación
definida por la etiqueta utilizada al momento de declarar el ciclo.

Ejemplo: mov cx, 25 : Número de veces que se repetirá el ciclo, en este caso 25. ciclo:
Etiqueta que se utilizará como referencia para el ciclo loop. int 21h: Instrucción contenida
dentro del ciclo (puede contener más de una instrucción). loop: Ciclo loop que transferirá el
control a la línea de la etiqueta ciclo en caso de que CX no sea cero.

LOOPE:
Esta función decremento el valor del registro contador CX, si el valor contenido en CX es
cero y ZF es diferente de uno ejecuta la siguiente instrucción, en caso contrario transfiere el
control a la ubicación definida por la etiqueta utilizada al momento de declarar el ciclo.
TECNOLÓGICO DE ESTUDIOS SUPERIORES DE JOCOTITLÁN

INGENIERÍA EN SISTEMAS COMPUTACIONALES

Ejemplo: ciclo: Etiqueta que se utilizará como referencia para el ciclo loope. int 21h:
Instrucción contenida dentro del ciclo (puede contener más de una instrucción). loope:
Ciclo loope que transferirá el control a la línea de la etiqueta ciclo en caso de que CX no
sea cero y ZF sea igual a uno.

LOOPNE:
Esta función decrementa el valor del registro contador CX, si el valor contenido en CX es
cero y ZF es diferente de cero ejecuta la siguiente instrucción, en caso contrario transfiere
el control a la ubicación definida por la etiqueta utilizada al momento de declarar el ciclo,
esta es la operación contraria a loope.
Ejemplo: ciclo: Etiqueta que se utilizará como referencia para el ciclo loopne. int 21h:
Instrucción contenida dentro del ciclo (puede contener más de una instrucción). loopne:
Ciclo loopne que transferirá el control a la línea de la etiqueta ciclo en caso de que CX no
sea cero y ZF sea igual a cero.

LOOPZ:
Esta función decrementa el valor del registro contador CX, si el valor contenido en CX es
cero y ZF es diferente de uno ejecuta la siguiente instrucción, en caso contrario transfiere el
control a la ubicación definida por la etiqueta utilizada al momento de declarar el ciclo.
Ejemplo: ciclo: Etiqueta que se utilizará como referencia para el ciclo loopz. int 21h:
Instrucción contenida dentro del ciclo (puede contener más de una instrucción). loopz:
Ciclo loopz que transferirá el control a la línea de la etiqueta ciclo en caso de que CX no
sea cero y ZF sea igual a uno.

LOOPNZ:
Esta función decrementa el valor del registro contador CX, si el valor contenido en CX es
cero y ZF es diferente de cero ejecuta la siguiente instrucción, en caso contrario transfiere
el control a la ubicación definida por la etiqueta utilizada al momento de declarar el ciclo,
esta es la operación contraria a loopz.
Ejemplo: ciclo: Etiqueta que se utilizará como referencia para el ciclo loopnz. int 21h:
Instrucción contenida dentro del ciclo. loopnz: Ciclo loopnz que transferirá el control a la
línea de la etiqueta ciclo en caso de que CX no sea cero y ZF sea igual a cero.

Saltos:
Instrucción De Salto Incondicional
La instrucción de salto incondicional hace que el control de flujo del programa salte
a la instrucción cuya dirección está especificada por su operando.
jmp dirección
La instrucción jmp hace que la ejecución del programa continué en la dirección
especificada por el operando.

Sintaxis:
jmp etiqueta
jmp regW|memW
TECNOLÓGICO DE ESTUDIOS SUPERIORES DE JOCOTITLÁN

INGENIERÍA EN SISTEMAS COMPUTACIONALES

jmp memDW
La dirección puede ser una etiqueta o estar en un registro o localidad de memoria. En el
caso de usar un registro o localidad de memoria de una palabra, el salto es a una
instrucción que se encuentra en el mismo segmento y el valor representa el
desplazamiento de la instrucción con respecto al segmento.

En el caso de que la dirección esté en una localidad de memoria de tipo palabra doble, el
salto es a otro segmento y el valor es el segmento: desplazamiento de la
instrucción.
La instrucción jmp no afecta a las banderas.

Instrucciones De Salto Condicional


Las instrucciones de salto condicional hacen que el control de flujo del programa
salte a la instrucción cuya dirección está especificada por su operando si se cumple una
condición dada. jcond dirección
Cambian la dirección de la siguiente instrucción a ser ejecutada dependiendo del valor de
ciertas banderas.
Sintaxis: jcond etiqueta
Todas las instrucciones de salto condicional operan en forma similar. jcond es el
mnemónico de la instrucción y etiqueta es la etiqueta de la dirección donde está la
instrucción a la que va a saltar el programa

Tipo de salto.

La n significa que hace lo contrario.

Incremento
TECNOLÓGICO DE ESTUDIOS SUPERIORES DE JOCOTITLÁN

INGENIERÍA EN SISTEMAS COMPUTACIONALES

Incremento en el byte 1, si este se encuentra inicialmente en OFFH pasara a 00H. Las


banderas no son afectadas. Cuatro modos de direccionamiento son permitidos:
Acumulador, Registro Directo o Registro Indirecto.
Incrementa (suma 1 a) el contenido de un registro o de una posición de memoria.
Ejemplos:
INC AX ; AX=AX+1
INC DL ; DL=DL+1
INC WORD PTR ES:[DI+4] ; Increm. palabra contenida
; en ES:DI+4

Decremento
La variable indicada es decrementada en 1. Cuando el valor original del Byte es 00H al
decrementarse pasará a 0FFFH y existirá un sobre flujo.
Ninguna otra bandera es afectada, Cuatro operandos de modos de direccionamiento son
permitidos: Acumulador, Registro directo o Registro indirecto.
Decrementa (resta 1 a) el contenido de un registro o de una posición de memoria.
Ejemplos:
DEC AX ; AX=AX-1
DEC DL ; DL=DL-1
DEC BYTE PTR ES:[DI+4] ; Decrem. byte contenido en ;
ES: DI+4
Función DUP Sintaxis: num DUP (valor)

Define en memoria la repetición de 'num' veces de 'valor'. El parámetro 'valor' puede ser un
valor entero, una cadena de caracteres entrecomillada u otro operador.

Ejemplos:
DB 20 DUP(100) ; Repetir 20 veces 100
DB 64 DUP('HOLA') ; Repetir 64 veces 'HOLA'
DB 256 DUP(?) ; Asignar 256 bytes indefinidos

Cuando el operando se encierra entre corchetes, indica "el contenido de memoria en", es
decir, que no se referencia a un valor sino a una posición de memoria. Normalmente, las
referencias a memoria se basan en el segmento DS, y se direcciona a través de una posición
predeterminada, o usando los registros BX, SI ó DI como punteros base que indican la
posición dentro del segmento.

Actividad 2: Codificación de programas en ensamblador


TECNOLÓGICO DE ESTUDIOS SUPERIORES DE JOCOTITLÁN

INGENIERÍA EN SISTEMAS COMPUTACIONALES

Instrucciones: Codifique los siguientes programas en ensamblador


1. Programa en ensamblador que despliegue N veces un mensaje
mediante el uso de ciclos, permitiendo al usuario ingresar el valor de
N
2. Programa en ensamblador que permita ingresar 5 números e
imprima el número mayor de estos, haga uso de ciclos y de
comparaciones.
3. Programa en ensamblador que imprima una figura de rombo
mediante un carácter ingresado por el usuario, haga uso de ciclos
para generar la figura.
*
***
*****
*******
*****
***
*

4. Programa en ensamblador que genere la tabla de multiplicar del


número que ingrese el usuario (con el siguiente formato de salida).

1x0=0
1x1=1
1x2=2

5. Genere un programa que despliegue un ciclo infinitos de caracteres


simulando un efecto en cascada (Efecto Matrix).
6. Programa en ensamblador que despliegue un menú como el siguiente,
realice la función indicada y repita el menú hasta que se elija la
opción salir:

1.- Limpiar pantalla


2.- Imprimir un mensaje
3.- Decrementar número ingresado
4.- Incrementar número ingresado
5.-Salir
Primer programa Se programará un mensaje que se imprima el número de veces que desee
el usuario en este caso solo podrá ser del 1- 9 quiere decir que si el usuario teclea 5 el
mensaje se repetirá 5 veces.
TECNOLÓGICO DE ESTUDIOS SUPERIORES DE JOCOTITLÁN

INGENIERÍA EN SISTEMAS COMPUTACIONALES

En la Figura 1 se muestra el código fuente que se realizó para poder cumplir con el
objetivo.

Ilustración 1 código
En la Figura 2 se muestra la ejecución del programa nveces, donde nos pide ingresar el
numero en este se ingresó 5 y el mensaje se imprimió 5 veces.
TECNOLÓGICO DE ESTUDIOS SUPERIORES DE JOCOTITLÁN

INGENIERÍA EN SISTEMAS COMPUTACIONALES

Ilustración 2 ejecución
Programa 2 En la Figura 3 se muestra el código realizado para comparar 5 números que son
ingresados por el usuario.

Ilustración 3 código fuente.


TECNOLÓGICO DE ESTUDIOS SUPERIORES DE JOCOTITLÁN

INGENIERÍA EN SISTEMAS COMPUTACIONALES

En la siguiente figura podemos observar la ejecución del programa que muestra cual
número es la más alto.

Ilustración 4 ejecución del programa 2


Programa 3 que imprima una figura de rombo mediante un carácter ingresado por el
usuario, haga uso de ciclos para generar la figura de un rombo.

Ilustración 5 código fuente del rombo p1


TECNOLÓGICO DE ESTUDIOS SUPERIORES DE JOCOTITLÁN

INGENIERÍA EN SISTEMAS COMPUTACIONALES

Ilustración 6 cód. p2

Ilustración 7 ejecución.

Ilustración 8 resultado de la ejecución.


Programa 4 tablas de multiplicar
TECNOLÓGICO DE ESTUDIOS SUPERIORES DE JOCOTITLÁN

INGENIERÍA EN SISTEMAS COMPUTACIONALES

En la siguiente figura podemos ver el código fuente en blog de notas en lenguaje


ensamblador.

Ilustración 9 código fuente p1

Ilustración 10 código fuente p2


TECNOLÓGICO DE ESTUDIOS SUPERIORES DE JOCOTITLÁN

INGENIERÍA EN SISTEMAS COMPUTACIONALES

Ilustración 11 ejecución.
Programa 5 Genere un programa que despliegue un ciclo infinitos de caracteres simulando
un efecto en cascada (Efecto Matrix).

Ilustración 12 código fuente efecto matrix


TECNOLÓGICO DE ESTUDIOS SUPERIORES DE JOCOTITLÁN

INGENIERÍA EN SISTEMAS COMPUTACIONALES

Ilustración 13 ejecución efecto matrix


Programa 6: El programa seis consistió en realizar un menú con saltos, un programa que
limpiara pantalla, imprimir un mensaje, así como la función de incremento y decremento,
para realizar este programa primero realice la función incremento y decremento y después
junte todos los programas ingresando un pequeño menú y el usuario marcaría el número de
opción que quisiera.

En la Figura se muestra el código fuente que se realizó para el programa 6.


TECNOLÓGICO DE ESTUDIOS SUPERIORES DE JOCOTITLÁN

INGENIERÍA EN SISTEMAS COMPUTACIONALES

Ilustración 14 código p1

Ilustración 15 código p2
TECNOLÓGICO DE ESTUDIOS SUPERIORES DE JOCOTITLÁN

INGENIERÍA EN SISTEMAS COMPUTACIONALES

Ilustración 16 código p3

Ilustración 17 código p4
TECNOLÓGICO DE ESTUDIOS SUPERIORES DE JOCOTITLÁN

INGENIERÍA EN SISTEMAS COMPUTACIONALES

Ilustración 18 código fuente parte final

Ilustración 19 ejecución del menú


TECNOLÓGICO DE ESTUDIOS SUPERIORES DE JOCOTITLÁN

INGENIERÍA EN SISTEMAS COMPUTACIONALES

Ilustración 20 ejecución.

Conclusiones: Redacte las conclusiones de su práctica (extensión minina 20 renglones).


En esta práctica se realizaron varios programas de los cuales algunos no me quedaron como
el profesor lo solicito pues se presentaron varios problemas a la hora de realizar el código
pues ahora se hizo uso de funciones diferentes que llevaban más instrucciones para ello
tenemos que saber exactamente que realiza cada instrucción. Antes de realizar los
programas en clase se vieron los conceptos e instrucciones que utilizaríamos, debemos
tener en cuenta para que sirven las etiquetas la función de los ciclos, de los saltos etc. Para
poder realizar las tablas de multiplicar no me da el número 10 y es porque no supe como
capturar dos dígitos es por eso que también solo se puede ingresar las tablas del 1 al 9 así
como para el programa número uno de imprimir n veces solo admite del 1 al 9 pues no
logre capturar dos dígitos, estos dos programas fueron un poco más sencillos que los demás
pues utilice saltos y etiquetas en el caso de las tablas si se ingresa cualquier número del 1 al
9 nos regresara la multiplicación hasta el número 9 en el de repetir el mensaje N veces si se
ingresa el numero 8 no regresara 8 veces el mensaje y así sucesivamente. Pude notar que
una etiqueta no puede llamarse igual que una variable que ya se haya dado dentro del
mismo código fuente pues marcara un error, al igual que en los saltos condicionales el
ponerle una N después de la j significa lo contrario de lo que indique el salto por ejemplo
jle salta si es menor y jnle aria lo contrario saltara si es mayor este salto.
TECNOLÓGICO DE ESTUDIOS SUPERIORES DE JOCOTITLÁN

INGENIERÍA EN SISTEMAS COMPUTACIONALES

Nota final: La copia total o parcial de alguna práctica previamente entregada no será
recibida y afectara la calificación otorgada a la persona que entrego previamente. Sea
cuidadoso con sus reportes y productos de las actividades realizadas, evite pasarlos a sus
compañeros. Si se basan en algún ejemplo de libros o de internet es preciso referenciarlo y
hacer énfasis en las mejoras que usted género a dicho trabajo.

También podría gustarte