Documente Academic
Documente Profesional
Documente Cultură
ARREGLOS
GRUPO 8
MASIAS-QUISPE-EDGAR VALENCIA-MAMANI-GLADYS ERICA SOLIS-CANO-MARCO EMERSON MAZA CHURATA RUTH MILAGROS PAUCAR FARFAN CARLOS ENRIQUE RAMOS VILLARES YANG ERVIMD MONTES SENCE LEYLA PAMELA SONCCO PIMENTEL BRAULIO ANDRES
ARREGLOS
Los arreglos son una coleccin de variables del mismo tipo y se referencian usando un nombre comn. Sus principales caractersticas son: 1. Consta de posiciones de memoria consecutivas. 2. La direccin ms baja corresponde al primer elemento y la ms alta al ltimo. 3. Un arreglo puede tener una o varias dimensiones. 4. Un arreglo es una coleccin finita, homognea y ordenada de elementos. 5. Finita: Todo arreglo tiene un lmite; es decir, debe determinarse cul ser el nmero mximo de elementos que podrn formar parte del arreglo. 6. Homognea: Todos los elementos del arreglo deben ser del mismo tipo. 7. Ordenada: Se puede determinar cul es el primer elemento, el segundo, el tercero,.... y el n-simo elemento.
TIPOS DE ARREGLOS
1. Arreglos Unidimensionales (Vectores) Un arreglo unidimensional es un tipo de datos estructurado que est formado de una coleccin finita y ordenada de datos del mismo tipo. Es la estructura natural para modelar listas de elementos iguales. 2. Arreglos Bidimensionales (Tablas o Matrices) Este tipo de arreglos al igual que los anteriores es un tipo de dato estructurado, finito ordenado y homogneo. El acceso a ellos tambin es en forma directa por medio de un par de ndices. 3. Arreglos Multidimensionales (Tres o ms dimensiones Cubos) Este tambin es un tipo de dato estructurado, que est compuesto por n dimensiones. Para hacer referencia a cada componente del arreglo es necesario utilizar ndices, uno para cada dimensin.
ARREGLOS
A diferencia de los lenguajes de alto nivel donde existen mecanismos para declarar y usar arreglos, en ensamblador el programador tiene que crear el cdigo para declarar y usar los arreglos.
DECLARACIN DE ARREGLOS
La sintaxis de estas directivas, en el caso de declaraciones de arreglos, son:
[nomArreg] [nomArreg] [nomArreg] [nomArreg] db dw dd dq exp[, exp]... exp[, exp]... exp[, exp]... exp[, exp]...
donde nomArreg es el nombre del arreglo y exp son expresiones constantes. El nmero de expresiones determina el tamao del arreglo y sus valores se utilizan para inicializar el arreglo
DECLARACIN DE ARREGLOS
Por ejemplo bdtos db 0, 1, 2, 3, 4 ; Arreglo de Cinco ; variables de tipo byte ; inicializadas a los ; valores 0, 1, 2, 3 y 4. 'A', 'B', 'C ; Arreglo de tres ; variables de tipo byte ; inicializadas a los ; a los valores 65d, 66d ; y 67d. 0123h, 2345h ;Arreglo de cinco 4567h, 6789h ;variables de tipo 89abh ; palabra inicializadas
cresps db
wdtos dw dw dw
bdtosx db
10 dup(?)
bdtos
db
5 dup(1), 0 ; Arreglo de seis variables de tipo byte. ; Las primeras cinco inicializadas a 1 y la ; ltima a 0. 5 dup(0, 1) ; Arreglo de 10 variables de tipo ; palabra inicializadas a los ; valores 0, 1, 0, 1, etc.
wdtos dw
end
La primera lnea de la declaracin anterior utiliza la directiva label para declarar la etiqueta bArreg de tipo byte. label le indica al ensamblador cmo accesar a los datos que se declaran enseguida. En este caso bArreg ser tratado como un arreglo de bytes, no reserva espacio de memoria. La sintaxis de la directiva label es la siguiente:
label etiq
tipo
donde etiq es el identificador de la etiqueta y tipo es el tipo de los datos declarados a continuacin. tipo puede ser: byte, word, dword, etc.
Esa distancia puede medirse de dos formas: La distancia expresada en nmero de elementos, llamada tambin ndice, o la distancia medida en bytes, llamada tambin desplazamiento.
Esa distancia puede medirse de dos formas: La distancia expresada en nmero de elementos, llamada tambin ndice, o la distancia medida en bytes, llamada tambin desplazamiento.
entonces, las siguientes instrucciones almacenan el valor de 5 en el primer elemento, ndice 0, y el valor de 6 en el tercer elemento, ndice 2, de bdtosx.
mov mov [bdtosx], 5 [bdtosx+2], 6 ; bdtosx[0] = 5 ; bdtosx[2] = 6
y la siguientes instrucciones almacenan el valor de 500 en el primer elemento, ndice 0, y el valor de 300 en el cuarto elemento, ndice 3, de wdtosx: mov mov [wdtosx], 500 ; wdtosx[0] = 500 [wdtosx+2*3], 300 ; wdtosx[3] = 300
El direccionamiento registro indirecto se emplea normalmente para permitir que una instruccin opere en mltiples variables o elementos de un arreglo. Por ejemplo:
mov ax, [bx] inc [word si] dec [byte di]
Por otro lado, las siguientes instrucciones almacenan el valor de 300 en el elemento del arreglo wdtosx cuyo ndice est en la variable indice:
mov mov
di, 1
El direccionamiento base-indexado se emplea normalmente para accesar a los elementos de un arreglo. Los registros BX o BP pueden contener la direccin base de un arreglo, los registros SI o DI el desplazamiento del elemento con respecto a la direccin base del arreglo y luego agregarle un posible valor n para localizar un campo en este elemento especfico. Por ejemplo, las siguientes instrucciones almacenan el valor de 6 en el elemento del arreglo bdtosx cuyo ndice est en la variable indice:
; bdtosx[indice] =6
OPERACIONES DE CADENAS
El ensamblador del 8086 posee un conjunto de instrucciones especiales para procesar arreglos de bytes y de palabras. Estas instrucciones aunque reciben el nombre de instrucciones de cadenas operan sobre arreglos de bytes y palabras sin importar el contenido de los arreglos. Las instrucciones de cadenas se dividen en tres grupos: 1. Instrucciones de transferencia de cadenas 2. Instrucciones de inspeccin de cadenas 3. Prefijos de repeticin de instrucciones.
OPERACIONES DE CADENAS
El ensamblador del 8086 posee un conjunto de instrucciones especiales para procesar arreglos de bytes y de palabras. Estas instrucciones aunque reciben el nombre de instrucciones de cadenas operan sobre arreglos de bytes y palabras sin importar el contenido de los arreglos. Las instrucciones de cadenas se dividen en tres grupos: 1. Instrucciones de transferencia de cadenas 2. Instrucciones de inspeccin de cadenas 3. Prefijos de repeticin de instrucciones.
OPERACIONES DE CADENAS
Todas las instrucciones de cadenas utilizan los registros DS:SI y ES:DI para realizar su trabajo. Ambas combinaciones DS:SI y ES:DI se utilizan como ndices a los arreglos sobre los que se est operando. Al igual que como lo hemos hecho con el registro de segmento de datos DS, debemos inicializar el registro de segmento extra ES para que apunte al segmento que contiene el arreglo al que va hacerse referencia mediante ES:DI. Las instrucciones de cadena adems de realizar su trabajo, incrementan o decrementan en forma automticamente los registros ndice que usan.
OPERACIONES DE CADENAS
Las operaciones de byte incrementan o decrementan los registros SI, DI, o ambos en uno, mientras que las operaciones de palabras incrementan o decrementan los registros SI, DI, o ambos en dos. El que las instrucciones de cadenas incrementen o decrementen los registros de ndice est controlado por la bandera de direccin D. Si D = 0, entonces los registros ndice se incrementan y si D = 1, entonces los registros ndice se decrementan. Para establecer el valor de la bandera de direccin se utilizan las instrucciones: cld y std. Cld Coloca un cero en la bandera de direccin. Sintaxis: Cld Std Coloca un uno en la bandera de direccin. Sintaxis: std
lods origen
Carga en el acumulador AX o AL el valor del elemento de un arreglo cuyo desplazamiento con respecto del principio del arreglo est dado por SI.
Sintaxis:
lods [byte [es:]si] lods [word [es:]si]
lodsb es una abreviatura de lods [byte si] y lodsw es una abreviatura de lods [word si].
Sintaxis: lodsb lodsw
cmps origen, destino La instruccin cmps efecta la resta [origen] - [destino], tira el resultado y almacena las bandera en la misma forma en que trabaja la instruccin cmp. Cada vez que la instruccin cmps se ejecuta, ambos los registros SI y DI se incrementan o decrementan en uno o dos dependiendo del nmero de bytes copiados. Si la bandera de direccin vale 0, los registros se incrementan y si la bandera de direccin vale 1 los registros se decrementan. Sintaxis: cmps [byte [es:]si], [di] cmps [word [es:]si], [di]
scasb es una abreviatura de scas [byte di] y scasw es una abreviatura de scas [word di].
Sintaxis:
scasb scasw
La instruccin scas afecta las banderas de sobreflujo O, signo S, cero Z, acarreo auxiliar A, paridad P y acarreo C de igual forma la instruccion cmps.
Los dos mnemnicos representan el mismo prefijo de repeticin de instrucciones. Este prefijo repite la instruccin de cadena que le sigue un nmero de veces especificado por el registro CX o hasta que despus de una iteracin el valor de la bandera de cero Z valga 1. Sintaxis:
repe |repz cmps [byte [es:]si], [di] repe |repz cmps [word [es:]si], [di] repe |repz cmpsb repe |repz cmpsw repe |repz scas [byte di] repe |repz scas [word di] repe |repz scasb repe |repz scasw
Los dos mnemnicos representan el mismo prefijo de repeticin de instrucciones. Este prefijo repite la instruccin de cadena que le sigue un nmero de veces especificado por el registro CX o hasta que despus de una iteracin el valor de la bandera de cero Z valga 0.
Sintaxis: repe |repz cmps [byte [es:]si], [di] repe |repz cmps [word [es:]si], [di] repe |repz cmpsb repe |repz cmpsw repe |repz scas [byte di] repe |repz scas [word di] repe |repz scasb repe |repz scasw