Está en la página 1de 16

1

LENGUAJE DE MAQUINA

ELIANA ALVARADO LÓPEZ

ADRIANA LISSETH ARDILA GÁMEZ

OMAR YESID GARCÍA SUAREZ

FUNDACION UNIVERSITARIA DE SAN GIL – UNISANGIL

INGENIERIA DE SISTEMAS

YOPAL

2019
2

LENGUAJE DE MAQUINA

ELIANA ALVARADO LÓPEZ

ADRIANA LISSETH ARDILA GÁMEZ

OMAR YESID GARCÍA SUAREZ

ROGERS OSWALDO WILCHES TORRES

INGENIERO ELECTRONICO

FUNDACION UNIVERSITARIA DE SAN GIL – UNISANGIL

INGENIERIA DE SISTEMAS

YOPAL

2019
3

Tabla de contenido
Lenguaje de maquina ....................................................................................................................5
Código de maquina.......................................................................................................................5
Mover ...........................................................................................................................................6
Afectar el flujo del programa .......................................................................................................6
Lenguaje ensamblador ..................................................................................................................7
Características de lenguaje ensamblador ................................................................................. 7-8
Operador de funcionamiento ........................................................................................................9
Operador ..................................................................................................................................9
Tipos de operadores .................................................................................................................9
Operadores aritméticos.............................................................................................................9
Operadores relacionales..........................................................................................................10
Operadores lógicos ................................................................................................................11
Operador a nivel de bit .................................................................................................... 11-12
Ventajas y desventajas ................................................................................................................13
Lenguaje de alto nivel............................................................................................................ 14-15
4

Tablas
Tabla 1. Operadores aritméticos ................................................................................................ 9-10
Tabla 2. Operadores relacionales ...................................................................................................10
Tabla 3. Cierto o falso....................................................................................................................10
Tabla 4. Operadores lógicos .........................................................................................................11
Tabla 5. Operadores a nivel de bit .................................................................................................12
5

Lenguaje de maquina

El lenguaje de maquina es aquel cuyas instrucciones son directamente entendibles por la

computadora y no necesitan traducción posterior, las instrucciones del lenguaje de maquina se

expresan en términos de la unidad de memoria más pequeña (bit) = digito binario 0 o 1, se debe

tener en cuenta que el lenguaje de máquina no proporciona margen para que las personas puedan

entenderlo.

Es indescifrable por el ser humano, tanto prácticamente como el código genético, o incluso a la

vista de los últimos avances médicos parece que es todavía menos comprensible que este, todo

código fuente en última instancia debe llevarse a un lenguaje máquina mediante el proceso de

compilación o interpretación para que la computadora pueda ejecutarlo.

Código de maquina

Está formado por instrucciones sencillas, que dependiendo de la estructura del procesador

pueden especificar:

•Registros específicos para operaciones aritméticas, direccionamiento o control de funciones.

•Posiciones de memoria específicas (offset).

•Modos de direccionamiento usados para interpretar operandos.

Las operaciones más complejas se realizan combinando estas instrucciones sencillas, que pueden

ser ejecutadas secuencialmente o mediante instrucciones de control de flujo. Casi todas las

instrucciones utilizan 2 operandos específicos para realizar su función.


6

Las operaciones disponibles en la mayoría de los conjuntos de instrucciones incluyen:

Mover

Llenar un registro con un valor constante o mover datos de una posición de memoria a un

registro o viceversa.

Computar

Sumar, restar, multiplicar o dividir los valores de dos registros, colocando el resultado en uno de

ellos o en otro registro o realizar operaciones binarias, incluyendo operaciones lógicas o

comparar valores entre registros (mayor, menor, igual).

Afectar el flujo del programa

Saltar a otra posición en el programa y ejecutar instrucciones allí o saltar si se cumplen ciertas

condiciones o saltar a otra posición, pero guardar el punto de salida para retornar, algunas

computadoras incluyen instrucciones complejas dentro de sus capacidades. Una sola instrucción

compleja hace lo mismo que en otras computadoras puede requerir una larga serie de

instrucciones
7

Lenguaje ensamblador

El lenguaje ensamblador es un lenguaje de programación utilizado para escribir programas

informáticos de bajo nivel, es decir, de difícil lectura para el humano que no tiene conocimiento

sobre programación, y constituye la representación más directa del Código máquina específico

para cada arquitectura de computadoras legible por un programador.

Características del lenguaje ensamblador

El código escrito en lenguaje ensamblador posee una cierta dificultad de ser entendido

directamente por un ser humano ya que su estructura se acerca más bien al lenguaje máquina, es

decir, lenguaje de bajo nivel.

El lenguaje ensamblador es difícilmente portable, es decir, un código escrito para un

Microprocesador, suele necesitar ser modificado, muchas veces en su totalidad para poder ser

usado en otra máquina distinta, aun con el mismo Microprocesador, solo pueden ser reutilizados

secciones especiales del código programado.

Los programas hechos en lenguaje ensamblador, al ser programado directamente sobre

Hardware, son generalmente más rápidos y consumen menos recursos del sistema (memoria

RAM y ROM). Al programar cuidadosamente en lenguaje ensamblador se pueden crear

programas que se ejecutan más rápidamente y ocupan menos espacio que con lenguajes de alto

nivel.

Con el lenguaje ensamblador se tiene un control muy preciso de las tareas realizadas por un

Microprocesador por lo que se pueden crear segmentos de código difíciles de programar en un

lenguaje de alto nivel.


8

También se puede controlar el tiempo en que tarda una Rutina en ejecutarse, e impedir que se

interrumpa durante su ejecución.


9

Operadores de funcionamiento

Operador

Es un símbolo (+, -, *, /, etc) que tiene una función predefinida (suma, resta, multiplicación,

etc) y que recibe sus argumentos de manera infija, en el caso de tener 2 argumentos de manera

prefija o postfija, en el caso de tener uno solo.

Tipos de operadores

 Operadores aritméticos

 Operadores relacionales

 Operadores lógicos

 Operadores a nivel de bit (bitwise operators)

 Operadores especiales.

Operadores Aritméticos

Los operadores aritméticos nos permiten, básicamente, hacer cualquier operación aritmética,

que necesitemos (ejemplo: suma, resta, multiplicación, etc). En la siguiente tabla se muestran los

operadores de los que disponemos en C y su función asociada.

Tabla 1. Operadores aritméticos

Operador Acción Ejemplo


- Resta x = 5 + 3; // x vale 2
+ Suma x = 2 - 3; // x vale 5
* Multiplicación x = 2 + 3; // x vale 6
/ División x = 6 / 2; // x vale 3
·/. Módulo x = 5 % 2; // x vale 1
-- Decremento x = 1; x--; // x vale 0
10

++ Incremento x = 1; x++; // x vale 2

Operadores relacionales

Al igual que en matemáticas, estos operadores nos permitirán evaluar las relaciones (igualdad,

mayor, menor, etc) entre un par de operandos (en principio, pensemos en números). Los

operadores relacionales de los que disponemos en C son:

Tabla 2. Operadores relacionales

Operador Acción
> Mayor que
>= Mayor o igual que
< Menor que
<= Menor o igual que
== Igual
!= Distinto

El resultado de cualquier evaluación de este tipo, es un valor ``cierto'' (true) o ``falso'' (false).

La mayoría de lenguajes tienen algún tipo predefinido para representar estos valores (boolean,

bool, etc); sin embargo en C, se utilizan valores enteros para representar esto:

Tabla 3. Cierto o falso

falso (false) 0
cierto (true) cualquier valor distinto de 0, aunque normalmente se usará el 1
11

Operadores lógicos

Como operadores lógicos designamos a aquellos operadores que nos permiten ``conectar'' un

par de propiedades.

Los operadores lógicos de los que disponemos en C son los siguientes:

Tabla 4. Operadores lógicos

Operador Acción
&& Conjunción (Y)
|| Disyunción (O)
! Negación

Al igual que con la igualdad hay que tener especial cuidado con los operadores && y , ya que

si ponemos solamente un & o un , nos estamos refiriendo a un ``and'' o un ``or'' a nivel de bit,

por lo que el código puede que no haga lo que queremos (o que algunas veces lo haga y otras

veces no).

Operadores a nivel de bit (bitwise operators)

En determinadas ocasiones nos puede interesar manipular datos a nivel de bit; por ejemplo,

activar o desactivar flags. Un flag es una ``variable'' que puede tomar 2 valores, por lo que se

suele representar con un bit. Debido a que en C (y en la mayoría de lenguajes de programación)

no existen tipos predefinidos de un bit, lo que se suele hacer es agrupar varios flags en una

variable de tipo entero (``short int'', ``int'' o lo que queramos).

Para acceder a estos flags o simplemente para activarlos es necesario utilizar operadores a nivel

de bit.
12

Tabla 5. Operadores a nivel de bit

Operador Acción
& AND a nivel de bit.
OR a nivel de bit.
XOR a nivel de bit.
Complemento.
>> Desplazamiento a la izquierda.
<< Desplazamiento a la derecha.
13

Ventajas y desventajas

El lenguaje de máquina cuenta con una serie de factores que debemos conocer para poder

utilizarlo de forma conveniente. La principal ventaja se encuentra en que vamos a disfrutar de

una gran velocidad en lo vinculado a la ejecución cuando traslademos un programa a otro

lenguaje distinto. El motivo de ello es que podemos cargar el programa en la memoria de la

máquina y que desde aquí actúe de forma independiente. Pero hay algunos inconvenientes que

están en contraposición directa con esto.

Por ejemplo, la codificación podría ser mucho más rápida y los procesos pueden llegar a ser

demasiado complicados si no hemos recibido una buena formación. El índice de fiabilidad de

este lenguaje tiene ciertas lagunas y la verificación de los programas requiere que seamos

detallistas de una forma notable para que no haya nada que se nos pase. Además, los procesos

que hayamos transmitido se podrán ejecutar en la CPU donde los hayamos configurado, pero no

tendrán soporte más allá de este equipo, requiriendo ajustes para ello.
14

Lenguajes de Alto nivel

Son lenguajes más afines con el programador en los que una instrucción puede representar varias

instrucciones en lenguaje máquina. Incluyen los lenguajes estructurados y no estructurados.

Como ejemplos tenemos: Basic, Pascal, C, APL, FORTRAN (Aplicaciones Científicas),

COBOL (para aplicaciones de procesamiento de datos), LISP Y PROLOG (para Inteligencia

Artificial), etc.

Los lenguajes de alto nivel necesitan de un traductor que puede ser interpretador o compilador.

Los interpretadores o intérpretes, necesitan de un programa auxiliar que traduce en tiempo real

las instrucciones al lenguaje máquina, por lo tanto, cada vez que un programa interpretado se

ejecuta debe ejecutarse también su interprete. Ejemplos de lenguajes interpretados: Basic,

PROLOG, LISP, entre otros.

Los lenguajes compilados son aquellos que necesitan de un compilador para la traducción al

lenguaje máquina. La traducción o compilación se hace solo una vez, y el resultado es un código

objeto entendible por la máquina. Para ejecutar un programa compilado no se necesita de su

compilador. Ejemplos de lenguajes compilados: Pascal, C, Fortran, Cobol, Modula-2 (evolución

del Pascal), etc.

Algunas de las características de los lenguajes de alto nivel:

 Depuración más sencilla: Debido a que el código es más legible, la depuración también

se hace más fácil. Con la ayuda editores (IDEs – Entornos de Desarrollo Integrados) la

compilación, depuración y ejecución se hacen más fácilmente.

 Productividad aceptable: son más productivos que los lenguajes de alto nivel.
15

 Algunos permiten la Portabilidad: generalmente los interpretados.

Los lenguajes estructurados, existen controles que le dan secuencia ordenada a la ejecución del

código. Dichos controles se implementan con estructuras definidas que permiten bifurcaciones

condicionadas o ciclos repetitivos. Los lenguajes estructurados hacen que el programador

desarrolle sus algoritmos disciplinadamente.

Una rama de los lenguajes de alto nivel son los lenguajes procedurales, donde la unidad

funcional es el procedimiento. Los procedimientos implementan la lógica de caja negra donde

existen unas entradas y unas salidas y al programador que usa el procedimiento no le interesa su

funcionamiento interno sino su funcionalidad.

Java y los lenguajes .Net de Microsoft también forman parte de los lenguajes de alto nivel, pero

para éste artículo es más importante su clasificación dentro de los lenguajes Orientados a

Objetos.
16

Referencias

luzumisu, P. e. (24 de febrero de 2009). overblog. Obtenido de http://luzumisu.over-


blog.com/article-28322968.html

Robert Britton: MIPS Assembly Language Programming. Prentice Hall. ISBN 0-13-142044-5

Centro de escritura Javeriano (Ed.). (2013). Normas APA. Cali, Colombia: Pontificia
Universidad Javeriana. Recuperado de:
http://portales.puj.edu.co/ftpcentroescritura/Recursos/Normasapa.pdf

John Waldron: Introduction to RISC Assembly Language Programming. Addison Wesley. ISBN
0-201-39828-1 7. La Enciclopedia Libre

También podría gustarte