Está en la página 1de 10

REPUBLICA BOLIVARIANA DE VENEZUELA. MINISTERIO DEL PODER POPULAR PARA LA DEFENSA.

UNIVERSIDDA NACIONAL EXPERIMENTAL POLITECNICA DE LA FUERZA ARMADA NACIONAL. NUCLEO CARABOBO EXTENSION BEJUMA.

Gua.. Estudiar.

Profesor: Ing. Aular; Carlos. C.I: 18.660.144

Bejuma, 2013

LENGUAJE ENSAMBLADOR El lenguaje ensamblador es un tipo de lenguaje de bajo nivel utilizado para escribir programas informticos, y constituye la representacin ms directa del cdigo mquina especfico para cada arquitectura de computadoras legible por un programador. Fue usado ampliamente en el pasado para el desarrollo de software, pero actualmente slo se utiliza en contadas ocasiones, especialmente cuando se requiere la manipulacin directa del hardware o se pretenden rendimientos inusuales de los equipos. IMPORTANCIA DEL LENGUAJE ENSAMBLADOR La importancia del lenguaje ensamblador radica principalmente que se trabaja directamente con el microprocesador; por lo cual se debe de conocer el funcionamiento interno de este, tiene la ventaja de que en el se puede realizar cualquier tipo de programas que en los lenguajes de alto nivel no lo pueden realizar. Otro punto sera que los programas en ensamblador ocupan menos espacio en memoria. CARACTERSTICAS. Programar en lenguaje ensamblador es difcil de aprender, entender, leer,

escribir, depurar y mantener, por eso surgi la necesidad de los lenguajes compilados. A pesar de perder rendimiento en un proceso de compilacin, en la actualidad la

mayora de las computadoras son suficientemente rpidas. El lenguaje ensamblador no es portable. Programar en lenguaje ensamblador lleva mucho tiempo. Los programas hechos en lenguaje ensamblador son generalmente ms rpidos.

Al programar cuidadosamente en lenguaje ensamblador se pueden crear programas de 5 a 100 veces ms rpidos que con lenguajes de alto nivel. Los programas hechos en lenguaje ensamblador generalmente ocupan menos

espacio. Un buen programa en lenguaje ensamblador puede ocupar casi la mitad de espacio que su contrapartida en lenguaje de alto nivel. Con el lenguaje ensamblador se pueden crear segmentos de cdigo imposibles

de formar en un lenguaje de alto nivel. 4 VENTAJAS Y DESVENTAJAS

Ventajas.

1.- Velocidad: Como trabaja directamente con el microprocesador al ejecutar un programa, pues como este lenguaje es el mas cercano a la mquina la computadora lo procesa mas rpido. 2.- Eficiencia de tamao: Un programa en ensamblador no ocupa mucho espacio en memoria porque no tiene que cargan libreras y dems como son los lenguajes de alto nivel. 3.- Flexibilidad: Es flexible porque todo lo que puede hacerse con una mquina, puede hacerse en el lenguaje ensamblador de esta mquina; los lenguajes de alto nivel tienen en una u otra forma limitantes para explotar al mximo los recursos de la mquina. O sea que en lenguaje ensamblador se pueden hacer tareas especificas que en un lenguaje de alto nivel no se pueden llevar acabo porque tienen ciertas limitantes que no se lo permite Desventajas 1.-Tiempo de programacin: Como es un lenguaje de bajo nivel requiere ms instrucciones para realizar el mismo proceso, en comparacin con un lenguaje de alto nivel. Por otro lado, requiere de ms cuidado por parte del programador, pues es propenso a que los errores de lgica se reflejen ms fuertemente en la ejecucin. 2.-Programas fuente grandes: Por las mismas razones que aumenta el tiempo, crecen los programas fuentes; simplemente requerimos ms instrucciones primitivas para describir procesos equivalentes. Esto es una desventaja porque dificulta el mantenimiento de los programas, y nuevamente reduce la productividad de los programadores. 3.- Peligro de afectar recursos inesperadamente: Que todo error que podamos cometer, o todo riesgo que podamos tener, podemos afectar los recursos de la maquina, programar en este lenguaje lo ms comn que pueda pasar es que la mquina se bloquee o se reinicialize. Porque con este lenguaje es perfectamente posible (y sencillo) realizar secuencias de instrucciones invlidas, que normalmente no aparecen al usar un lenguaje de alto nivel. 5 4.- Falta de portabilidad: Porque para cada mquina existe un lenguaje ensamblador; por ello, evidentemente no es una seleccin apropiada de lenguaje cuando deseamos

codificar en una mquina y luego llevar los programas a otros sistemas operativos o modelos de computadoras. MULTIPLICACIN Y DIVISION. Para multiplicar solo se necesita realizar una subrutina donde se muevan los bits tantas posiciones dependiendo por cuanto se esta multiplicando.
MULTIPLICAR BTFSC GOTO RLF BSF CALL CALL GOTO SALIDA FORMA PREGUNTA RETENER,3 PREGUNTA CONTADOR,F RETENER,3

Con esta solo se multiplica por dos. Ejemplo: Si se multiplica queda algo asi.

De la misma forma se realiza la divisin pero en vez de mover los bits a la izquierda se mueven a la derecha.
DIVIDIR BTFSC GOTO RRF BSF CALL GOTO SALIDA PREGUNTA RETENER,4 PREGUNTA CONTADOR,F RETENER,4

Al dividir

6 LABORATORIO.

Ejercicio 1. LIST P=PIC16F877 #INCLUDE P16F877.INC __config 0x3FF1 #DEFINE #DEFINE CBlock H20 CONTADOR RETENER endc ORG 0X00 GOTO MAIN ORG 0X04 GOTO MAIN ORG 0X05 GOTO MAIN BANKO BCF STATUS,RP0 BANK1 BSF STATUS,RP0

MAIN CLRF CONTADOR CLRF RETENER CLRF PORTA CLRF PORTB CLRF PORTC CLRF PORTD BANK1 CLRF TRISD CLRF TRISB CLRF TRISC MOVLW b00011111 MOVWF TRISA BANK0 7 PREGUNTA BTFSC PORTA,0

GOTO INCREMENTAR BCF RETENER,0 BTFSC PORTA,1 GOTO DECREMENTAR BCF RETENER,1 BTFSC PORTA,2 GOTO BORRAR BCF RETENER,2 BTFSC PORTA,3 GOTO MULTIPLICAR BCF RETENER,3 BTFSC PORTA,4 GOTO DIVIDIR BCF RETENER,4 INCREMENTAR BTFSC RETENER,0 GOTO PREGUNTA INCF CONTADOR,F BSF RETENER,0 CALL SALIDA CALL FORMA GOTO PREGUNTA DECREMENTAR BTFSC RETENER,1 GOTO PREGUNTA DECF CONTADOR,F BSF RETENER,1 CALL SALIDA GOTO PREGUNTA

8 BORRAR BTFSC RETENER,2 GOTO PREGUNTA

CLRF CONTADOR CALL SALIDA GOTO PREGUNTA MULTIPLICAR BTFSC RETENER,3 GOTO PREGUNTA RLF CONTADOR,F BSF RETENER,3 CALL SALIDA CALL FORMA GOTO PREGUNTA DIVIDIR BTFSC RETENER,4 GOTO PREGUNTA RRF CONTADOR,F BSF RETENER,4 CALL SALIDA GOTO PREGUNTA

SALIDA MOVF CONTADOR,W MOVWF PORTB RETURN FORMA MOVF CONTADOR,W SUBLW d101 BTFSSSTATUS,C CLRF CONTADOR RETURN END

Ejercicio 2.LIST P=PIC16F877 #INCLUDE P16F877.INC __config 0x3FF1 #DEFINE #DEFINE Cblock H20 CONTADOR RETENER endc ORG 0X00 GOTO MAIN ORG 0X04 GOTO MAIN ORG 0X05 GOTO MAIN 11 BANKO BCF STATUS,RP0 BANK1 BSF STATUS,RP0

MAIN CLRF CONTADOR CLRF RETENER CLRF PORTA CLRF PORTB CLRF PORTC CLRF PORTD BANK1 CLRF TRISB CLRF TRISD MOVLW b00001111 MOVWF TRISA MOVLW b00000111 MOVWF TRISC BANK0 PREGUNTA BTFSC PORTC,0 GOTO GUARDAR BCF RETENER,0 BTFSC PORTC,1 GOTO GUARDAR BCF RETENER,1 BTFSC PORTC,2 GOTO GUARDAR BCF RETENER,2 GUARDAR BTFSC RETENER,0 GOTO PREGUNTA MOVF PORTB,W MOVWF CONTADOR CALL SALIDA GOTO PREGUNTA SUMAR BTFSC RETENER,1 GOTO PREGUNTA MOVF PORTB,W ADDWF CONTADOR,W 12

CALL SALIDA GOTO PREGUNTA BORRAR BTFSC RETENER,2 GOTO PREGUNTA CLRF CONTADOR CLRF RETENER CLRF W CALL SALIDA GOTO PREGUNTA SALIDA MOVWF RETURN END

PORTB

13