You are on page 1of 9

UNIVERSIDAD TÉCNICA DE AMBATO

FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL


CARRERA DE INGENIERÍA EN SISTEMAS COMPUTACIONALES E INFORMÁTICOS
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 – FEBRERO 2018

I. PORTADA
UNIVERSIDAD TÉCNICA DE AMBATO
Facultad de Ingeniería en Sistemas, Electrónica e Industrial
“Proyecto Académico de Fin de Semestre”

Título:

Manipulación de cadenas en Ensamblador


Carrera:
Ingeniería en Sistemas Computacionales e Informáticos
Área Académica:
Hardware y Redes
Línea de Investigación:
Hardware y Redes
Nivel y Paralelo:
Tercero “A”
Alumnos participantes:
Izurieta Garcés Bryan Javier
Moreta Romero Jessica Daniela
Rivera Rodríguez Giovanni Francisco
Zurita Pazmiño Jonathan Alexander

Módulo y Docente:
Arquitectura de Computadores
Ing. Chicaiza Dennis
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA EN SISTEMAS COMPUTACIONALES E INFORMÁTICOS
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 – FEBRERO 2018

II. INFORME DEL PROYECTO


1.
1.1 Título

Manipulación de cadenas en Ensamblador

1.2 Objetivos

Objetivo General

Desarrollar una aplicación, que permita la lectura y almacenamiento de diversas cadenas


haciendo uso de las maneras en las que se puede guardar datos “Big Endian – Little
Endian”

Objetivos Específicos

• Investigar sobre las diversas sentencias utilizadas en el Lenguaje Ensamblador


para la manipulación de cadenas.

• Analizar las instrucciones con la finalidad de saber cuál es la más optima en el


momento de su implementación.

1.3 Resumen

Lenguaje ensamblador es la forma de programar un microprocesador en su forma más


básica, este lenguaje es de bajo nivel lo que significa que permite controlar todas las
funciones del microprocesador y también todos los periféricos asociados. No requiere
de un compilador ya que las instrucciones son traducidas directamente a código
binario y después son pasados a memoria.

Este de lenguaje puede manejar varios tipos de datos como por ejemplo las cadenas
(Strings). El manejo de Strings cuenta con cinco instrucciones:

 LODS: carga un byte o palabra.


 STOS: graba cadena.
 MOVS: mueve cadenas.
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA EN SISTEMAS COMPUTACIONALES E INFORMÁTICOS
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 – FEBRERO 2018

 SCAS: busca valor del acumulador en una cadena.

Las instrucciones para cadenas trabajan en conjunto con la instrucción CLD (pone en
cero el bit correspondiente a la bandera de dirección) la cual permite establecer que
el sentido en el que las cadenas serán procesadas será de izquierda a derecha.

Palabras clave: Lenguaje Ensamblador, instrucciones, cadenas (Strings).

1.4 Introducción

El lenguaje ensamblador o assembler es un lenguaje de programación de bajo nivel


para los computadores, microprocesadores, microcontroladores y demás circuitos
integrados programables.

Implementa una representación simbólica de los códigos de maquina binarios


necesarios para programar una arquitectura dada de CPU, representando de manera
más directa el código de maquina especificado y sea legible por un programador. Esta
representación es basada en mnemónicos que simbolizan los pasos de las
instrucciones, los registros y las posiciones de memoria. [1]

La Unidad Central de Procesamiento es un dispositivo físico que ejecuta las


instrucciones. Las instrucciones que ejecuta la CPU son por lo general muy simples.
Estas instrucciones pueden requerir de datos que están en un lugar específico para su
almacenamiento llamados registros.

Cada tipo de CPU entiende su propio lenguaje de máquina. Las instrucciones en


lenguaje de máquina son números almacenados como bytes en memoria. Cada
instrucción tiene su propio y único código llamado código de operación u opcode. [2]

En el lenguaje ensamblador una de las instrucciones son el de tipo dato que es la


cadena (String) este dato no está definido, pero para fines de programación, una
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA EN SISTEMAS COMPUTACIONALES E INFORMÁTICOS
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 – FEBRERO 2018

cadena es definida como un conjunto de localidades de memoria consecutivas que se


reservan bajo el nombre de una variable.

Para las instrucciones que manipulan las cadenas es necesario comentar el uso de los
prefijos de repetición, modificadores que sólo se pueden usar con las instrucciones de
manipulación de cadenas.

REP: este modificador repite la instrucción a la que acompaña mientras que CX sea
distinto de 0 (decrementa CX cada vez). Las instrucciones con las que se puede usar
son MOVS, MOVDSW o STOS.
MOVS/MOVSW: copia un byte o un WORD de una parte a otra de la memoria.

CMPS: realiza la comparación de dos cadenas, devuelve el resultado en el registro


de estado.

LODS/LODSW: transfiere un elemento de una cadena (fuente) a AL o AX,


respectivamente.

STOS/STOSW: transfiere el contenido de AL o AX, respectivamente, a una cadena


(destino). [3]

1.5 Materiales y Metodología

Materiales

 Computador
 El lenguaje ensamblador o assembler
 Emu 8086

Metodología

El paso del lenguaje ensamblador al código de maquina la realiza un programa


ensamblador. A diferencia de los lenguajes de alto nivel, aquí hay usualmente una
correspondencia 1 a 1 entre las instrucciones simples del ensamblador y el lenguaje
de máquina.
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA EN SISTEMAS COMPUTACIONALES E INFORMÁTICOS
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 – FEBRERO 2018

Para el mismo procesador y el mismo conjunto de instrucciones de CPU, diferentes


programas ensambladores pueden tener, cada uno de ellos, variaciones y diferencias
en el conjunto de mnemónicos o en la sintaxis de su lenguaje ensamblador.

Un programa escrito en lenguaje ensamblador consiste en una serie de instrucciones que


corresponden al flujo de órdenes ejecutables por un microprocesador.

El proyecto consiste en un programa que permita manipular cadenas, a la vez este se


puede guardar y leer a través de la consola del programa, para ello se programó el
siguiente código:

Imprime macro cadena

mov ax,data
mov ds,ax
mov ah,09
mov dx,offset cadena
int 21h
endm

.model small
.stack
.data
msj db 0ah,0dh, '***** Menu *****', '$'
msj2 db 0ah,0dh, '1.- Crear Archivo', '$'
msj3 db 0ah,0dh, '2.- Abrir Archivo', '$'
msj4 db 0ah,0dh, '3.- Modificar archivo', '$'
msj5 db 0ah,0dh, '4.- Salir', '$'
msj6 db 0ah,0dh, 'Opcion ==> ', '$'
msjcrear db 0ah,0dh, 'Archivo creado con exito', '$'
msjescr db 0ah,0dh, 'Archivo escrito con exito', '$'
msjnom db 0ah,0dh, 'Nombre del archivo: ', '$'
cadena db 'Cadena a Escribir en el archivo','$'
nombre db 'Archivo.txt',0 ;nombre archivo y debe terminar en 0
vec db 50 dup('$')
handle db 0
linea db 10,13,'$'
.code
inicio:

Creación del menú

menu:
imprime msj
imprime msj2
imprime msj3
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA EN SISTEMAS COMPUTACIONALES E INFORMÁTICOS
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 – FEBRERO 2018

imprime msj4
imprime msj5
imprime msj6

mov ah,0dh
int 21h

Comparación de la opción que se tecleo

mov ah,01h
int 21h
cmp al,31h
je crear
cmp al,32h
je abrir
cmp al,33h
je pedir
cmp al,34h
je salir

crear:
mov ax,@data
mov ds,ax
;crear
mov ah,3ch
mov cx,0
mov dx,offset nombre
int 21h
jc salir ;si no se pudo crear

imprime msjcrear
mov bx,ax
mov ah,3eh ;cierra el archivo
int 21h
jmp menu

abrir:
;abrir
mov ah,3dh
mov al,0h ;0h solo lectura, 1h solo escritura, 2 lectura y escritura
mov dx,offset nombre
int 21h
mov ah,42h
mov al,00h
mov bx,ax
mov cx,50
int 21h
;leer archivo
mov ah,3fh
;mov bx,ax
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA EN SISTEMAS COMPUTACIONALES E INFORMÁTICOS
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 – FEBRERO 2018

mov bx,ax
mov cx,10
mov dx,offset vec
;mov dl,vec[si]
int 21h
mov ah,09h
int 21h

Cierre de archivo

mov ah,3eh
int 21h
jmp menu

pedir:
mov ah,01h
int 21h
mov vec[si],al
inc si
cmp al,0dh
ja pedir
jb pedir

editar:
;abrir
mov ah,3dh
mov al,1h
mov dx,offset nombre
int 21h
jc salir ;Si hubo error
;Escritura de archivo
mov bx,ax ; mover hadfile
mov cx,si ;num de caracteres a grabar
mov dx,offset vec
mov ah,40h
int 21h
imprime msjescr
mov ah,3eh ;Cierre de archivo
int 21h
jmp menu

salir:
mov ah,04ch
int 21h
end
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA EN SISTEMAS COMPUTACIONALES E INFORMÁTICOS
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 – FEBRERO 2018

1.6 Resultados y Discusión

Se obtiene como resultado la siguiente visualización general del proyecto.

1.7 Conclusiones
 El lenguaje ensamblador es más rápido que cualquier otro lenguaje pero también es
demasiado complejo ya que es creado a base de instrucciones para intentar sustituir
al lenguaje maquina por uno similar utilizado por el hombre.
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
CARRERA DE INGENIERÍA EN SISTEMAS COMPUTACIONALES E INFORMÁTICOS
PERÍODO ACADÉMICO: SEPTIEMBRE 2017 – FEBRERO 2018

 En ensamblador es muy importante comentar el código, los comentarios se utilizan


para indicar lo que hace una línea de código, para dividir secciones del programa y
de esta manera tener una guía de cómo está estructurado el código.

1.8 Referencias bibliográficas

[1] G. Dávila, «Scribd,» [En línea]. Available:


https://es.scribd.com/document/243845982/Lenguaje-ensamblador-pdf. [Último
acceso: 04 01 2018].

[2] P. A. Carter, «Lenguaje Ensamblador para PC,» California, 2007.

[3] Universidad de Cevilla, « Ensamblador 8086/88,» Departamento de Arquitectura y


Tecnología de Computadores, España, 2016.

You might also like