Modos de direccionamiento
No. Lista 128:00 – 9:00
EnsambladorMIGUEL ALEJANDRO DAVALOS HUERTA
Esqueleto de un programa ensamblador
• Model small• Stack• Data
• Code– Mov ax,@data– Movds,ax– Push ds
• …Codigo del programa• …• …
– Mov ax,4c00h– Int 21h
• end
Segmento de datos
Tipo de modelo de un programa en ensamblador Determina el tamaño de los segmentos
Segmento pila
Inicializacion
Finalizacion
Aquí se declaran:•Variables•Arreglos•Matrices•cadenas
Declaración de datos en el segmento de datos
• Directivas:– Db = define byte =8 bits = 1 carácter– Dw = define palabra = 16 bits = 2 caracteres– Dd = define doble palabra = 32 bits = 4 caracteres
• No existen tipos de datos en lenguaje ensamblador a diferencia de los lenguajes de alto nivel, lo que se realiza es para reservar espacios de memoria.
Sintaxis para declarar datos, cadenas, arreglos y matrices:
Nombre_Dato directiva valor(s)
Ejemplos1.- se desea declarar una variable contador de tipo byte inicializada a cero en
el segmento de data
.dataDb contador 0
2.- define una variable llamada “carácter” inicializada con el carácter ‘Z’.datacarácter db ‘z’
3.- declara una cariable “promedio” inicializada con tu promedio general
.datapromedio dw 89.99
Evidencia No.4
• Define los siguientes esqueletos de programas en ensambladorA. Guardar como p1.asm un documento creado en un block
de notas B. Define las siguientes variables inicializadas a cero:
promedio, sumatoria, contador_repe, contador_normal• Guardar como p2.as, declarando las siguientes
variables – Un arreglo inicializando con 4 valores de tipo carácter– La variable “índice” inicializada a cero– Un mensaje con tu nombre
METODOS DE DIRECCIONAMIENTO• Son las formas que hacen referencia a la memoria
• Varian de autor a autor, se identifican entre 7 u 8 modos de direccionamiento
• DIRECCIONAMIENTO INMEDIATO• DIRECCIONAMIENTO POR REGISTROS• DIRECCIONAIENTO DIRECTO• DIRECCIONAMIENTO INDEXADO DIRECTO• DIRECCIONAMIENTO RELATIVO A LA BASE• DIRECCIONAMIENTO INDIRECTO• DIRECCIONAMIENTO BASE INDEXADO
EXPLICACION DE CADA UNO: (SE UTILIZARFA LA INTRUCCION MOV PARA SU EXPLICACION).1.- DIRECCIONAMIENTO INMEDIATO.- SE LE IDENTIFICA CUANDO EL OPERANDO FUENTE ES UNA CONSTANTE.
EJEMPLO:A) MOV AH,34HB) MOV BX,0F98HC) MOV CH,’C’
INVALIDOS A) MOV CL,999HB) MOV DH , ‘AB’C) MOV ‘A’, BL
• 2.- DIRECCIONAMIENTO POR REGISTROS.- SEIDENTIFICA CUANDO TANTO EL OPERANDO FUENTE COMO EL OPERANDO DESTINO SON REGISTROS VALIDOS DEL MICROPROCESADOR.
• EJEMPLO:» A) MOV A, BX» B) MOV AH, AL» C) MOV CX, CL» D) MOV SI, DI
• INVALIDOS A)MOV AH, BX B)MOV DL, BP C) MOV CL, CX
• 3.- DIRECCIONAMIENTO DIRECTO: SE IDENTIFICA CUANDO EL OPERANDO FUENTE O EL OPERANDO DESTINO ES UNA VARIABLE DECLARANDO EN EL SEGMENTO DE DATO.
• EJEMPLO:» A)MOV DX,PALABRA» B)MOV DATOS, AX» C)MOV CARÁCTER, CH
• INAVALIDOS: NO ES PERMITIDO DIRECIONAR DE VARIABLE A VARIABLE O DE MEMORIA A MEMORIA.• A) MOV PALABRA, DATOS• B) MOV CARÁCTER, DATOS• C) MOV CARÁCTER, ARREGLO [0]• D) MOV PALABRA, PALABRA
P3.asm
• DISEÑE UN PROGRAMA EN ENSAMBLADOR QUE UTILICE LOS PRIMEROS 3 MODOS DE DIRECCIONAMIENTO, HAGA REFERENCIA A POR LO MENOS 2 INTRUCCIONES PARA CADA MODO DE DIRECCIONAMIENTO. NOTA: NO REPITA LOS EJEMPLOS VISTOS EN CLASE.
• 4.- DIRECCIONAMIENTO INDEXADO DIRECTO.- SE INDENTIFICA CUANDO EL OPERANDO FUENTE U OPERANDO DESTINO ES UNA VARIABLE DECLARADA EN EL SEGMENTO DE DATOS INDEXADA POR ALGUNO DE LOS REGISTROS INDICES ( SI, DI ):– EJEMPLO:
» A)MOV ARREGLO [SI] ‘A’» B)MOV CL, VECTOR [DI]» C) MOV VECTOR [SI]
• INVALIDOS:• MOV VECTOR1[SI], VECTOR2 [DI]
p4.asm
• DISEÑE UN PROGRAMA EN ENSAMBLADOR QUE DECLARE 3 ARREGLOS DE 4 ELEMENTOS CADA UNO, LOS 2 PRIMEROS ARREGLOS INICIALIZADOS CON CUALQUIER CONJUNTO DE CARACTERES. PASAR EL CONTENIDO DEL PRIMERO VECTOR AL TERCER VECTOR Y EL CONTENIDO DEL SEGUNDO VECTOR AL PRIMER VECTOR. IDENTIFICA POR MEDIO DE COMENTARIOS AL MODO DE DIRECCIONAMIENTO UTILIZADO EN CADA INSTRUCCION