Diferencia entre revisiones de «Lenguaje ensamblador»
Contenido eliminado Contenido añadido
Sin resumen de edición |
|||
Línea 1:
[[Imagen:Codigo de maquina.png|thumbnail|400px|[[Lenguaje de máquina]] del [[Intel 8088]]. El código de máquina se resalta en rojo, el equivalente en lenguaje assembler en magenta, y las direcciones de memoria donde se encuentra el código, en azul.]]
El '''lenguaje
Fue usado principalmente en los inicios del desarrollo de [[software]], cuando aun no se contaba con los potentes lenguajes de alto nivel. Actualmente se utiliza con frecuencia en ambientes académicos y de investigación, especialmente cuando se requiere la manipulación directa de [[hardware]], se pretenden altos rendimientos o un uso de recursos controlado y reducido.
Muchos dispositivos programables (como los microcontroladores) aun cuentan con el
== Características ==
* El código escrito en lenguaje
* El lenguaje
* Los programas hechos en lenguaje
* Con el lenguaje
== Ensambladores ==
Un [[ensamblador]] (''assembler'' en inglés) es un programa que crea [[código objeto]] traduciendo instrucciones [[Mnemónicos|mnemónicas]] de un programa fuente escrito en
Los ensambladores son por lo general más fáciles de programar que los [[compilador]]es de lenguajes de alto nivel, y han estado disponibles desde la década de [[1950]]. Los ensambladores modernos, especialmente para arquitecturas basadas en [[RISC]], como por ejemplo [[MIPS]], [[SPARC]] y [[PA-RISC]] optimizan las instrucciones para explotar al máximo la eficiencia de [[segmentación (informática)|segmentación]]<ref>''Pipeline'' en inglés.</ref> de la [[CPU]].
Línea 25:
== Lenguaje ==
Un programa escrito en lenguaje
Por ejemplo, un procesador [[x86]] puede ejecutar la siguiente instrucción [[binario|binaria]] como se expresa en código de máquina:
* Binario: 10110000 01100001 (Hexadecimal: 0xb061)
La representación equivalente en lenguaje
* MOV al, 061h
Esta instrucción significa:
* Asigna el valor [[hexadecimal]] 61 (97 [[decimal]]) al registro "al".
El mnemónico "mov" es un ''código de operación'' u "[[opcode]]", elegido por los diseñadores de la colección de instrucciones para abreviar "move" (mover, pero en el sentido de copiar valores de un sitio a otro).
El ''opcode'' es seguido por una lista de argumentos o ''parámetros'', completando una instrucción de
La transformación del lenguaje
El uso del
Cada [[arquitectura de microprocesadores]] tiene su propio lenguaje de máquina, y en consecuencia su propio lenguaje
Pueden existir múltiples conjuntos de mnemónicos o [[sintáxis]] de lenguaje
== Código máquina ==
Línea 74:
Mientras que una computadora reconoce la [[instrucción de máquina]] IA-32
10110000 01100001
para los [[programador]]es de microprocesadores [[x86]] es mucho más fácil reconocer dicha instrucción empleando lenguaje
movb 0x61,%al
(que significa mover el valor [[hexadecimal]] 61 (97 [[decimal]]) al [[registro]] 'al'.)
== Ejemplos de lenguaje
=== Ejemplo 1 ===
El siguiente es un ejemplo del programa clásico ''[[Hola mundo]]'' escrito para la arquitectura de procesador [[x86]] (bajo el sistema operativo [[DOS]]).
Línea 97:
=== Ejemplo 2 ===
Una selección de instrucciones para una computadora virtual<ref name=wwwPOCA>[http://iiusaedu.com/~murdocca/POCA Principles of Computer Architecture] (POCA) – ARCTools computadora virtual disponible para descarga y ejecución del código, acceso el 24 de agosto de 2005</ref>) con las correspondientes direcciones de memoria en las que se ubicarán las instrucciones. Estas direcciones NO son estáticas. Cada instrucción se acompaña del código en lenguaje
{| class="wikitable"
Línea 182:
=== Ejemplo 3 ===
Código en lenguaje
ORG 8030H
Línea 200:
=== Ejemplo 4 ===
Código en lenguaje
ORG 0
Línea 229:
== Véase también ==
{{wikibooks|Programación en lenguaje
*[[Lenguaje de máquina]]
*[[Tipos de datos máquina]]
Línea 239:
* [http://savannah.nongnu.org/projects/pgubook/ Programming from the Ground Up] by Jonathan Bartlett
* [http://www.asmcommunity.net/board/index.php?action=book The ASM Book] by the [http://www.asmcommunity.net ASM Community]
* [http://search.cpan.org/perldoc?Inline::ASM Inline::ASM] módulo [[Perl]] en [[CPAN]] para programar en lenguaje
* [http://www.luisalberto.org/topico/programacion/ensamblador/ Ejemplos prácticos de
[[Categoría:Lenguajes de bajo nivel|Ensamblador]]
|