Generalidades Programación

Lenguaje máquina

PorRoberto C. González
Para: Ethical Hack

El lenguaje máquina en la práctica.

Lenguaje máquina
Lenguaje máquina

Antes de poder echar un vistazo a la estructura del lenguaje máquina necesitamos conocer algunas términos en primer lugar.

Nota: Para explicar los siguientes párrafos, utilizaré ejemplos ficticios y MUY SIMPLIFICADOS, pero que describen una aproximación a la realidad. Es importante que no olvides esta observación durante la lectura, está enfocado al público general.

Bit

La unidad elemental con la que podemos trabajar es con el bit, la palabra bit es una contracción de la palabra inglesa binary digit = bit (dígito binario)

Un bit puede tener 2 estados, o valores: 1 y 0 (de ahí su nombre) esta asignación es arbitraria y por convención, universalmente aceptada.

Byte, nibble

Byte
Byte

Por cuestiones de diseño y por convención las instrucciones del lenguaje máquina se fueron agrupando en grupos de 4 y 8 dígitos binarios:

  • A un grupo de 4 bit se le denominó nibble
  • A un grupo de 8 bit se le denominó Byte

y en un Byte se codificó la información mínima utilizable en los sistemas de cómputo.

En un Byte pueden existir 2^8 valores, que nos permiten representar 256 valores distintos.

De 00000000 a 11111111, pasando por todos los valores intermedios (00000001, 00000010, 00000100… etc.), en total 256 combinaciones.

Un Bit:Un Byte
De 0 a 1De 00000000 a 11111111
2 estados256 estados

Instrucciones del procesador

De forma arbitraria podríamos asignar a cada Byte una acción que controle alguna función del procesador, por ejemplo podríamos definir las siguientes reglas:

InstrucciónSignificado (Definidas por el fabricante del CPU)
0000 0000 –No hacer nada
0000 0001 –Sumar V1 y V2 y guardar el resultado
0000 0011 –Muestra en pantalla la variable R
0000 0111 –Guarda en memoria lo que se te da en una variable llamada V1
0000 1111 –Guarda en memoria lo que se te da en una variable llamada V2
0001 0000 –Mover de la memoria el valor de Suma a la variable R

A este grupo de instrucciones que definen que puede hacer el procesador y la forma en que se utilizan se les denomina: Conjunto de Instrucciones del Procesador, y son específicas del procesador o de la familia del procesador.

Del mismo modo que podemos definir las instrucciones del procesador, podemos hacerlo con los datos que utilizaremos.

DatoSignificado (Ya sea por un estándar o por nosotros)
0000 0001 –1 (el número 1)
0000 0011 –2 (el número 2)
0000 0100 –3 (el número 3)

Con estas reglas primitivas podríamos hacer lo siguiente (siempre recuerda que Nosotros definimos qué significa cada combinación, así como las reglas que queremos usar de forma arbitraria):

InstrucciónDato
0000011100000001
0000111100000011
00000001 
0001 0000 
00000011 
00000000 

Podríamos «traducir» lo anterior como:

  1. Guarda en en la variable V1 el número 1
  2. Guarda en en la variable V2 el número 2
  3. Realizamos las suma del valor de V1 más el valor de V2 (1 + 2, en nuestro ejemplo)
  4. Asignamos a la variable R el valor de suma  (R = 3)
  5. Mostrar en pantalla la variable R
  6. No hagas nada

Poniendo todo junto podríamos ponerlo de la siguiente forma (para entenderlo mejor nosotros):

InstrucciónDatoPseudo código
0000011100000001Guarda en en la variable V1 el número 1
0000111100000011Guarda en en la variable V2 el número 2
00000001 Realizamos las suma del valor de V1 más el valor de V2 (1 + 2, en nuestro ejemplo)
00010000 Asignamos a la variable R el valor de suma  (R = 3)
00000011 Mostrar en pantalla la variable R
00000000 No hagas nada

Y el resultado sería mostrar en la pantalla la suma de 2 números.

Aunque el procesador solo leerá:

0000011100000001000011110000001100000001000100000000001100000000

Lenguaje binario
Lenguaje binario

Podrás preguntarte cómo «sabe» el procesador en donde empieza y termina una instrucción, bueno un primer acercamiento (recuerda, estoy simplificando demasiadas cosas) a la respuesta es: considerando la agrupación por Byte de los bits que componen la instrucción, de este modo cada 8 bit, el procesador «sabrá» que empieza otra instrucción y/o dato. De forma adicional el procesador tiene integrado un «diccionario» que le indica cómo interpretar cada byte y qué hacer de acuerdo a la instrucción recibida.

Claro, hay una GRAN cantidad de puntos omitidos, pero para el objetivo de esta exposición, con lo mencionado es suficiente. Espero habers sido claro, sino, házmelo saber para poder refinar el texto.

El conjunto de instrucciones del procesador

En el caso de los procesadores comerciales, los fabricantes son quienes proporcionan a los desarrolladores y programadores una serie de instrucciones que «entiende» el procesador. Éste es el Conjunto de Instrucciones del Procesador. Y todos los programas deben utilizar este conjunto de instrucciones de a cuerdo a las reglas y estructura que el fabricante implementa en el procesador.

Recuerda: Este es un ejemplo extremadamente simplificado pero que permite comprender como es que con 1’s y 0’s podemos dar instrucciones a una computadora.


Si tienes alguna duda que no se responde en este documento, por favor plantea tu pregunta para poder responderte. O escribe directamente a soporte@ehack.mx



Referencias

  • Por Roberto C. González

Fuente Imágenes


Licencia Creative Commons
  
Lenguaje máquina, por Roberto C. González. Se distribuye bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 4.0 Internacional. 
©2019 - 2025, Ethical Hack, Todos los derechos reservados sobre el contenido propio.

eHack Blog

About Author

Leave a comment

También te podría gustar...

C++ Programación

Presentación: Tutorial de C++

Bienvenido a este tutorial de lenguaje C++, está pensado para usuarios que nunca han programado y para usuarios que no
C++ Programación

Lenguaje C++ – Introducción

Presento algunas razones porqué empezar con C++ y una breve descripción histórica del lenguaje. Además algunos compiladores de C++