Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
este tutorial está destinado a aquellos que no están familiarizados con el ensamblador en
absoluto, o tener una idea muy lejana al respecto. por supuesto si tienes conocimiento de
algún lenguaje de programación de alto nivel (java, básico, c / c ++, pascal ...) que te puede
ayudar mucho.
pero incluso si usted está familiarizado con el ensamblador, sigue siendo una buena idea
mirar a través de este documento con el fin de estudiar la sintaxis emu8086.
se supone que usted tiene algún conocimiento sobre la representación numérica (hex /
bin), si no es altamente recomendable estudiar el tutorial de sistemas de numeración
antes de proceder.
¿Qué es lenguaje ensamblador?
lenguaje de ensamblaje es un lenguaje de programación de bajo nivel. usted necesita
conseguir un cierto conocimiento sobre la estructura de computadora para entender
cualquier cosa. el modelo de computadora simple como lo veo:
a pesar del nombre de un registro, es el programador quien determina el uso para cada
registro de propósito general. el propósito principal de un registro es mantener un
número (variable). el tamaño de los registros anteriores es de 16 bits, es algo así como:
0011000000111001b (en forma binaria) o 12345 en formato decimal (humano).
4 registros de propósito general (AX, BX, CX, DX) están formados por dos registros de 8
bits independientes, por ejemplo si AX = 0011000000111001b, entonces AH = 00110000b
y AL = 00111001b. por lo tanto, cuando se modifica cualquiera de los registros de 8 bits se
actualiza también el registro de 16 bits y viceversa. el mismo es para otros 3 registros, "H"
es para alto y "L" es para la parte baja.
porque los registros están situados dentro de la CPU, son mucho más rápidos que la
memoria. el acceso a una ubicación de memoria requiere el uso de un bus de sistema, por
lo que tarda mucho más. acceder a los datos en un registro normalmente no toma tiempo.
por lo tanto, debe intentar mantener variables en los registros. los conjuntos de registros
son muy pequeños y la mayoría de los registros tienen propósitos especiales que limitan
su uso como variables, pero siguen siendo un excelente lugar para almacenar datos
temporales de cálculos.
registros de segmentos
CS - señala el segmento que contiene el programa actual.
DS - generalmente apunta al segmento donde se definen las variables.
ES - registro de segmento extra, es hasta un codificador para definir su uso.
SS - puntos en el segmento que contiene la pila.
aunque es posible almacenar cualquier dato en los registros de segmentos, esto nunca es
una buena idea. los registros de segmento tienen un propósito muy especial - apuntando
a los bloques de memoria accesibles.
los registros de segmentos trabajan junto con el registro de propósito general para
acceder a cualquier valor de memoria. Por ejemplo, si nos gustaría acceder a la memoria
en la dirección física 12345h (hexadecimal), debemos establecer el DS = 1230h y SI =
0045h. Esto es bueno, ya que de esta manera podemos acceder a mucha más memoria
que con un solo registro que está limitado a valores de 16 bits.
CPU hace un cálculo de dirección física multiplicando el registro de segmento por 10h y
agregando el registro de propósito general a él (1230h * 10h + 45h = 12345h):
puede formar todas las combinaciones válidas tomando sólo un elemento de cada
columna o omitiendo la columna al no tomar nada de ella. como ves BX y BP nunca van
juntos. SI y DI también no van juntos. aquí hay algunos ejemplos de modos de
direccionamiento válidos: [BX + 5], [BX + SI], [DI + BX-4]
si se agrega cero a un número decimal, se multiplica por 10, sin embargo 10h = 16, por lo
que si se agrega cero a un valor hexadecimal, se multiplica por 16, por ejemplo:
7h = 7
70h = 112
Instrucción MOV
copia el segundo operando (fuente) al primer operando (destino).
el operando de origen puede ser un valor inmediato, un registro de uso general o una
ubicación de memoria.
el registro de destino puede ser un registro de propósito general o una ubicación de
memoria.
ambos operandos deben tener el mismo tamaño, que puede ser un byte o una palabra.