programacion basica

Upload: campos0791

Post on 16-Oct-2015

47 views

Category:

Documents


1 download

TRANSCRIPT

Presentacin de PowerPoint

LENGUAJES DE INTERFAZUNIDAD 2 : PROGRAMACION BASICAUnidad 22.1 Ensamblador (y ligador) a utilizar.Programacin bsica

Lenguajes de programacinLenguaje mquinaLenguaje de bajo nivel(ensamblador)Lenguaje de alto nivelBinario: 10110000 01100001

(Hexadecimal: 0xb061) MOV al, 061h mquinaensambladorlenguaje CDIGO Esta instruccin significa; Mueve el valor hexadecimal 61 (97 decimal) al registro "al".

Lenguaje ensamblador*El compilador se encarga de traducir los mnemnicos a los cdigos de operacin.*El linker (ligador) genera el programa ejecutable, una vez compilado el programa fuente.*El programa editor crea el archivo de cdigo fuenteLigadorEs un programa que enlaza todos los programas o mdulos obteniendo lo que denominamos programa ejecutable.

Adems incorporan las denominadas rutinas de libreras en caso de solicitarlas el propio programa.

La generacin de un mdulo ejecutable a partir de una coleccin de procedimientos traducidos independientemente requiere un ligador.2.2 Ciclos numricos.Los ciclos permiten ejecutar un conjunto de instrucciones varias veces hasta que se cumpla una condicin.

El chequeo de la condicin puede estar al inicio o al final del ciclo, en caso de estar al final hay que tener en cuenta que la ejecucin se va a efectuar al menos una vez.En estos ciclos se utilizan los brincos "condicionales" basados en el estado de las banderas. Por ejemplo la instruccin jnz que salta solamente si el resultado de una operacin es diferente de cero y la instruccin jz que salta si el resultado de la operacin es cero.

2.3CAPTURA BASICA DE CADENAS

Instrucciones para cadenas

Operaciones para cadenas: LODS, STOS, MOVS, CMPS, SCAS, INS, OUTS.LODS: : LOaD String lee un carcter a la vez en el acumuladorOperacin auxiliar: CLD (auto-incrementa SI y/o DI) STD (auto-decrementa SI y/o DI)

Registros implicados: registros que debe inicializar antes de usar la instruccinBit-D: Auto-decremento (STD) o Auto-incremento (CLD) de SIAL/AX/EAX: Dato consultado LODSB usa AL, LODSW usa AX, LODSW usa EAXDS:SI: Apunta al elemento actual de la cadena consultada.OperacinEquivalenteLODSBMOV AL, DS:[SI]INC SILODSWMOV AX, DS:[SI]ADD SI,2VARIANTES DE LODSBSTOS: STOre String. Graba un carcter de una cadena a la vezRegistros implicados: registros que debe inicializar antes de usar la instruccinBit-D: Auto-decremento (STD) o Auto-incremento (CLD) de DIAL/AX/EAX: Dato consultado. STOSB usa AL, STOSW usa AX, STOSW usa EAXES:DI: Apunta al elemento actual del bloque de memoria a grabar

OperacinEquivalenteSTOSBMOV ES:[DI], ALINC DISTOSWMOV ES:[DI], AXADD DI,2VARIANTES DE STOSBSCAS: SCAn String. Busca valor del acumulador en la cadena

Registros implicados: registros que debe inicializar antes de usar la instruccinBit-D: Auto-decremento (STD) o Auto-incremento (CLD) de DIAL/AX/EAX: Dato a comparar. SCASB usa AL, SCASW usa AX, SCASW usa EAXES:DI: ndice para la cadena donde se busca el dato.OperacinEquivalenteSCASBCMP AL, ES:[DI]INC DISCASWCMP AX, ES:[DI]ADD DI,2VARIANTES DE SCASREP SCAS: REPite bsqueda de un dato mientras sea diferente (REPNE) o igual (REPE) en una cadena. Termina bsqueda si el dato es igual, diferente (REPE), o el contador CX es ceroRegistros implicados: registros que debe inicializar antes de usar la instruccinBit-D: Auto-decremento (STD) o auto-incremento (CLD) de DIAL/AX/EAX: Dato a comparar. SCASB usa AL, SCASW usa AX, SCASW usa EAXES:DI ndice para la cadena que buscara el datoCX: mximo numero de comparaciones = tamao de la cadena

OperacinEquivalenteREPE SCASBCYCLE: CMP AL, ES:[DI]JE ENDINC DILOOP CYCLEREPNE SCASBCYCLE: CMP AL, ES:[DI]JNE END

INC DILOOP CYCLEVARIANTES DE REP SCASMOVS: MOVe String. Transfiere una cadena de (SI) a (DI). Nota: existe MOVBS, MOVSW y MOVSD. Adems, no se modifica el registro AX.

Registros implicados: registros que debe inicializar antes de usar la instruccinBit-D: Auto-decremento (STD) o auto-incremento (CLD) de SI/DIDS: SI ndice para la cadena origenES: DI ndice para la cadena origen

OperacinEquivalenteMOVSBMOV ES:[DI], DS:[SI]INC SIINC DIMOVSWMOV ES:[DI], DS:[SI]ADD SI,2ADD DI,2VARIANTES DE MOVSBREP MOVS: copia una cadena en una sola instruccin. El nmero de caracteres a copiar se especifica en el registro CX

Registros implicados: registros que debe inicializar antes de usar la instruccinBit-D: Auto-decremento (STD) o auto-incremento (CLD) de SI/DIDS: SI: ndice para la cadena origenES: DI: ndice para la cadena origenCX: tamao de la cadena

OperacinEquivalenteREP MOVSBCICLO: MOV ES:[DI], DS:[SI]INC SIINC DILOOP CICLOVARIANTES DE REP MOVSB 2.4 Comparacin y Prueba en lenguaje ensamblador

Instrucciones de comparacin y pruebaExisten dos instrucciones especiales en el microprocesador 8086: CMP y TEST. CMP (Comparar) compara si dos valores son iguales o diferentes. Su funcionamiento es similar al de la instruccin SUB (restar), slo que no modifica el operando de destino, solamente modifica las banderas de signo (SF), de cero (ZF) y de acarreo (CF).Por ejemplo:CMP AX,1235Esta instruccin compara si el valor almacenado en el registro AX es igual que el valor 1235 en decimal.Por otro lado, la instruccin TEST realiza la operacin AND de los operandos especificados sin que el resultado se almacene en algn registro, modificando nicamente ciertas banderas. Su aplicacin ms comn es la de probar si algn bit es cero.Ejemplo:Test AL,1Esta instruccin prueba si el bit menos significativo de AL es 1 yTest AL,128 prueba si el bit ms significativo de AL es 1.Por lo general estas instrucciones van seguidas de alguna de las instrucciones de salto, las cuales se estudian en otra seccin. 2.5 SALTOS

Iteraciones. Con los saltos condicionales y no condicionales se pueden crear estructuras de iteracin bastante complejas, aunque existen instrucciones especficas para ello tal como loop. CUENTA: DW, 100 . .. MOV CX, CUENTA ITERA: . . LOOP ITERA

El bloque de instrucciones que se encuentra entre la etiqueta ITERA y la instruccin loop ser ejecutado hasta el registro CX sea igual a 0 cada vez que se ejecuta la instruccin loop p, el registro CX es decrementado en 1 hasta llegar a 0. Esta instruccin tiene la limitante de que debe encontrarse en el rango de +128 a 127 ( mximo nmero de bytes entre ITERA y loop)Un ciclo, conocido tambin como iteracin, es la repeticin de un proceso un cierto nmero de veces hasta que alguna condicin se cumpla. En estos ciclos se utilizan los brincos "condicionales" basados en el estado de las banderas. Por ejemplo la instruccinjnzque salta solamente si el resultado de una operacin es diferente de cero y la instruccinjzque salta si el resultado de la operacin es cero.Las comparaciones con signo van de acuerdo con la interpretacin que usted le quiera dar a los bytes o palabras de su programa. Por ejemplo, suponga que tiene un byte cuyo valor es 11111111 en binario y que desea compararlo con otro cuyo valor es 00000000. Es 11111111 mayor que 00000000? S y NO eso depende de la interpretacin que usted le quiera dar. Si trabaja con nmeros enteros sin signo S LO SER, pues 255 es mayor que 0. Por el contrario, si tiene signo entonces SER MENOR puesto que 1 es siempre menor que 0. Lo anterior lleva a seleccionar las instrucciones de comparacin y de salto de acuerdo con la interpretacin que se les d a los bytes o palabras; reflexione sobre este punto

Instrucciones de salto condicionalEl ensamblador permite usar una variedad de instrucciones de salto que transfieren el control dependiendo de las configuraciones en el registro de banderas. Por ejemplo puede comprobar dos campos y despus saltar de acuerdo con los valores de las banderas que la comparacin establece.El formato condicional para el salto condicional es: