Anda di halaman 1dari 10

Nombre de la materia

Lenguaje Ensamblador

Nombre de la Licenciatura
Ingeniería en Sistemas
Computacionales

Nombre del alumno


Luis Manuel Mora López

Matrícula
010577912

Nombre de la Tarea
Programación en ensamblador

Unidad #2
Programación en ensamblador

Nombre del Profesor


Jaime Humberto Pech Carmona

Fecha
13/05/2019
Unidad #2: Programación en ensamblador
Lenguaje ensamblador

ACTIVIDAD 2

“Los verdaderos programadores pueden escribir código ensamblador en cualquier


lenguaje”. Larry Wall

Objetivos:

 Identificar el proceso de compilación de un programa en lenguaje ensamblador.


 Distinguir los diferentes tipos de operaciones a realizar en un programa.
 Utilizar apropiadamente el software de compilación.

Introducción:
El lenguaje ensamblador es un lenguaje de programación de bajo nivel para
microprocesadores y microcontroladores. Implementa una representación simbólica del
códigos de máquina binario y otras constantes necesarias para programar una
arquitectura dada de la CPU y consiste en la representación más directa del código
máquina específico para cada arquitectura legible por un programador.
El ensamblador realiza una traducción más o menos isomorfa desde las sentencias
mnemónicas a las instrucciones y datos de máquina.
Actualmente se utiliza cuando se requiere la manipulación directa del hardware, alto
rendimiento, o un uso de recursos controlado y reducido, controladores de dispositivo y
en el desarrollo de sistemas operativos

Instrucciones:

Descargar la actividad en Word y responder directamente en el documento y subir, recuerda


que debes de aumentar las fuentes de información consultadas aparte de las recomendadas.

 Ejercicio 1. Apoyándote en los siguientes recursos de la semana 2 realiza las


conversiones siguientes:

Lectura
1) Aritmética y representación de la información en el computador. (n.d)
(Capítulo 4).
2) Conceptos básicos del lenguaje ensamblador (Jiménez, 2014).

2
Unidad #2: Programación en ensamblador
Lenguaje ensamblador

Realice las conversiones para llenar la tabla en dónde en cada renglón hay una sola cantidad
representada en el sistema que indica la cabecera de la columna:. Nota:

Decimal Binario Octal Hexadecimal

137 10001001 211 89


213 1101 0101 325 D5
187 10111011 273 BB
250 11111010 372 FA

Procedimiento paso a paso de la conversión Decimal a Binario.

Paso 1: Divide (137) 10 sucesivamente por 2 hasta que el cociente sea 0: 137/2 = 68,
el resto es 1 68/2 = 34, el resto es 0 34/2 = 17, el resto es 0 17/2 = 8, resto es 1 8/2 = 4,
el resto es 0 4/2 = 2, el resto es 0 2/2 = 1, el resto es 0 1/2 = 0, resto es 1

Paso 2: Lea desde la parte inferior (MSB) hasta la parte superior (LSB) como
10001001. Este es el equivalente binario del número decimal 137

Procedimiento paso a paso de la conversión Decimal a Octal.

Paso 1: Divide (137) 10 sucesivamente entre 8 hasta que el cociente sea 0: 137/8 = 17,
resto es 1 17/8 = 2, resto es 1 2/8 = 0, el resto es 2

Paso 2: Lea desde la parte inferior (MSB) hasta la parte superior (LSB) como 211. Este
es el equivalente octal del número decimal 137

Procedimiento paso a paso de la conversión Decimal a Hexadecimal.

Paso 1: Divida (137) 10 sucesivamente por 16 hasta que el cociente sea 0:

3
Unidad #2: Programación en ensamblador
Lenguaje ensamblador

137/16 = 8, resto es 9
8/16 = 0, el resto es 8

Paso 2: Lea desde la parte inferior (MSB) hasta la parte superior (LSB) como 89. Este
es el equivalente hexadecimal del número decimal 137

 Ejercicio 2. Apoyándote en los siguientes recursos de la semana 2 realiza las


siguientes descripciones:

Lectura
1) Conceptos básicos del lenguaje ensamblador (Jiménez, 2014).
2) Aritmética y representación de la información en el computador. (n.d)
(Capítulo 4)
3) Programación en ensamblador conceptos básicos (Rincón, L., n.d)

Describa con sus propias palabras lo que significa cada uno de los siguientes términos, y
¿cuál es su función en un programa en lenguaje ensamblador?
1) Código: En este segmento son ejecutadas las órdenes o instrucciones de la
máquina que son ejecutadas en el programa, en pocas palabras, al inicio del programa
este segmento se encarga de darle las primeras órdenes al programa, aquí es el
principio de todo.
2) Pila: Por lo que hemos aprendido y estudiado, es preciso decir que en este
segmento se codifican las llamadas a subrutina y archivos temporales de programa, el
registro de este segmento es el que se encarga de direccionar el segmento de la pila.
3) Datos: Este segmento es una de las partes más importantes del programa, aquí
los datos más renuentes del programa se codifican, además de que su flujo de

4
Unidad #2: Programación en ensamblador
Lenguaje ensamblador

información es mayor, también se almacena información y además se mueve de forma


constante.
4) Modelo: Este segmento representa todo el espacio de direcciones de la memoria,
por lo cual siempre almacena una extensa cantidad de datos en ella.
5) Directiva: Son comandos excritos en el código fuente para realizar un control
directo o ahorrar tiempo a la hora de ensamblar. El resultado de incorporar directivas se
puede ver en el fihero *.LST, después de ensamblar el programa.
6) Etiqueta: Son nombres que sirven para referirse a otras lineas de instrucciones
del programa, esto resulta muy útil ya que muchas veces es necesario realizar saltos
pueden ser condicionales o incondicionales, a otra parte del programa.
7) Operando: Estos se representan por símbolos o constantes y se separan por
comas.

 Ejercicio 3. Apoyándote en los siguientes recursos de la semana 2 realiza el


siguiente ejercicio:

Lectura
1) Programación en ensamblador (Jiménez, 2014).

Escoja 2 de los ejemplos del archivo Programación en ensamblador (Jiménez, 2014) que se
encuentra como recurso de la semana 2. Indique con sus palabras las secciones de código
que identifica y las instrucciones que reconoce en ellos.

.STACK[size]: Define al segmento de pila de la longitud especificada.


.CODE[name]: Define el segmento de código.
.DATA: Define un segmento de datos NEAR con valores iniciales.

Ejemplo 1.
.MODEL SMALL;Modelo pequeño
.STACK 100H;'Segmento de pila 256 posiciones'
CR EQU 13; Rtorno de carro

5
Unidad #2: Programación en ensamblador
Lenguaje ensamblador

LF EQU 10; Nueva linea


.DATA; Segmento de datos
TEXTO DB LF, LF, CR, 'HOLA MUNDO!$'; Texto
.CODE;Codigo de programa
MOV AX,@DATA; Cargar la direccion del segmento de datos
MOV DS,AX; Cargar la direccion del segmento de datos
LEA DX,TEXTO;Cargar Texto
MOV AH, 9;Imprimir en pantalla
INT 21h; Llama al sistema operativo
MOV AH, 4ch;Funcion 4ch
INT 21h
END ;Fin del programa

Ejemplo 2:

MOV: Esta instrucción mueve los datos de una localidad a otra y trabaja para 8, 16 t 32
bits.

.MODEL SMALL ; Modelo pequeño


.STACK 100H ; Segmento de pila 256 posiciones
;****Algunas constantes****
Quince EQU 15
Cero EQU 0

.DATA ; Segmento de datos


;****Algunas Variables****************
Cadena DB 'UTEL$'
.CODE ;Código de programa
;********************************
;Operaciones de control de programa
;

;***Siempre iniciar segmento de datos

6
Unidad #2: Programación en ensamblador
Lenguaje ensamblador

MOV AX,@DATA
MOV DS, AX
inicio: ; etiqueta
;****JMP salto incondicional
MOV AH, Quince ;AH=15
JMP parte2; Salto parte2
MOV AL, Cero; AL=0 Nunca se ejecutará
parte2: ; salta aquí

;***LOOP ciclo de repetición


MOV CX,10 ;en CX se establece la cantidad
; de veces que se repetirá el bloque
lazo: ; inicia el bloque de instrucciones
PUSH CX ; Estas instrucciones
MOV AX, CX ;se repiten
LOOP lazo ; aquí salta al inicio del bloque

;En la pila y AX se puede verificar como CX se va decrementando


;cada vez ue termina un ciclo.
MOV AL,10 ; AL=10
MOV BL,5 ; BL=5
CMP AL, BL ; Compara AL con BL
JA mayor ; Salta si AL>BL
MOV CL,0 ; no se ejecuta
mayor:
MOV AH,5 ;AH=10
CMP AH, AL; compara AH con AL
JE iguales ; SALTA SI AH=AL
MOV CL,0 ; Esto no se ejecuta
iguales:
JMP inicio; Este programa nunca termina

7
Unidad #2: Programación en ensamblador
Lenguaje ensamblador

; En algun punto se acabará el espacio


; en la pila.
MOV AH,4ch ; Función 4ch
INT 21h
END

 Ejercicio 4. Apoyándote en los siguientes recursos de la semana 2 y en los


videos, realiza la siguiente actividad:

Lectura
1) Programación en ensamblador (Jiménez, 2014).

Con la ayuda de un screencast (hay muchos de licencia opensource o gratuitos) grábese


emulando 2 de los ejemplos del archivo Programación en ensamblador (Jiménez, 2014) que
se encuentra como recurso de la semana 2 y verificando los resultados en los registros
pertinentes relacionándolos con el tipo de instrucción (lógica, aritmética, movimiento de
datos, control). Envíe al finalizar el o los archivos o compártalos en una ubicación virtual

Programa 1

8
Unidad #2: Programación en ensamblador
Lenguaje ensamblador

Programa 2:

Forma de evaluación:

Criterio Valor Calificación de alumno

Presentación (Uso de formato 10%


utel, redacción y ortografía,
bibliografía soliciadada)

Ejercicio 1 20%

30%
Ejercicio 2

20%
Ejercicio 3

20%
Ejercicio 4

Total 100%

9
Unidad #2: Programación en ensamblador
Lenguaje ensamblador

Conclusion:

En conclusión con este trabajo, podemos decir que el lenguaje ensamblador es más
que un tipo de lenguaje de bajo nivel, en el cual es empleado para crear programas
informáticos.

La importancia de este es que pueden hacer cualquier tipo de programas que en otros
lenguajes más avanzados no y mejor aún este no ocupa tanta memoria.

Fuentes de información
-Mark Treylack (6 ene 2015) ¿Cómo convertir de Decimal a Binario, Octal y Exadecimal
y viceversa. Obtenido de Youtube:
https://www.youtube.com/watch?v=IfGWtWo5dK0
-kudzu (6 ene 2015) Aritmética binaria. Obtenido de Youtube:
https://www.youtube.com/watch?v=j7ajMe-VVW4
-facomsys (29 mar 2010) Ensamblador- Ciclo Loop. Obtenido de Youtube:
https://www.youtube.com/watch?v=HCChOn5gL8E

1
0