Beruflich Dokumente
Kultur Dokumente
Es el encargado de ejecutar las instrucciones que le especificamos en un programa y realizar las comunicaciones con los dems perifricos para realizar la tarea que se le ha encomendado. El microprocesador sirve para realizar las tareas que se le encomienden, debe realizar primero la puesta en memoria del programa que le decimos que debe ejecutar y seguir una serie de pasos antes de realizar dicha ejecucin. Para ello, el programa se alojar en la memoria a partir de una direccin determinada, a sta direccin a partir de ahora la vamos a llamar "direccin de inicio" o "direccin de comienzo".
Por ello, en donde est sta direccin comenzar a guardarse nuestro programa hasta que est completamente alojado en la memoria, desde la direccin de inicio hasta la ltima posicin de memoria que ocupe nuestro programa, en esas direcciones no se alojar ningn otro programa hasta que el nuestro termine sus funciones. Una vez cargado en la memoria, el microprocesador va a la direccin de inicio y empieza la ejecucin de las instrucciones que tiene en dicho programa y hace las funciones que se le ha encomendado.
Los Registros
Hace tiempo, cuando los microprocesadores eran basados en tecnologa de 16 bits, los registros del microprocesador, deban ser tambin de 16 bits, probablemente a la falta de tecnologa de la poca. Hoy en da los registros son de amplio margen en bits, y esto se menciona, por que para poder acceder a una posicin de memoria, dado que la memoria de los ordenadores puede ser de megas, los registros de 16 no permitan poder superar la barrera de los 64K o sea que como mximo podan acceder a 65535 posiciones de memoria, quedando la restante intil.
Los Registros
Hoy en da con la aparicin de la memoria Extendida y Expandida, esto es algo que ya ha pasado a la historia, pero cuando tenan que acceder a los 64K que se tenan por registro, para poder acceder a una direccin de memoria superior se creo los llamados registros de segmento.
Un registro de segmento lo que hace en realidad es dividir la memoria en zonas de 64K, y cada segmento poda trabajar con dicha memoria, con esto y en conjuncin con los registros normales se poda acceder a la totalidad de la memoria disponible, con la simple instruccin de cambio de segmento y del correspondiente registro de segmento.
Los Registros
A partir desde ahora cuando hablemos de registros de segmentos lo haremos con las palabra CS, DS y ES. Aunque los registros sean conocidos y usados por sus nombres AX, BX, CX , etc.., en realidad cada uno de estos registros, podemos decir que se dividen en dos, su parte alta o AH y su parte baja o AL, esto se debe a que con ello podemos acceder de forma independiente al mismo registro pero teniendo dos valores posibles. Esto es algo que debemos tener en cuenta , pues si lo vamos a usar, el valor del registro AX no ser el mismo que los valores por separado de su parte alta AH y su parte baja AL.
Los Registros
Esto se debi a que cuando se crearon los microprocesadores 80X86 se pens en la necesidad de acceder de forma independiente a las dos zonas de que esta compuesto todo registro.
La Instruccin MOV
Con la instruccin MOV se puede decir que asignamos valores a los registros, bien es cierto que como hemos visto anteriormente en el capitulo de registros, tenemos dos tipos de registros, los normales y los de segmento, a cada uno de ellos la asignacin de valores por medio del MOV se produce de forma distinta.
La Instruccin MOV
Con esto hemos introducido el valor 16 en el registro AX, pero esto no es lo mismo que: MOV AX, [16] Esto aunque nos parezca parecido o igual , en realidad es completamente diferente, mientras que con MOV AX,16, introducimos el valor 16 en el registro AX, con MOV AX[16] , en realidad introducimos en el registro AX el valor que se encuentre en la posicin de memoria numero 16.
La Instruccin MOV
Otra asignacin con los registros normales, son las que se producen entre ellos mismos: MOV AX,BX
Esto carga el valor del registro BX en el AX, o sea que ahora tendran tanto AX como BX el mismo valor, tambin hemos de decir que con esto, el valor que tuviera AX se perdera al asignarle el valor que tiene BX.
La Instruccin MOV
Como hemos dicho , los registros de segmento tienen una asignacin distinta, y esto se debe a que a un registro de segmento no le podemos asignar el valor directamente, por ejemplo: MOV DS, 10 Esto no se nos permite y dara un error, para hacer esto debemos utilizar un registro intermedio: MOV AX,16 MOV DS,AX con esto ponemos el valor 16 en DS que es lo que queramos , pero con el registro AX como intermediario, primero se lo asignamos a AX y despus a DS le asignamos el valor de AX.
La Instruccin MOV
Otra funcin de MOV es la asignacin de un registro a una determinada posicin de memoria, ejemplo: MOV AX,[10]
dijimos que pona en AX el valor que tuviera la posicin 10 de memoria. MOV[10],AX pone en la posicin de memoria lo que contenga el registro AX
Sistemas Numricos
El
sistema bsico en Lenguaje Ensamblador es el sistema Hexadecimal, pero antes debemos explicar el sistema binario, que es el que usa el ordenador, y el decimal.
Sistema Decimal
El
sistema decimal es el que prcticamente todos usamos, osea de 1 al infinito, dicho sistema de basa en la unidad , el uno, todos son mltiplos o producto de la suma de unidades (2 = 1 + 1) y as sucesivamente.
Sistema Hexadecimal
El
sistema hexadecimal esta basado en los valores del 1 al 15 , compuesto por los nmeros del 0 al 9 y por las letras A,B,C,D,E,F quedando la tabla de valores de la siguiente forma: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
Sistema Binario
El sistema se basa en valores, el 0 y el 1, aunque con la unin de ambos es puede crear cualquier numero. Para cada valor posee una determinada caracterstica , siendo su tabla de valores del 0 al 15 as: 0000 --0 0001 --1 0010 --2 0011 --3 0100 --4 0101 --5 0110 --6 0111 --7 1000 --8 1001 --9 1010 --10 1011 --11 1100 --12 1101 --13 1110 --14 1111 --15
Trabajando en el lenguaje ensamblador nos encontramos con la necesidad de convertir nmeros del sistema binario, que es el empleado por los ordenadores en sus operaciones ms elementales, al sistema decimal. El sistema binario est basado en 1 0, siendo 1 como valor activo y el 0 como inactivo.
El proceso para convertir un nmero del sistema binario al decimal es an ms sencillo; basta con desarrollar el nmero, teniendo en cuenta el valor de cada dgito en su posicin, que es el de una potencia de 2, cuyo exponente es 0 en el bit situado ms a la derecha, y se incrementa en una unidad segn vamos avanzando posiciones hacia la izquierda.
Por ejemplo, para convertir el nmero binario 10100112 a decimal, lo desarrollamos teniendo en cuenta el valor de cada bit:
1*26 + 0*25 + 1*24 + 0*23 + 0*22 + 1*21 + 1*20 = 83
10100112 = 8310
Convertir un nmero decimal al sistema binario es muy sencillo: basta con realizar divisiones sucesivas por 2 y escribir los restos obtenidos en cada divisin en orden inverso al que han sido obtenidos.
Por ejemplo, para convertir al sistema binario el nmero 7710 haremos una serie de divisiones que arrojarn los restos siguientes: 77 : 2 = 38 Resto: 1 38 : 2 = 19 Resto: 0 19 : 2 = 9 Resto: 1 9 : 2 = 4 Resto: 1 4 : 2 = 2 Resto: 0 2 : 2 = 1 Resto: 0 1 : 2 = 0 Resto: 1
en cdigo binario, los nmeros decimales siguientes: 191, 25, 67, 99, 135, 276
en cdigo binario, los nmeros decimales siguientes: 191, 25, 67, 99, 135, 276
En el sistema hexadecimal los nmeros se representan con diecisis smbolos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E y F. Se utilizan los caracteres A, B, C, D, E y F representando las cantidades decimales 10, 11, 12, 13, 14 y 15 respectivamente, porque no hay dgitos mayores que 9 en el sistema decimal. El valor de cada uno de estos smbolos depende, como es lgico, de su posicin, que se calcula mediante potencias de base 16.
1A3F16 = 1*163 + A*162 + 3*161 + F*160 1*4096 + 10*256 + 3*16 + 15*1 = 6719 1A3F16 = 671910
Ejercicio 7: Expresa en el sistema decimal las siguientes cifras hexadecimales: 2BC516, 10016, 1FF16
Ejercicio 7: Expresa en el sistema decimal las siguientes cifras hexadecimales: 2BC516, 10016, 1FF16
De ah que, tomando los restos en orden inverso, resolvemos el nmero en hexadecimal: 173510 = 6C716