LENGUAJE ENSAMBLADOR PARA PC
Enviado por luanocbu • 27 de Diciembre de 2015 • Informe • 2.774 Palabras (12 Páginas) • 244 Visitas
LENGUAJE ENSAMBLADOR PARA PC
La memoria en un computador se compone de números. La memoria del computador almacena toda la información en números binarios, en otras palabras en base dos y no en el sistema de numeración común (decimal).
La diferencia entre un numero decimal y un número binario es que un número decimal puede tener los dígitos desde el 0 al 9 y un número binario solo del 0 al 1.
También existe la numeración hexadecimal que se pueden usar como una representación resumida de los números binarios
Dentro de la organización del computador se puede diferencia los siguientes componentes: la memoria, la cpu.
- Memoria: La unidad básica es el byte donde se sobreentiende que si un computador cuenta con 32Megabytes de memoria podría almacenar aproximadamente 32 millones de bytes de información, donde cada byte esta etiquetado por un número único conocido como su dirección.
- CPU: La Unidad Central de Procesamiento es el dispositivo físico que ejecuta las instrucciones, por lo general son muy simples pero a su vez pueden requerir datos que estén en un lugar especial de almacenamiento de la CPU llamados registros. La ventaja del CPU es que puede acceder a datos de los registros de manera más rápida en la memoria, pero es de manera limitada.
En general cada tipo de CPU tiene su propio y único lenguaje de máquina.
Es importante saber acerca del Lenguaje de máquina ya que cada tipo de CPU entiende su propio lenguaje de máquina. Las instrucciones en lenguaje de máquina son números almacenados como bytes en memoria. Cada instrucción tiene su propio y único código llamado código de operación u opcode.
El lenguaje de maquina es muy difícil de programar directamente. Descifrar el significado de las instrucciones codificadas numéricamente es tedioso para los humanos.
Cabe decir lo siguiente del lenguaje ensamblador:
Un programa escrito en lenguaje ensamblador es almacenado como texto (tal como programas de alto nivel). Cada instrucción representa exactamente una instrucción de la máquina, por ejemplo la palabra add es el nemónico para la instrucción de suma.
Un ensamblador es un programa que lee un archivo de texto con instrucciones de ensamblador y convierte el ensamblador en código de máquina.
Se debe tener en claro acerca de los operandos de las instrucciones
Los códigos de las instrucciones de máquina tienen una variedad de tipos y operandos; sin embargo, en general cada instrucción en si misma tiene un número fijo de operandos (0 a 3). Los operandos pueden tener los siguientes tipos:
- Registro: Estos operandos se refieren directamente al contenido de los registros de la CPU.
- Memoria: Estos se refieren a los datos en la memoria. La dirección de los datos puede ser una constante fija en la instrucción o puede ser calculada usando los valores de los registros. Las direcciones son siempre desplazamientos relativos al comienzo de un segmento.
- Inmediato: Estos son valores fijos que están listados en la instrucción en sí misma. Ellos son almacenados en la instrucción en si misma (en el segmento de código), no en el segmento de datos.
- Implicado: Estos operandos no son mostrados explícitamente.
Se sabe que una directiva es un artificio del ensamblador no de la CPU y se utilizan generalmente para decirle al ensamblador que haga alguna cosa o informarle al ensamblador de algo. Se utilizan por lo general para definir constantes, definir memoria para almacenar datos, etc.
Como ejemplo tenemos a las directiva equ que se puede usar para definir un símbolo.
También tenemos las directivas de datos, las cuales son usadas en segmentos de datos para definir espacios de memoria.
Cabe recalcar acerca de las entradas y salidas las cuales son acciones muy dependientes del sistema. Lo cual involucra al hardware del sistema.
OPERACIONES CON BITS:
Operaciones de desplazamientos
El lenguaje ensamblador le permite al programador manipular bits individuales de los datos. Una operación común es llamada un desplazamiento, donde tenemos;
El desplazamiento lógico, es el tipo más simple de desplazamientos debido a que desplaza de una manera muy directa. Las más comunes son las multiplicaciones y divisiones rápidas.
Actualmente, los desplazamientos lógicos se pueden usar para multiplicar y dividir valores sin signo. Ellos no funcionan para valores con signo. Considere el valor bytes FFFF (−1).
Los desplazamientos aritmeticos, estos desplazamientos están diseñados para permitir que números con signo se puedan multiplicar y dividir rápidamente por potencias de 2.
Los desplazamientos de rotación, trabajan como los desplazamientos lógicos excepto que los bits perdidos en un extremo del dato se desplazan al otro lado. Así, el dato es tratado como si fuera una estructura circular
La instrucción TEST
Realiza una operación AND, pero no almacena el resultado.
Usos de las operaciones con bits
Las operaciones con bits son muy ´utiles para manipular bits individuales sin modificar los otros bits.
Evitando saltos condicionales
Una manera de evitar este problema, es evitar usar ramificaciones condicionales cuando es posible
Las instrucciones SETxx suministran una manera para suprimir ramificaciones en ciertos casos. Esta instrucción fija el valor de un registro byte o un lugar de memoria a cero, basado en el estudio del registro FLAGS en que los bytes individuales se almacenan en memoria (no bits) de un elemento multibyte se almacena en memoria. Big endian es el método más directo. Almacena el byte más significativo primero, luego el siguiente byte en peso y así sucesivamente.
Debemos tener cuidado con con Little and Big Endian debido que para la programación típica, lo endian de la CPU no es importante. La mayoría de las veces esto es importante cuando se transfiere datos binarios entre sistemas de cómputo diferente. Esto es ocurre normalmente usando un medio de datos físico (como un disco) o una red. Ya que el código ASCII es de 1 byte la característica endian no le es importante
...