CarlosMarioMayorgaParra 202016893 153

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

TAREA 4

CÓDIGOS EN LENGUAJE ENSAMBLADOR

Carlos Mario Mayorga parra

(1007194366)

Grupo:

202016893_153

PRESENTADO A:

JESUS EMIRO VEGA

UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA

PROGRAMA ACADÉMICO INGENIERÍA DE SISTEMAS

PITALITO HUILA – 2022


Introducción:

En este documento se encontrarán las respuestas y soluciones a lo presentado en la


guía y rubrica de evaluaciones, para esto se utilizo un programa externo el cual es un
emulador, lo que nos ayudo bastante al momento de realizar el código.
Agradecemos de antemano su atención.
Actividad Individual:
1. El estudiante revisa los fundamentos teóricos de la unidad 3 para aplicarlos al desarrollo de la
actividad.
2. El estudiante crea una tabla explicativa de las instrucciones en lenguaje ensamblador referentes a:
saltos incondicionales, saltos condicionales, comparaciones, decisiones y bucles.

Instrucción Descripción Sintaxis Ejemplo


Decrementa el puntero de la pila en 2 y PUSH FUENTE PUSH
luego transfiere la palabra especificada
PUSH en el operando fuente a lo alto de la pila.
El registro CS no se puede especificar
como operando fuente.
Transfiere un byte o una palabra desde el MOV destino, fuente MOV AX, [DI]
MOV operando fuente el operando destino.
Desplaza a izquierda la cantidad de bits SHL destino, contador  temp=contador Mientras
de destino especificada en el segundo
temp<>0 CF=bit superior de
SHL operando.
destino destino=destino*2
temp=temp-1
Transfiere el desplazamiento del LEA destino, fuente LEA DI, MENSAJE
operando fuente al operando destino. El
LEA operando destino debe ser un registro de
16 bits, pero no un registro de segmento.
Transfiere el elemento que está en lo alto POP destino POP DX
de la pila al operando destino (palabra) y
POP luego incrementa en dos el puntero de
pila. El registro CS no se puede
especificar como destino.
Realiza un AND lógico bit a bit entre los AND destino, fuente AND R9, RAX
AND operandos
Realiza un OR lógico bit a bit entre los OR destino, fuente OR R9, RAX
OR operandos.
Desplaza a izquierda la cantidad de bits SHL destino, contador temp=contador Mientras
de destino especificada en el segundo
temp<>0 CF=bit superior de
SHR operando.
destino destino=destino*2
temp=temp-1
Realiza un complemento bit a bit del  NOT destino   NOT RAX
NOT operando destino.
Rota a derecha la cantidad de bits ROR destino, contador  ROR RAX,1
ROR especificada en el contador 
Rota a derecha la cantidad de bits ROL destino, contador  ROL DWORD [RBX], CL
ROL especificada en el contador.
Corrige el resultado en AL de una suma AAA MOV AX, 15; AH = 00, AL =
de dos números decimales
AAA desempaquetados, convirtiéndolo en un 0Fh AAA; AH = 01, AL = 05
valor decimal desempaquetado RET
Suma los dos operandos y almacena el ADD destino, fuente ADD R9, RAX
ADD resultado en destino. Realiza una suma
bit a bit.
Transfiere el control a la dirección JMP dirección JMP bucle
especificada por el operando, La
JMP bifurcación puede ser directa (si
operando es una etiqueta) o indirecta (si
operando es una dirección)
Salta un procedimiento fuera de línea, CALL destino CALL subrutina1
salvando previamente en la pila la
dirección de la instrucción siguiente,
para poder volver a esta instrucción una
CALL vez ejecutado el procedimiento. El
procedimiento llamado puede estar en el
mismo segmento (NEAR) o en otro
segmento (FAR)
Retorna un procedimiento previamente RET RET
invocado por CALL utilizando como
retorno la dirección salvada en la pila
RET por CALL, que corresponde a la
instrucción siguiente a dicha sentencia
CALL
Compara los dos operandos de la CMP destino, fuente CMP R9, RAX
instrucción sin afectar al valor de
CMP ninguno de los operandos, actualiza los
bits de resultado según el resultado de la
comparación.
Activa el procedimiento de interrupción INT Nro. INT 80h
correspondiente a Nro. La dirección del
INT procedimiento se consigue en la tabla de
vectores de interrupción. En el área de
memoria [0 – 400h]
Resta 1 al operando de la instrucción y DEC destino DEC EAX
DEC almacena el resultado en el mismo
operando.
Divide el dividendo implícito entre el DIV reg. DIV R8B; AX / R8B =>
divisor explícito sin considerar los
signos de los operandos. Si el divisor es Cociente en AL; resto en AH
DIV de 8 bits, se considera como dividendo
implícito AX. El cociente de la división
queda en AL y el resto, en AH.
Divide el dividendo implícito entre el IDIV fuente IDIV CH; AX / CH =>
divisor explícito (fuente) considerando el
signo de los operandos. El Cociente en AL; resto en AH
funcionamiento es idéntico al de la
IDIV división sin signo. Si el divisor es de 8
bits, se considera como dividendo
implícito AX. El cociente de la división
queda en AL y el resto, en AH.
Realiza un salto según una condición Jxx etiqueta JE etiqueta1; salta si Z=1
determinada; la condición se comprueba
consultando el valor de los bits de
resultado. La etiqueta codifica un
desplazamiento de 32 bits con signo y
JXX permite dar un salto de –231 bytes a
+231 –1 bytes. Si la condición se
cumple, se salta a la posición del código
indicada por la etiqueta; se carga en el
registro RIP el valor RIP +
desplazamiento
La instrucción utiliza el registro RCX. LOOP etiqueta MOV RCX, 10 bucle: Las
Decrementa el valor de RCX, comprueba
si el valor es diferente de cero y en este instrucciones se repetirán 10
caso realiza un salto a la etiqueta veces; LOOP bucle
LOOP indicada. La etiqueta codifica un
desplazamiento de 32 bits con signo y
permite efectuar un salto de –231 bytes a
+231 – 1 bytes.
Realiza una operación lógica 'y’ bit a bit TEST destino, fuente TEST R9, RAX
entre los dos operandos sin modificar el
TEST valor de ninguno de los operandos;
actualiza los bits de resultado según el
resultado de la 'y' lógica.
Lleva a cabo una resta sin considerar el SUB destino, fuente SUB R9, RAX
valor del bit de transporte (CF). Se resta
el valor del operando fuente del
operando destino, el resultado de la
SUB operación se guarda sobre el operando
destino sobrescribiendo el valor inicial.
El valor del operando fuente no se
modifica.
La operación de multiplicación con IMUL fuente IMUL EAX,
signo puede utilizar diferente número de
IMUL operandos; se describirá el formato de la
instrucción con un operando y con dos
operandos.

3. El estudiante desarrolla uno de los siguientes programas en lenguaje ensamblador.


Para llevar a cabo este ejercicio he decidido usar el punto 3.1
El cual nos pide que: Un programa que permita leer un número de un digito por teclado y
determinar si el número es par.
Para acceder al código que use pueden usar el siguiente link:
Capturas del lenguaje del programa.
Evidencias del programa corriendo:

Si el número es par:
Si el numero es impar:
4. El estudiante realiza 2 conclusiones de las temáticas vistas para el trabajo final.

Conclusiones:
Debemos darle el reconocimiento de que esta actividad fue demasiado interesante ya que
pudimos hacer bastantes cosas y aprender bastante gracias al utilizar una tabla explicativa
en la cual vimos instrucciones de lenguaje ensamblador las cuales fueron saltos
incondicionales saltos condicionales comparaciones decisiones y bucles.
Conclusión 2
Debido al punto 3 de esta guía y rúbrica de evaluación se nos solicita el que el estudiante
desarrolle uno ver los puntos en lenguaje ensamblador para esto eh llevado a cabo el
ejercicio 3.1 el cual no llega a decir que se requiere un programa que permita leer el
número de un dígito por teclado y determinar si este dicho número es par para esto
utilizamos el emulador emú 8086 el cual fue bastante utilidad junto a los tutoriales y videos
que ha dejado el profesor en el entorno explicativo para así llevar a cabo la actividad de una
manera más correspondiente y mejor planeada.

También podría gustarte