Google Búsqueda personalizada

Regístrate gratis para participar de los foros, o si ya estás registrado haz login.

lenguaje ensamblador

comentario del autor Mie Abr 13, 2005 1:05 am
   
A ver si entiendo algo, disculpenmen si alguno se ofiende pero no enteindo nada.
empesemos un lenguaje cualquiera por ejemplo el c o c++ previo a dirijirse al microprocesador osea al ejecutarlo este pasa a un lenguaje ensamblador?
y luego este pasa a lenguanje binario?
y a partir de aqui la maquina lo puede manejar osea lo ultimo seria este el lenguaje de maquina?
Esto parese mu tonto pero es la mi realidad......

santi000

Reputación

sin valorar Dom Abr 17, 2005 9:41 am
   
Las computadoras funcionan a base de un conjunto de instrucciones básicas que vienen incorporadas en la circuitería del chip principal, cerebro o cpu (central process unit) las cuales las proporcionan los fabricantes de éste. Por ejemplo las computadoras de la familia Pentium (Intel y AMD fabrican los CPU's) se componen de cientos de instrucciones de máquina. Otros ejemplos son las computadoras McIntosh de la compañía Apple, las estaciones de trabajo de la compañía SUN o las maiframes de IBM. Todas estas computadoras tienen en común que funcionan con el mismo esquema básico de 0's y 1's (por eso se dice que funcionan con un código binario) sin embargo el conjunto de instrucciones es distinto en todas ellas. Es por eso que un programa ya codificado en binario para un tipo de computadora no funciona en otra. Cuando hablamos de lenguaje ensamblador en realidad estamos hablando del lenguaje ensamblador de un tipo específico de computadora. Esto es distinto de hablar de lenguajes como C, C++, Pascal, Basic, etc los cuales existen en distintas computadoras y no son específicos de una arquitectura de computadora. El lenguaje ensamblador de un tipo específico de computadora son las instrucciones de máquina de esa computadora en forma mnémonica (o sea, en forma que sea más entendible para uno) para no tener que tratar con la complejidad de 0's y 1's. Por ejemplo todas las computadoras tienen incorporadas intrucciones para mover datos entre los registros de la CPU (los registros son localidades de memoria que están insertos en la CPU en donde se hacen las operaciones más rápidas que en la memoria principal de la computadora) y generalmente esta instrucción tiene el nombre de MVE, MOVE o algo parecido ("move" de mover en inglés), la cual se usa junto con los nombres de los registros (generalmente estos están etiquetados con las primeras letras del alfabeto como A, B, C, etc.) Así, la instrucción en ensamblador
MOVE A,B
significaría mover el contenido del registro B al contenido del registro A
Esta instrucción tiene una representación única en 0's y 1's en la arquitectura de computadora que la soporte.
Una instrucción en un lenguaje como C, C++, Pascal, Basic, etc. no necesariamente tiene una representación equivalente de una sola instrucción en lenguaje ensamblador de una máquina específica; generalmente esta se traduce en dos o más (sino es que en cientos o miles) instrucciones de máquina. Por poner un ejemplo, la instrucción
a = b + c
se podría traducir en lenguaje de máquina como
mover el contenido de la localidad de memoria referenciada por la variable "c" en un registro
mover el contenido de la localidad de memoria referenciada por la variable "b" en otro registro
sumar estos registros
mover el resultado de la suma en la localidad de memoria referenciada por la variable "a"
Esto es a modo de ejemplo y depende del lenguaje de ensamblador considerado ya que hay arquitecturas de computadoras que ya tienen incorporadas instrucciones que directamente suman dos localidades de memoria y la dejan en otra, por lo que la instrucción arriba mencionada si tendría una traducción directa en una sola instrucción de máquina. Pero están por ejemplo las instrucciones que despliegan un mensaje en pantalla del tipo printf ("hola, mundo"); en C, cout << "hola, mundo"; en C++, WRITE ('hola, mundo'); en Pascal o print "hola, mundo" en Basic las cuales si requieren bastantes instrucciones de máquina.
Cuando se programa en en lenguaje como C, C++ u otros se necesita un programa especial para que traduzca las instrucciones del programa y las podamos ejecutar en la computadora que estemos usando. Estos programas generalmente son los compiladores (y digo generalmente ya que antes se usaban mucho los intérpretes que son programas que ejecutan línea por línea los programas) y éstos usualmente producen como salida un archivo el cual se puede ejecutar directamente en la computadora. Por ejemplo para las computadoras con cpu's Pentium se usan principalmente dos tipos de sistemas operativos: Windows y Linux, tanto en uno como en otro existen compiladores para C, C++ y muchos otros lenguajes de programación. Dependiendo del compilador que escojamos y del sistema operativo tendremos un programa en código binario que ejecute el programa compilado el cual será distinto (en instrucciones de máquina) al de otro compilador aunque realize la misma tarea y estemos usando la misma máquina con procesador Pentium. Generalmente el compilador no traduce un programa en un lenguage como C, C++ u otros a mnemónicos de lenguage ensamblador sino que directamente produce un archivo en código binario de máquina pero hay compiladores que tienen la opción de producir un archivo con mnemónicos en ensamblador del programa.

Juan_Perez

Reputación

sin valorar Dom May 22, 2005 6:35 am
   
yo opino :

en el lenguaje ensamblador la forma de escribir es en numeros hexdecimal es decir contando asi:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F.
y para programar tienes que jugar con los registros de la cpu que estas usando ejm: mov ah,01(h)
mov bh,02(h)

etc .la diferencia entre el lenguaje de alto nivel como c++, y el lenguaje de bajo nivel como ensamblador , es que el programador en el lenguaje ensamblador debe conocer la cpu por dentro para poder usar los registros que tiene esta

panchov290

Reputación



Hacer una pregunta

Boletín de Noticias

Reciba noticias de tecnología, tips de reparación y ofertas exclusivas.



Reglamento / P+F

Foros

Miembros / Expertos