| 
	
		|  Autor | Tema: programar en lenguaje maquina  (Leído 34,585 veces) |  
	| 
			| 
					
						| D4RIO 
								       
								
								 Desconectado 
								Mensajes: 1.004
								
								 
								U N I X
								
								
								
								
								
								     | 
 
Agarren un editor hexa y editen un bootstrap que no trae formato. Eso es escribir binario. Si hacen q un programa en C escriba un unsigned char foo=0x04 tendran un 00000100 en el archivo (verifiquen con un editor hexa). Eso hace el ensamblador, reemplazar por code binario... el resto en un EXE o un ELF es formato y depende de la especificación de formato. Vamos, estudiar un poco y todo eso es teoría básica. Un buen ejercicio es programar un pequeño ensamblador que ensamble unas pocas instrucciónes. No es difícil... hacerlo en ASM es más desafiante    . (PD: no harian nada nuevo... FASM esta escrito en FASM) Byebye!
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| krackwar 
								 
								
								 Desconectado 
								Mensajes: 900
								
								
								
								
								
								   | 
 
Claro , FASM esta escrito ensamblado en FASM , para "programar" en binario bastaria con agarrar el FASM y escribir todo el ejecutable con   (la b al final espara saber que es binario)
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 Mi blogBienvenido krackwar, actualmente tu puntuación es de 38 puntos y tu rango es Veteran. El pollo número 1, es decir yo, (krackwar), adoro a Shaddy como a un dios.  |  |  |  | 
			| 
					
						| D4RIO 
								       
								
								 Desconectado 
								Mensajes: 1.004
								
								 
								U N I X
								
								
								
								
								
								     | 
 
Sisi... en realidad no es nada guaau... Si miramos cualquier bootstrap, incluido el de Linux y el de Minix si mal no recuerdo (y el de VisOpSis y otros) suelen usar binario cuando aplican máscaras para probar ciertos bits... por ejemplo en la prueba de flags del registro de flags, para hacer el checkeo de microprocesador.
 Un "compilador" de binario tampoco es un gran desafío... solo se agrupan los ceros y unos y se escribe un byte como unsigned char (en C) o bien como mapa de bits, o como quieran.
 
 La verdad el hilo no tiene mucha lógica. Sería más provechoso preguntar ¿Como funciona un ensamblador?
 
 S2
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| krackwar 
								 
								
								 Desconectado 
								Mensajes: 900
								
								
								
								
								
								   | 
 
Un enesamblador funciona primero aplica las macros y remplasa las constantes , luego que todo esta en Lenguaje ensamblador , hace el paso de cada instruccion a byte , cada ves que se usa una variable ees sumplatada por su posicion . PD: Todo esto lo saco por logica y por lo que se y e visto , pero si me equivoco en algo por favor decirmelo   |  
						| 
								|  |  
								|  |  En línea | 
 
 Mi blogBienvenido krackwar, actualmente tu puntuación es de 38 puntos y tu rango es Veteran. El pollo número 1, es decir yo, (krackwar), adoro a Shaddy como a un dios.  |  |  |  | 
			| 
					
						| >FedeX< | 
 
Si te olvidaste de una variable al comienzo, ¡fuiste!... No se pueden manipular las direcciones de memoria como el asm las manipula. Quieres agregar algo en el medio del code, una mitad funciona y la otra no.
 Entre asm y c, los programas en asm son los mas óptimos. Pero entre asm y lenguaje de máquina (yo creo que) es exactamente lo mismo.
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| D4RIO 
								       
								
								 Desconectado 
								Mensajes: 1.004
								
								 
								U N I X
								
								
								
								
								
								     | 
 
Si te olvidaste de una variable al comienzo, ¡fuiste!... No se pueden manipular las direcciones de memoria como el asm las manipula. Quieres agregar algo en el medio del code, una mitad funciona y la otra no. Porque debes arreglar los offsets. Si de un momento a otro agregas 15 bytes en medio y estabas programando en codigo de máquina, entonces todas las direcciónes posteriores se correrán 15 bytes, y sus referencias tambien. No obstante, si haces un programa en ASM para que funcione como en C usaras pilas locales a las funciónes. y accederás con la base de la pila más el offset de la variable en la función, por lo que esas variables no darán problemas. Entre asm y c, los programas en asm son los mas óptimos Pero un buen programador en C sabe que es posible tener todo el acceso de bajo nivel y la rentabilidad de ASM desde C... depende que tanto lo conozcas    @krackwar: estas muy cerca    Un enesamblador funciona primero aplica las macros y remplasa las constantes Aja...sisi, obviamente despues de hacer las inclusiones de archivos... hace el paso de cada instruccion a byte , cada ves que se usa una variable ees sumplatada por su posicion . Eso depende mucho del ensamblador y del modo... en binario puro sería algo muy similar a eso, pero en un ejecutable con formato se deben hacer muchas cosas más. Los símbolos, como los Labels, son correctamente ubicados como offsets dentro del ejecutable... luego todos los offsets calculados son reemplazados por constantes literales (que es lo que encuentras al desensamblar), y entonces son ensamblados por el componente más primitivo que simplemente ensambla instrucciónes que vienen con sus operadores literales. |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| krackwar 
								 
								
								 Desconectado 
								Mensajes: 900
								
								
								
								
								
								   | 
 
Claro , por ejemplo en el formato PE tiene que hacerlo para que windows entienda el archivo por que si no le aplicara este formato no andarian en windows , se ma abia olvidado los include    lo que hace es leer el archivo e incluirlo tal cual y luego va aplicando las macros y constantes y luegpo lo traduce a bytes. |  
						| 
								|  |  
								|  |  En línea | 
 
 Mi blogBienvenido krackwar, actualmente tu puntuación es de 38 puntos y tu rango es Veteran. El pollo número 1, es decir yo, (krackwar), adoro a Shaddy como a un dios.  |  |  |  | 
			| 
					
						| Meta | 
 
Hola amigos.
 Normalmente escribo en la sección de lenguaje c, porque es el que me interesa aprender , pero tengo una pregunta que me parece que es mas de esta sección que de aquella.
 
 Porque siempre que busco en la internet un manual que enseñe a programar en lenguaje maquina, siempre salen son manuales de essambler.
 
 Por lo que he leido una cosa es codigo maquina y otra muy diferente es el essambler, o es que de lenguaje maquina no existen manuales.
 
 agradeciendoles.
 
 atte inga
 
 Puedes aprender ASM de los PIC  primero que son más fáciles y más útiles que los ASM modernos si es para aplicaciones caseras. En empresas me callo. ;****************************************************************************** ;*                                VIDEO PIC 16F877                            * ;*                              (C)2007 ESTEBAN P.A.                          * ;*                                                                            * ;* PROGRAMA PARA REPRESENTAR CARÁCTERES B/N EN UNA PANTALLA DE TELEVISIÓN PAL * ;*                        UTILIZANDO UN PIC 16F877 A 20 MHZ                   * ;*                                                                            * ;******************************************************************************    ;MODO 0 --> MUESTRA UNA PANTALLA DE (X,Y) 20 x 8 CARÁCTERES ;MODO 1 --> MUESTRA UNA PANTALLA DE (X,Y) 7 x 11 CARÁCTERES ;TANTO EL MODO O COMO EL MODO 1 DISPONEN DE 31 CARÁCTERES ;DE 8x8 PIXELS INDEPENDIENTES PARA CADA MODO DE VIDEO.   ;PARA CAMBIAR EL MODO DE VIDEO SE DEBE CAMBIAR EL VALOR DE ;LA ETIQUETA MODO_PANT, LOS VALORES QUE ACEPTA SON 0 Y 1 ;0=MODO DE VIDEO 0(20x8 CARÁCTERES) Y MODO DE VIDEO=1(7x11 CARÁCTERES)   ;EL MODO 0 UTILIZA PARTE DE LOS REGISTROS DE MEMORIA DE LOS BANCOS 0 Y 1 DEL PIC,  ;LA PANTALLA EN MODO 0 ESTÁ DIVIDIDA EN DOS PARTES, LA PARTE 0(PARTE SUPERIOR DE LA PANTALLA) ;QUE CONTIENE 80 REGISTROS DE MEMORIA DEL BANCO 0 Y LA PARTE 1(PARTE INFERIOR DE LA PANTALLA), ;QUE CONTIENE OTROS 80 REGISTROS DE MEMORIA, PERO DEL BANCO1   ;EL MODO 1 UTILIZA 77 REGISTROS DE MEMORIA DEL BANCO 0   ;LA MAYORIA DE LOS CARÁCTERES GRÁFICOS QUE REPRESENTA EL PROGRAMA ;EN LA TV HAN SIDO COPIADOS DEL MICROORDENADOR SINCLAIR ZX81   ;------------------------------------------------------------------------------ ;CONFIGURACIÓN, REGISTROS Y ETIQUETAS DEL PIC   	__CONFIG	_CP_OFF&_WDT_OFF&_PWRTE_ON&_HS_OSC&_BODEN_OFF&_LVP_OFF 	list	 p=16f877A 	#include p16f877A.inc   LONG_X	EQU	.20; NUM. MAX. DE CARÁCTERES DE FILA EN MODO 0 LONG_Y	EQU	.8; NUM. MAX. DE LÍNEAS DE UN CARÁCTER EN MODO 0 CHARMAXXY	EQU	.4; NUM. MAX DE CARÁCTERES DE COLUMNA EN MODO 0   LONGX_MODE1	EQU	.7; NUM. MAX. DE CARÁCTERES DE FILA EN MODO 1 LONGY_MODE1	EQU	.8; NUM. MAX DE LÍNEAS DE UN CARÁCTER EN MODO 1 CHARMAXY_MODE1	EQU	.11; NUM. MAX. DE CARÁCTERES DE COLUMNA EN MODO 1     ;REGISTROS DE USO PARA EL PROGRAMA 	CBLOCK	20H 	CONT,LINE,BYTECHAR,NUMCHAR,NUMCOL 	CONTCHAR,LINECHAR,BUFFER,CONTLINEA,FLAGSTV 	INICPANT; DIRECCIÓN DE MEMORIA DONDE COMIENZA LA PARTE 0 DE LA PANTALLA EN MODO 0 Y 1 	ENDC   PANT2	EQU	0A0H;DIRECCIÓN DE MEMORIA DONDE COMIENZA LA PARTE 1 DE LA PANTALLA EN MODO 0   MODO_PANT	EQU	.0; 0=PANTALLA EN MODO 0, 1=PANTALLA EN MODO 1       ;------------------------------------------------------------------------------     	ORG 00H 	GOTO	START   	ORG	05H     ;---------------------------JUEGO DE CARÁCTERES--------------------------------   ;-------------------------SET 0 DE CARÁCTERES MODO 0--------------------------- BYTEPANT 	ADDWF	BYTECHAR,W 	ADDWF	PCL,F 	RETLW	B'00000000' 	RETLW	B'00000000' 	RETLW	B'00000000' 	RETLW	B'00000000' 	RETLW	B'00000000'; SPACE 0 	RETLW	B'00000000' 	RETLW	B'00000000' 	RETLW	B'00000000'       	RETLW	B'00000000' 	RETLW	B'00111100'    	RETLW	B'01000010'    	RETLW	B'01000010'    	RETLW	B'01111110';A 1    	RETLW	B'01000010'    	RETLW	B'01000010'    	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'01111100' 	RETLW	B'01000010' 	RETLW	B'01111100' 	RETLW	B'01000010';B 2 	RETLW	B'01000010' 	RETLW	B'01111100' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'00111100' 	RETLW	B'01000010' 	RETLW	B'01000000' 	RETLW	B'01000000';C 3 	RETLW	B'01000010' 	RETLW	B'00111100' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'01111000' 	RETLW	B'01000100' 	RETLW	B'01000010' 	RETLW	B'01000010';D 4 	RETLW	B'01000100' 	RETLW	B'01111000' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'01111110' 	RETLW	B'01000000' 	RETLW	B'01111100' 	RETLW	B'01000000';E 5 	RETLW	B'01000000' 	RETLW	B'01111110' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'01111110' 	RETLW	B'01000000' 	RETLW	B'01111100' 	RETLW	B'01000000' 	RETLW	B'01000000';F 6 	RETLW	B'01000000' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'00111100' 	RETLW	B'01000010' 	RETLW	B'01000000' 	RETLW	B'01001110' 	RETLW	B'01000010';G 7 	RETLW	B'00111100' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'01000010' 	RETLW	B'01000010' 	RETLW	B'01111110' 	RETLW	B'01000010' 	RETLW	B'01000010';H 8 	RETLW	B'01000010' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'00111110' 	RETLW	B'00001000' 	RETLW	B'00001000' 	RETLW	B'00001000';I 9 	RETLW	B'00001000' 	RETLW	B'00111110' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'00000010' 	RETLW	B'00000010' 	RETLW	B'00000010' 	RETLW	B'01000010' 	RETLW	B'01000010';J 10 	RETLW	B'00111100' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'01000100' 	RETLW	B'01001000' 	RETLW	B'01110000' 	RETLW	B'01001000';K 11 	RETLW	B'01000100' 	RETLW	B'01000010' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'01000000' 	RETLW	B'01000000' 	RETLW	B'01000000' 	RETLW	B'01000000';L 12 	RETLW	B'01000000' 	RETLW	B'01111110' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'01000010' 	RETLW	B'01100110' 	RETLW	B'01011010' 	RETLW	B'01000010';M 13 	RETLW	B'01000010' 	RETLW	B'01000010' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'01000010' 	RETLW	B'01100010' 	RETLW	B'01010010';N 14 	RETLW	B'01001010' 	RETLW	B'01000110' 	RETLW	B'01000010' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'00111100' 	RETLW	B'01000010' 	RETLW	B'01000010' 	RETLW	B'01000010';O 15 	RETLW	B'01000010' 	RETLW	B'00111100' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'01111100' 	RETLW	B'01000010' 	RETLW	B'01000010';P 16 	RETLW	B'01111100' 	RETLW	B'01000000' 	RETLW	B'01000000' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'00111100' 	RETLW	B'01000010' 	RETLW	B'01000010' 	RETLW	B'01010010';Q 17 	RETLW	B'01001010' 	RETLW	B'00111100' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'01111100' 	RETLW	B'01000010';R 18 	RETLW	B'01000010' 	RETLW	B'01111100' 	RETLW	B'01000100' 	RETLW	B'01000010' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'00111100' 	RETLW	B'01000000' 	RETLW	B'00111100';S 19 	RETLW	B'00000010' 	RETLW	B'01000010' 	RETLW	B'00111100' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'11111110' 	RETLW	B'00010000' 	RETLW	B'00010000' 	RETLW	B'00010000';T 20 	RETLW	B'00010000' 	RETLW	B'00010000' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'01000010' 	RETLW	B'01000010' 	RETLW	B'01000010' 	RETLW	B'01000010';U 21 	RETLW	B'01000010' 	RETLW	B'00111100' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'01000010' 	RETLW	B'01000010' 	RETLW	B'01000010' 	RETLW	B'01000010';V 22 	RETLW	B'00100100' 	RETLW	B'00011000' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'01000010' 	RETLW	B'01000010' 	RETLW	B'01000010' 	RETLW	B'01000010';W 23 	RETLW	B'01011010' 	RETLW	B'00100100' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'01000010' 	RETLW	B'00100100' 	RETLW	B'00011000' 	RETLW	B'00011000';X 24 	RETLW	B'00100100' 	RETLW	B'01000010' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'10000010' 	RETLW	B'01000100' 	RETLW	B'00101000' 	RETLW	B'00010000';Y 25 	RETLW	B'00010000' 	RETLW	B'00010000' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'01111110' 	RETLW	B'00000100' 	RETLW	B'00001000' 	RETLW	B'00010000';Z 26 	RETLW	B'00100000' 	RETLW	B'01111110' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'00111100' 	RETLW	B'01000010' 	RETLW	B'00000010' 	RETLW	B'00111100';27 NÚMERO "2" 	RETLW	B'01000000' 	RETLW	B'01111110' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'00111100' 	RETLW	B'01000110' 	RETLW	B'01001010' 	RETLW	B'01010010';28 NÚMERO "0" 	RETLW	B'01100010' 	RETLW	B'00111100' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'01111110' 	RETLW	B'00000010' 	RETLW	B'00000100' 	RETLW	B'00001000';29 NÚMERO "7" 	RETLW	B'00010000' 	RETLW	B'00010000' 	RETLW	B'00000000'   	RETLW	B'01111100' 	RETLW	B'10000010' 	RETLW	B'10011010' 	RETLW	B'10100010' 	RETLW	B'10100010';30 COPYRIGHT 	RETLW	B'10011010' 	RETLW	B'10000010' 	RETLW	B'01111100' ;------------------------------------------------------------------------------	 	NOP 	NOP 	NOP	 ;--------------------------SET 1 DE CARÁCTERES MODO1--------------------------- BYTEPANT1 	CLRF	PCLATH 	BSF	PCLATH,0 	ADDWF	BYTECHAR,W 	ADDWF	PCL,F 	RETLW	B'00000000' 	RETLW	B'00000000' 	RETLW	B'00000000' 	RETLW	B'00000000' 	RETLW	B'00000000'; SPACE 0 	RETLW	B'00000000' 	RETLW	B'00000000' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'00111100' 	RETLW	B'01000010' 	RETLW	B'01000010' 	RETLW	B'01111110';A 1 	RETLW	B'01000010' 	RETLW	B'01000010' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'01111100' 	RETLW	B'01000010' 	RETLW	B'01111100' 	RETLW	B'01000010';B 2 	RETLW	B'01000010' 	RETLW	B'01111100' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'00111100' 	RETLW	B'01000010' 	RETLW	B'01000000' 	RETLW	B'01000000';C 3 	RETLW	B'01000010' 	RETLW	B'00111100' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'01111000' 	RETLW	B'01000100' 	RETLW	B'01000010' 	RETLW	B'01000010';D 4 	RETLW	B'01000100' 	RETLW	B'01111000' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'01111110' 	RETLW	B'01000000' 	RETLW	B'01111100' 	RETLW	B'01000000';E 5 	RETLW	B'01000000' 	RETLW	B'01111110' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'01111110' 	RETLW	B'01000000' 	RETLW	B'01111100' 	RETLW	B'01000000' 	RETLW	B'01000000';F 6 	RETLW	B'01000000' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'00111100' 	RETLW	B'01000010' 	RETLW	B'01000000' 	RETLW	B'01001110' 	RETLW	B'01000010';G 7 	RETLW	B'00111100' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'01000010' 	RETLW	B'01000010' 	RETLW	B'01111110' 	RETLW	B'01000010' 	RETLW	B'01000010';H 8 	RETLW	B'01000010' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'00111110' 	RETLW	B'00001000' 	RETLW	B'00001000' 	RETLW	B'00001000';I 9 	RETLW	B'00001000' 	RETLW	B'00111110' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'00000010' 	RETLW	B'00000010' 	RETLW	B'00000010' 	RETLW	B'01000010' 	RETLW	B'01000010';J 10 	RETLW	B'00111100' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'01000100' 	RETLW	B'01001000' 	RETLW	B'01110000' 	RETLW	B'01001000';K 11 	RETLW	B'01000100' 	RETLW	B'01000010' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'01000000' 	RETLW	B'01000000' 	RETLW	B'01000000' 	RETLW	B'01000000';L 12 	RETLW	B'01000000' 	RETLW	B'01111110' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'01000010' 	RETLW	B'01100110' 	RETLW	B'01011010' 	RETLW	B'01000010';M 13 	RETLW	B'01000010' 	RETLW	B'01000010' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'01000010' 	RETLW	B'01100010' 	RETLW	B'01010010';N 14 	RETLW	B'01001010' 	RETLW	B'01000110' 	RETLW	B'01000010' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'00111100' 	RETLW	B'01000010' 	RETLW	B'01000010' 	RETLW	B'01000010';O 15 	RETLW	B'01000010' 	RETLW	B'00111100' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'01111100' 	RETLW	B'01000010' 	RETLW	B'01000010';P 16 	RETLW	B'01111100' 	RETLW	B'01000000' 	RETLW	B'01000000' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'00111100' 	RETLW	B'01000010' 	RETLW	B'01000010' 	RETLW	B'01010010';Q 17 	RETLW	B'01001010' 	RETLW	B'00111100' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'01111100' 	RETLW	B'01000010';R 18 	RETLW	B'01000010' 	RETLW	B'01111100' 	RETLW	B'01000100' 	RETLW	B'01000010' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'00111100' 	RETLW	B'01000000' 	RETLW	B'00111100';S 19 	RETLW	B'00000010' 	RETLW	B'01000010' 	RETLW	B'00111100' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'11111110' 	RETLW	B'00010000' 	RETLW	B'00010000' 	RETLW	B'00010000';T 20 	RETLW	B'00010000' 	RETLW	B'00010000' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'01000010' 	RETLW	B'01000010' 	RETLW	B'01000010' 	RETLW	B'01000010';U 21 	RETLW	B'01000010' 	RETLW	B'00111100' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'01000010' 	RETLW	B'01000010' 	RETLW	B'01000010' 	RETLW	B'01000010';V 22 	RETLW	B'00100100' 	RETLW	B'00011000' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'01000010' 	RETLW	B'01000010' 	RETLW	B'01000010' 	RETLW	B'01000010';W 23 	RETLW	B'01011010' 	RETLW	B'00100100' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'01000010' 	RETLW	B'00100100' 	RETLW	B'00011000' 	RETLW	B'00011000';X 24 	RETLW	B'00100100' 	RETLW	B'01000010' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'10000010' 	RETLW	B'01000100' 	RETLW	B'00101000' 	RETLW	B'00010000';Y 25 	RETLW	B'00010000' 	RETLW	B'00010000' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'01111110' 	RETLW	B'00000100' 	RETLW	B'00001000' 	RETLW	B'00010000';Z 26 	RETLW	B'00100000' 	RETLW	B'01111110' 	RETLW	B'00000000'   	RETLW	B'00000000' 	RETLW	B'00011000' 	RETLW	B'00101000' 	RETLW	B'00001000' 	RETLW	B'00001000';27 NÚMERO "1" 	RETLW	B'00001000' 	RETLW	B'00111110' 	RETLW	B'00000000'   	RETLW	B'00011110' 	RETLW	B'00111111' 	RETLW	B'00011010' 	RETLW	B'00011111' 	RETLW	B'00011110';28 JET SET WILLY(1) 	RETLW	B'00001100' 	RETLW	B'00011110' 	RETLW	B'00111111'   	RETLW	B'01111111' 	RETLW	B'11111111' 	RETLW	B'11111111' 	RETLW	B'11011110' 	RETLW	B'00011111';29 JET SET WILLY(2) 	RETLW	B'00111011' 	RETLW	B'01100011' 	RETLW	B'01110011'   	RETLW	B'10000000' 	RETLW	B'11000000' 	RETLW	B'11000000' 	RETLW	B'11000000' 	RETLW	B'00000000';30 JET SET WILLY(3) 	RETLW	B'01000000' 	RETLW	B'11000000' 	RETLW	B'10000000' ;------------------------------------------------------------------------------ 	NOP 	NOP 	NOP ;------------------------------------------------------------------------------   TEXTO; EL SIGUIENTE TEXTO SE UBICARÁ EN LOS REGISTROS DE MEMORIA DEL BANCO 0 	CLRF	PCLATH 	BSF	PCLATH,1 	MOVF	BYTECHAR,W 	ADDWF	PCL,F 	DT "      videopic      " 	DT "                    " 	DT "   este programa    " 	DT " muestra caracteres "   TEXTO2; EL SIGUIENTE TEXTO SE UBICARÁ EN LOS REGISTROS DE MEMORIA DEL BANCO 1 	CLRF	PCLATH 	BSF	PCLATH,1 	MOVF	BYTECHAR,W 	ADDWF	PCL,F 	DT " en una pantalla de " 	DT " tv mediante un pic " 	DT "                    " 	DT "  ".126,.123,.124,.124,.125," esteban pa  "       ;------------------------INICIALIZACIÓN DE LOS PUERTOS------------------------- START 	BSF	STATUS,RP0 	BCF	STATUS,RP1 	MOVLW	B'11111110' 	MOVWF	TRISB 	MOVLW	B'00000110' 	MOVWF	ADCON1 	MOVLW	B'00000110' 	MOVWF	TRISA 	MOVLW	B'11010111' 	MOVWF	TRISC 	MOVLW	B'00000000' 	MOVWF	SSPSTAT 	BCF	STATUS,RP0 	CLRF	PORTB   ;---------RUTINA DE INICIALIZACIÓN Y ENLACE A LOS MODOS DE VIDEO---------------     	MOVLW	MODO_PANT 	MOVWF	FLAGSTV 	MOVLW	B'00100000' 	MOVWF	SSPCON 	CALL	BORRAPANT; INSERTA EN LOS REGISTROS DE MEMORIA EL VALOR "0" 	CALL	CONV_CHAR; CONVIERTE LOS VALORES ASCII DE LOS TEXTOS A VALORES 	CALL	CONV_CHAR2;PARA QUE PUEDAN SER UTILIZADOS POR EL PROGRAMA 	BTFSS	FLAGSTV,0 	GOTO	START_MODE0; PONE LA PANTALLA EN MODO 0 	GOTO	START_MODE1; PONE LA PANTALLA EN MODO 1       ;----------------------------------MODO DE VIDEO 0----------------------------- PAUSA2US 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	RETURN   STARTMODE0 	NOP; ESTOS DOS NOP SON PARA SINCRONIZAR LOS 20 PRIMEROS 	NOP; CARACTERES CON EL RESTO DE LINEAS MODE0 	CLRF	SSPCON 	CLRF	PORTC 	BCF	PORTA,0; INICIO DEL PULSO DE SINCRONISMO HORIZONTAL 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	BSF	PORTA,0; FIN DEL PULSO DE SINCRONISMO HORIZONTAL 	CALL	PAUSA4US 	CALL	PAUSA4US   	CALL	PAUSA2US 	BSF	SSPCON,5 	NOP 	MOVF	INDF,W; COMIENZO DE LOS 20 CARÁCTERES 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	BCF	SSPBUF,5 	CALL	PAUSA4US 	CALL	PAUSA2US 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	INCF	BYTECHAR,F 	DECFSZ	NUMCHAR,F; CARACTERES 8*8 COMPLETOS? 	GOTO	NOCOMPLETOS 	CLRF	BYTECHAR 	MOVLW	LONG_Y 	MOVWF	NUMCHAR 	DECFSZ	NUMCOL,F;COLUMNA COMPLETA DE CARACTERES? 	GOTO	MODE0 	NOP; COMIENZO DE LA SEGUNDA PARTE DE LA PANTALLA 	NOP MODE0_ZONA2 	CLRF	SSPCON 	CLRF	PORTC 	BCF	PORTA,0; INICIO SYNC 	BTFSS	FLAGSTV,0 	GOTO REG_ZONA2 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP SIGUE_ZONA2 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	BSF	PORTA,0; FIN SYNC 	CALL	PAUSA4US 	CALL	PAUSA4US	 	CALL	PAUSA2US 	BSF	SSPCON,5 	NOP 	MOVF	INDF,W; COMIENZO DE LOS 20 CARACTERES 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT 	MOVWF	SSPBUF 	INCF	FSR,F 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	BCF	SSPBUF,5	 	CALL	PAUSA4US 	CALL	PAUSA2US 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	INCF	BYTECHAR,F 	DECFSZ	NUMCHAR,F; CARACTERES 8*8 COMPLETOS? 	GOTO	NOCOMPLETOS_ZONA2 	CLRF	BYTECHAR 	MOVLW	LONG_Y 	MOVWF	NUMCHAR 	DECFSZ	NUMCOL,F;COLUMNA COMPLETA DE CARACTERES? 	GOTO	MODE0_ZONA2 	RETURN   NOCOMPLETOS_ZONA2 	NOP 	MOVLW	LONG_X 	SUBWF	FSR,F 	GOTO MODE0_ZONA2   REG_ZONA2 	MOVLW	CHARMAXXY 	MOVWF	NUMCOL	 	MOVLW	PANT2 	MOVWF	FSR 	BSF	FLAGSTV,0 	GOTO SIGUE_ZONA2   NOCOMPLETOS 	NOP 	MOVLW	LONG_X 	SUBWF	FSR,F 	GOTO MODE0     ;---------------------------SINCRONISMO VERTICAL------------------------------- PAUSA4P5 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	RETURN   PAUSA27P4 	CALL	PAUSA4P5 	CALL	PAUSA4P5 	CALL	PAUSA4P5 	CALL	PAUSA4P5 	CALL	PAUSA4P5 	CALL	PAUSA4P5 	RETURN   PIGUALADORES 	BCF	PORTA,0 	CALL	PAUSA27P4 	BSF	PORTA,0 	CALL	PAUSA4P5 	BCF	PORTA,0 	CALL	PAUSA27P4 	BSF	PORTA,0 	CALL	PAUSA4P5 	BCF	PORTA,0 	CALL	PAUSA27P4 	BSF	PORTA,0 	CALL	PAUSA4P5 	BCF	PORTA,0 	CALL	PAUSA27P4 	BSF	PORTA,0 	CALL	PAUSA4P5 	BCF	PORTA,0 	CALL	PAUSA27P4 	BSF	PORTA,0 	CALL	PAUSA4P5 	BCF	PORTA,0 	CALL	PAUSA27P4 	BSF	PORTA,0 	CALL	PAUSA4P5 	RETURN   PVERTICALESALM 	BSF	PORTA,0 	CALL	PAUSA27P4 	BCF	PORTA,0 	CALL	PAUSA4P5 	BSF	PORTA,0 	CALL	PAUSA27P4 	BCF	PORTA,0 	CALL	PAUSA4P5 	BSF	PORTA,0 	CALL	PAUSA27P4 	BCF	PORTA,0 	CALL	PAUSA4P5 	BSF	PORTA,0 	CALL	PAUSA27P4 	BCF	PORTA,0 	CALL	PAUSA4P5 	BSF	PORTA,0 	CALL	PAUSA27P4 	BCF	PORTA,0 	CALL	PAUSA4P5 	BSF	PORTA,0 	CALL	PAUSA27P4 	BCF	PORTA,0 	CALL	PAUSA4P5 	RETURN   SYNCVERT 	CLRF	SSPCON 	CLRF	PORTC 	CALL	PIGUALADORES 	CALL	PVERTICALESALM 	CALL	PIGUALADORES 	RETURN     PAUSA4US 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP	 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	RETURN     ;----------------------------------LINEA NEGRA--------------------------------- LINEA64US 	CLRF	SSPCON 	CLRF	PORTC 	BCF	PORTA,0 	CALL	PAUSA4US 	BSF	PORTA,0 	CALL	PAUSA4US 	CALL	PAUSA4US 	CALL	PAUSA4US 	CALL	PAUSA4US 	CALL	PAUSA4US 	CALL	PAUSA4US 	CALL	PAUSA4US 	CALL	PAUSA4US 	CALL	PAUSA4US 	CALL	PAUSA4US 	CALL	PAUSA4US 	CALL	PAUSA4US 	CALL	PAUSA4US 	CALL	PAUSA4US 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	RETURN     ;---------------------GENERACION DE UN CUADRO DE TV EN MODO 0------------------ START_MODE0 PANTALLA 	CLRF	FLAGSTV 	CLRF	BYTECHAR 	MOVLW	CHARMAXXY 	MOVWF	NUMCOL 	MOVLW	LONG_Y 	MOVWF	NUMCHAR 	MOVLW	INICPANT 	MOVWF	FSR 	MOVLW	.124 	MOVWF	LINE NL1	CALL LINEA64US 	DECFSZ	LINE,F 	GOTO	NL1 	CALL	STARTMODE0 	MOVLW	.124 	MOVWF	LINE NL3	CALL	LINEA64US 	DECFSZ	LINE,F 	GOTO	NL3 	BCF	PORTA,0 	CALL 	PAUSA4US 	BSF	PORTA,0 	CALL	PAUSA4US 	CALL	PAUSA4US 	CALL	PAUSA4US 	CALL	PAUSA4US 	CALL	PAUSA4US 	CALL	PAUSA4US 	CALL	PAUSA4US 	CALL	SYNCVERT 	GOTO	PANTALLA   ;-----------------GENERACION DE UN CUADRO DE TV EN MODO 1----------------------   START_MODE1 	MOVLW	B'00100001' 	MOVWF	SSPCON PANTALLA_MODE1 	CLRF	BYTECHAR 	MOVLW	CHARMAXY_MODE1 	MOVWF	NUMCOL 	MOVLW	LONGY_MODE1 	MOVWF	NUMCHAR 	MOVLW	INICPANT 	MOVWF	FSR 	MOVLW	.30 	MOVWF	LINE NM1	CALL LINEA64US 	DECFSZ	LINE,F 	GOTO	NM1 	CALL	MODE1 	MOVLW	.18 	MOVWF	LINE NM3	CALL	LINEA64US 	DECFSZ	LINE,F 	GOTO	NM3 	BCF	PORTA,0 	CALL 	PAUSA4US 	BSF	PORTA,0 	CALL	PAUSA4US 	CALL	PAUSA4US 	CALL	PAUSA4US 	CALL	PAUSA4US 	CALL	PAUSA4US 	CALL	PAUSA4US 	CALL	PAUSA4US 	CALL	SYNCVERT 	GOTO	PANTALLA_MODE1     ;------------------------------MODO DE VIDEO 1---------------------------------   MODE1 	CLRF	SSPCON 	CLRF	PORTC 	BCF	PORTA,0; INICIO DEL PULSO DE SINCRONISMO HORIZONTAL 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	BSF	PORTA,0; FIN DEL PULSO DE SINCRONISMO HORIZONTAL 	CALL	PAUSA4US 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	MOVLW	B'00100001' 	MOVWF	SSPCON 	MOVF	INDF,W; COMIENZO DE LOS 7 CARACTERES 	CALL	BYTEPANT1 	MOVWF	SSPBUF 	CALL	DELAY_MODE1 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT1 	MOVWF	SSPBUF 	CALL	DELAY_MODE1 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT1 	MOVWF	SSPBUF 	CALL	DELAY_MODE1 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT1 	MOVWF	SSPBUF 	CALL	DELAY_MODE1 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT1 	MOVWF	SSPBUF 	CALL	DELAY_MODE1 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT1 	MOVWF	SSPBUF 	CALL	DELAY_MODE1 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT1 	MOVWF	SSPBUF 	CALL	DELAY_MODE1 	INCF	FSR,F; FIN DE LOS 7 CARACTERES 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	CLRF	SSPBUF 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	INCF	BYTECHAR,F 	NOP 	NOP 	NOP 	MOVLW	LONGX_MODE1 	SUBWF	FSR,F 	DECF	BYTECHAR,F 	NOP 	NOP 	;REPITE LA LINEA 	CLRF	SSPCON 	CLRF	PORTC 	BCF	PORTA,0; INICIO DEL SINCRONISMO HORIZONTAL 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	BSF	PORTA,0; FIN DEL SINCRONISMO HORIZONTAL 	CALL	PAUSA4US 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	MOVLW	B'00100001' 	MOVWF	SSPCON	 	MOVF	INDF,W; COMIENZO DE LOS 7 CARACTERES 	CALL	BYTEPANT1 	MOVWF	SSPBUF 	CALL	DELAY_MODE1 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT1 	MOVWF	SSPBUF 	CALL	DELAY_MODE1 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT1 	MOVWF	SSPBUF 	CALL	DELAY_MODE1 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT1 	MOVWF	SSPBUF 	CALL	DELAY_MODE1 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT1 	MOVWF	SSPBUF 	CALL	DELAY_MODE1 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT1 	MOVWF	SSPBUF 	CALL	DELAY_MODE1 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT1 	MOVWF	SSPBUF 	CALL	DELAY_MODE1 	INCF	FSR,F; FIN DE LOS 7 CARACTERES 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	CLRF	SSPBUF 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	INCF	BYTECHAR,F 	NOP 	NOP 	NOP 	MOVLW	LONGX_MODE1 	SUBWF	FSR,F 	DECF	BYTECHAR,F 	NOP 	NOP 	;REPITE LA LINEA 	CLRF	SSPCON 	CLRF	PORTC 	BCF	PORTA,0; INICIO DEL SINCRONISMO HORIZONTAL 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	BSF	PORTA,0; FIN DEL SINCRONISMO HORIZONTAL 	CALL	PAUSA4US 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	MOVLW	B'00100001' 	MOVWF	SSPCON	 	MOVF	INDF,W; COMIENZO DE LOS 7 CARACTERES 	CALL	BYTEPANT1 	MOVWF	SSPBUF 	CALL	DELAY_MODE1 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT1 	MOVWF	SSPBUF 	CALL	DELAY_MODE1 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT1 	MOVWF	SSPBUF 	CALL	DELAY_MODE1 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT1 	MOVWF	SSPBUF 	CALL	DELAY_MODE1 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT1 	MOVWF	SSPBUF 	CALL	DELAY_MODE1 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT1 	MOVWF	SSPBUF 	CALL	DELAY_MODE1 	INCF	FSR,F 	MOVF	INDF,W 	CALL	BYTEPANT1 	MOVWF	SSPBUF 	CALL	DELAY_MODE1 	INCF	FSR,F; FIN DE LOS 7 CARACTERES 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	CLRF	SSPBUF 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	INCF	BYTECHAR,F 	DECFSZ	NUMCHAR,F; CARACTERES 8*8 COMPLETOS? 	GOTO	NOCOMPLETOS_MODE1 	CLRF	BYTECHAR 	MOVLW	LONGY_MODE1 	MOVWF	NUMCHAR 	DECFSZ	NUMCOL,F;COLUMNA COMPLETA DE CARACTERES? 	GOTO	MODE1 	RETURN   NOCOMPLETOS_MODE1 	NOP 	MOVLW	LONGX_MODE1 	SUBWF	FSR,F 	GOTO MODE1   DELAY_MODE1 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	NOP 	RETURN ;------------------------------------------------------------------------------   ;PONE A "0" LOS REGISTROS DE MEMORIA DEL BANCO 0 Y 1 ,QUE UTILIZA ;EL PROGRAMA PARA REPRESENTAR LOS CARACTERES EN PANTALLA. BORRAPANT 	BCF	STATUS,RP0 	BCF	STATUS,RP1 	MOVLW	.80 	MOVWF	CONT 	MOVLW	INICPANT 	MOVWF	FSR BORRA 	MOVLW	B'00000000' 	MOVWF	INDF 	INCF	FSR,F 	DECFSZ	CONT,F 	GOTO	BORRA BORRAPANT2 	BCF	STATUS,RP0 	BCF	STATUS,RP1 	MOVLW	.80 	MOVWF	CONT 	MOVLW	PANT2 	MOVWF	FSR BORRA2 	MOVLW	B'00000000' 	MOVWF	INDF 	INCF	FSR,F 	DECFSZ	CONT,F 	GOTO	BORRA2 	RETURN     ;------------------------------------------------------------------------------   ;CONVIERTE LOS CARACTERES ASCII DE LOS TEXTOS A CARÁCTERES PARA QUE PUEDAN SER UTILIZADOS POR EL PROGRAMA CONV_CHAR 	MOVLW	.80; NUMERO DE CARACTERES A MOSTRAR EN EL BANCO0 	MOVWF	CONT 	MOVLW	INICPANT 	MOVWF	FSR 	CLRF	BYTECHAR; CONTIENE EL PUNTERO DE LA POSICION DE TEXTO OTRAVEZ	 	CALL	TEXTO 	MOVWF	INDF 	MOVLW	.96 	MOVWF	LINE 	MOVF	LINE,W 	SUBWF	INDF,F 	BCF	STATUS,C 	RLF	INDF 	BCF	STATUS,C 	RLF	INDF 	BCF	STATUS,C 	RLF	INDF 	INCF	BYTECHAR,F 	INCF FSR,F 	DECFSZ	CONT,F 	GOTO	OTRAVEZ 	CLRF	PCLATH 	RETURN	   CONV_CHAR2 	MOVLW	.80; NUMERO DE CARACTERES A MOSTRAR EN EL BANCO1 	MOVWF	CONT 	MOVLW	PANT2 	MOVWF	FSR 	CLRF	BYTECHAR; CONTIENE EL PUNTERO DE LA POSICION DE TEXTO OTRAVEZ2	 	CALL	TEXTO2 	MOVWF	INDF 	MOVLW	.96 	MOVWF	LINE 	MOVF	LINE,W 	SUBWF	INDF,F 	BCF	STATUS,C 	RLF	INDF 	BCF	STATUS,C 	RLF	INDF 	BCF	STATUS,C 	RLF	INDF 	INCF	BYTECHAR,F 	INCF FSR,F 	DECFSZ	CONT,F 	GOTO	OTRAVEZ2 	CLRF	PCLATH 	RETURN	   	END 
 En esta web veo interesante este tipo de ASM.http://usuarios.lycos.es/zootronica/modules.php?name=News&file=article&sid=32 Cuadno ya sepas algo, ya puedes hacer el de PC. También puedes hacer cosas con PIC y Puerto serie RS232 y interfaz Visual C#.http://www.abcdatos.com/tutoriales/tutorial/z9521.html Saludos. |  
						| 
								|  |  
								| « Última modificación:  4 Febrero 2009, 07:43 am por Meta » |  En línea | 
 
 |  |  |  | 
			| 
					
						| krackwar 
								 
								
								 Desconectado 
								Mensajes: 900
								
								
								
								
								
								   | 
 
Siempre me a interesado la programacion de los PIC pero nunca lo e aprendido     , no se si alguien me pudiera facilitar algunos manuales ,cuales son las herramientas necesarias , etc.. . aprovechando que se toco el tema. |  
						| 
								|  |  
								|  |  En línea | 
 
 Mi blogBienvenido krackwar, actualmente tu puntuación es de 38 puntos y tu rango es Veteran. El pollo número 1, es decir yo, (krackwar), adoro a Shaddy como a un dios.  |  |  |  |  |  |  |  
 
	
 
 
				
					
						| Mensajes similares |  
						|  | Asunto | Iniciado por | Respuestas | Vistas | Último mensaje |  
						|   |   | Se puede programar un PIC con lenguaje C?¿ Programación C/C++
 | Riki_89D | 1 | 4,526 |  8 Febrero 2011, 16:12 pm por xassiz~
 |  
						|   |   | El SAAS es el futuro... para quienes se preguntan en que lenguaje programar! Programación General
 | Graphixx | 5 | 7,975 |  24 Marzo 2012, 03:39 am por Graphixx
 |  
						|   |   | conectarse a una pagina web usando  solo lenguaje maquina ASM
 | fumoffu | 3 | 3,767 |  11 Julio 2013, 22:29 pm por Danyfirex
 |  
						|   |   | ¿Lenguaje De Maquina Como Programar? Programación General
 | DiegoUlises | 2 | 3,077 |  11 Diciembre 2016, 02:42 am por Eleкtro
 |  
						|   |   | ¿Una máquina de programar en cualquier lenguaje? Foro Libre
 | Machacador | 6 | 4,122 |  2 Marzo 2021, 20:06 pm por Serapis
 |    |