jueves, 13 de octubre de 2016
Mnemonicos
Un lenguaje en
mnemónico o lista de instrucciones consiste en un conjunto de códigos
simbólicos, cada uno de los cuales corresponde a una instrucción.
Cada fabricante
utiliza sus propios códigos, y una nomenclatura distinta para nombrar las
variables del sistema.
El lenguaje en
mnemónico es similar al lenguaje ensamblador del micro.
MOV (transferencia)
Sintaxis: MOV dest, origen.
Transfiere datos de longitud byte o palabra del operando origen
al operando destino. Pueden ser operando origen y operando destino cualquier
registro o posición de memoria direccionada de las formas ya vistas, con la
única condición de que origen y destino tengan la misma dimensión.
LEA (carga dirección efectiva)
Sintaxis: LEA destino, origen
Transfiere el desplazamiento del operando fuente al operando
destino. Otras instrucciones pueden a continuación utilizar el registro como
desplazamiento para acceder a los datos que constituyen el objetivo.
POP (extraer de la pila)
Sintaxis: POP destino
Transfiere el elemento palabra que se encuentra en lo alto de
la pila (apuntado por SP) al operando destino que a de ser tipo palabra, e
incrementa en dos el registro SP.
PUSH (introduce en la pila)
Sintaxis: PUSH origen
Decrementa el puntero de pila (SP) en 2 y luego transfiere la
palabra especificada en el operando origen a la cima de la pila.
CALL (llamada a subrutina)
Sintaxis: CALL destino
Transfiere el control del programa a un procedimiento, salvando
previamente en la pila la dirección de la instrucción siguiente, para poder
volver a ella una vez ejecutado el procedimiento.
JMP (salto)
Sintaxis: JMP dirección o JMP SHORT dirección
Transfiere el control incondicionalmente a la dirección
indicada en el operando.
RET / RETF (retorno de subrutina)
Sintaxis: RET [valor] o RETF [valor]
Retorna de un procedimiento extrayendo de la pila la dirección
de la siguiente dirección. Se extraerá el registro de segmento y el
desplazamiento en un procedimiento de tipo FAR (dos palabras) y solo el
desplazamiento en un procedimiento NEAR (una palabra). si esta instrucción es
colocada dentro de un bloque PROC-ENDP (como se verá en el siguiente capítulo)
el ensamblador sabe el tipo de retorno que debe hacer, según el procedimiento
sea NEAR o FAR.
INT (interrupción)
Sintaxis: INT n (0 <= n <= 255)
Inicializa un procedimiento de interrupción de un tipo indicado
en la instrucción.
ADD (suma)
Sintaxis: ADD destino, origen
Suma los operandos origen y destino almacenando el resultado en
el operando destino. Se activa el acarreo si se desborda el registro destino
durante la suma.
SUB (resta)
Sintaxis: SUB destino, origen
Resta el operando destino al operando origen, colocando el
resultado en el operando destino. Los operandos pueden tener o no signo, siendo
necesario que sean del mismo tipo, byte o palabra.
MUL (multiplicación sin signo)
Sintaxis: MUL origen (origen no puede ser operando
inmediato)
Multiplica el contenido sin signo del acumulador por el
operando origen.
DIV (división sin signo)
Sintaxis: DIV origen (origen no puede ser operando
inmediato)
Divide, sin considerar el signo, un número contenido en el
acumulador y su extensión (AH, AL si el operando es de tipo byte o DX, AX si el
operando es palabra) entre el operando fuente.
Etiquetas:
Lenguaje de Interfaz,
Mnemonicos
Microprocesadores Intel 8080 y 8086 (Resumen)
Intel 8080
·
Fue el cerebro de la primera computadora
personal: La Altair.
·
Es considerado el primer Microprocesador de propósito
general.
·
El Sistema Operativo CPM/80 de Digital Research
fue escrito para este procesador.
·
Sus características son:
o Bus
de datos de 8 bits
o Alimentación
+12V, +5V y -5V
o Frecuencia
máxima de clock: 2 MHz
o Espacio
de direccionamiento: 64 Kbytes
o Contiene
alrededor de 6,000 transistores NMOS de 6 Micrones.
Intel 8086
·
Es el primer procesador de 16 bits.
·
Se presentó en Junio de 1978.
·
Un año después el 8088 aprecio con la misma
arquitectura interna pero con un bus externo de 8 bits por compatibilidad con
el hardware legacy.
Etiquetas:
Intel 8080 y 8086,
Lenguaje de Interfaz
miércoles, 12 de octubre de 2016
Versiones de Lenguaje Ensamblador
Cruzados:
Permiten el soporte de medios físicos como pantallas,
impresoras, teclado, etc. y la programación que ofrecen maquinas potentes que
luego serán ejecutados en sistemas especializados.
Residentes:
Permanecen en la memoria de la computadora, y cargan para su
ejecución al programa objeto producido. Es el indicado para el desarrollo de
pequeños sistemas de control.
Macroensambladores:
Permiten el uso de macroinstrucciones, son programas grandes
que no permanecen en memoria una vez que se a generado el código objeto, normalmente
son programas complejos y residentes.
Micro Ensambladores:
Indica al interprete las instrucciones de cómo debe actuar la
CPU.
Ensambladores de una fase leen una línea de programa fuente y la traducen directamente para producir una instrucción en lenguaje máquina, estos ensambladores son sencillos, baratos y ocupan poco espacio.
Ensambladores de una fase leen una línea de programa fuente y la traducen directamente para producir una instrucción en lenguaje máquina, estos ensambladores son sencillos, baratos y ocupan poco espacio.
Ensambladores De Dos Fases:
Se llaman así por que realizan la traducción en dos etapas, en
la primera fase revisan el código fuente y lo construyen en una tabla de
símbolos, en la segunda fase vuelven a leer el programa fuente y pueden
traducirlo por completo. Estos ensambladores son los más utilizados en la
actualidad.
IDE´S de Lenguaje Ensamblador
El Netwide
Assembler o NASM, es un ensamblador libre para la
plataforma Intel x86. Puede ser usado para escribir programas tanto
de 16 bits como de 32 bits (IA-32). En el NASM, si se usan las
bibliotecas correctas, los programas de 32 bits se pueden escribir de una
manera tal para que sean portables entre cualquier sistema
operativo x86 de 32 bits. El paquete también incluye
un desensamblador, el NDISASM.
El NASM fue escrito originalmente
por Simon Tatham con ayuda de Julian Hall, y actualmente es
desarrollado por un pequeño equipo en SourceForge que le hace
mantenimiento. Fue lanzado originalmente bajo su propia licencia, pero más
adelante fue cambiada por la licencia GNU Lesser General Public License,
seguido de un número de problemas políticos causado por la selección de la
licencia. La próxima versión del NASM, la 2.00, actualmente está siendo
desarrollada bajo la bifurcación 0.99, e incluirá soporte para el x86-
64 (x64/AMD64/Intel 64), junto con la respectiva salida de archivo objeto
de 64 bits. Esta versión de desarrollo puede ser encontrada en el NASM git
repository.
Nasm-IDE: Editor, compilador y
enlazador, es compatible solo con nasm y Windows DOS.
Net Wide Assembler, es un ensamblador bajo licencia BSD para plataformas Intel x86, permite escribir programas en 16, 32, 64 bits. Es compatible para múltiples plataformas, entre ellas DOS, Windows y Linux.
NASM no se acompaña de un enlazador propio, aunque puede utilizarse cualquiera de distribución libre como es ALINK o bien, en el caso de Linux, usar el propio del sistema LINK.
Net Wide Assembler, es un ensamblador bajo licencia BSD para plataformas Intel x86, permite escribir programas en 16, 32, 64 bits. Es compatible para múltiples plataformas, entre ellas DOS, Windows y Linux.
NASM no se acompaña de un enlazador propio, aunque puede utilizarse cualquiera de distribución libre como es ALINK o bien, en el caso de Linux, usar el propio del sistema LINK.
Es un ensamblador para
la familia x86 de microprocesadores. Fue producido originalmente
por Microsoft para el trabajo de desarrollo en su sistema
operativo MS-DOS, y fue durante cierto tiempo el ensamblador más popular
disponible para ese sistema operativo. El MASM soportó una amplia variedad de
facilidades para macros y programación estructurada,
incluyendo construcciones de alto nivel para bucles, llamadas a procedimientos
y alternación (por lo tanto, MASM es un ejemplo de un ensamblador de alto
nivel). Versiones posteriores agregaron la capacidad de producir programas para
los sistemas operativos Windows. MASM es una de las pocas herramientas de
desarrollo de Microsoft para las cuales no había versiones separadas de
16 bits y 32 bits. FLAT Assembler (FASM).
SASM (SimpleASM) - sencillo
IDE multiplataforma de código abierto para NASM, MASM, GAS, lenguajes
ensamblador MASM.
SASM soporta 4 trabajar
con montadores - NASM, MASM, gas y FASM en 2
modos -x64 y x86. Usted puede elegir el
modo de configuración de la
pestaña "Build".
También allí se
puede cambiar las opciones de ensamblador y
enlazador y elegir programas para el montaje y la
vinculación.
Es un ensamblador libre,
multi-paso, con el estilo de la sintaxis de Intel que soporta las
arquitecturas IA-32 yx86- 64. El proyecto fue iniciado
en 1999 por Tomasz Grysztar, que en aquella época era un
estudiante no graduado de matemáticas enPolonia. El FASM está escrito en lenguaje
ensamblador, viene con el código fuente completo, y fue capaz de
ensamblarse a sí mismo (bootstrapping) desde la versión 0.90 del 4 de
mayo de 1999. El primer lanzamiento público fue anunciado la 15
de marzo de2000. Es notable por su velocidad rápida, optimizaciones de
tamaño, portabilidad, poderosas capacidades de macro, y la comunidad
delforo en línea. Sin embargo, casi no usa opciones en la línea de
comandos. Hay disponibles archivos binarios y de código
fuente paraLinux, Windows (incluyendo un IDE de
desarrollo), DOS, OpenBSD, MenuetOS, OctaOS, y DexOS.
FASM contiene vínculos (bindings) para la GUI de Windows
y OpenGL. Todas las versiones de FASM pueden generar los
siguientes archivos objeto: binarios planos (flat
binary), ELF o COFF (clásico o de MS), como también
executables en formatoMZ, ELF o PE. Existe un traslado del
ensamblador a la arquitectura ARM, llamado FASMARM. La última versión
disponible es la 1.70.03, lanzada el 29 junio de 2012.
Etiquetas:
IDE´S de Lenguaje Ensamblador,
Lenguaje de Interfaz
Suscribirse a:
Entradas (Atom)