Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > ASM y Microcontroladores
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-02-2008
REHome REHome is offline
Miembro
 
Registrado: jul 2003
Ubicación: España
Posts: 454
Poder: 21
REHome Va por buen camino
Ayuda con los comandos del ASM.

Soy nuevo con los PIC y hay cosas básicas que no entiendo.

Código:
ADDWF 

Acción
	

Suma el contenido del acumulador y el registro dado, y el resultado lo guarda en d

Sintaxis
	

ADDWF   f,d

Funcionamiento
	

Add W to file register (Añade W al registro)

Hexadecimal
	

07 ff

Bits (OPCODE)
	

00   0111  dfff  ffff

Operación
	

d = W + f (d  puede ser W ó f).

Descripción
	

Esta instrucción suma el contenido de un registro específico al contenido de W donde f puede ser un registro cualquiera con un determinado valor.

Comentarios
	

Aunque ya conocemos el funcionamiento del bit d, lo repetiré de nuevo para el resto de instrucciones:

-         Si vale 1, el resultado se guarda en el registro f

-         Si vale 0, el resultado se guarda en el acumulador W

W. es Work donde guarda algún dato temporalmente.

f y d, creo que es "f" significa fuente de los datos y "d" destino de los datos. ¿ME podrían ayudar si esto es así o es otra cosa?
__________________
http://electronica-pic.blogspot.com....n-arduino.html Manuales de electrónica general, PIC y Arduino.
Responder Con Cita
  #2  
Antiguo 21-02-2008
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

No te podré ayudar en nada, pero, me llama la atención que crees que "f" es la fuente de los datos y "d" destino de los mismos. En español bien podría ser así, en inglés, he visto traducir "fuente" como "source", y "destino" como "target"... y ahora es cuando repito que de poco te habrá servido esto que digo...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 21-02-2008
Avatar de aeff
aeff aeff is offline
Miembro
 
Registrado: oct 2006
Ubicación: Cuba, Guantánamo
Posts: 348
Poder: 18
aeff Va camino a la fama
Diaaaablos!!. mira, no entiendo mucho lo que planteas compañero REHome, esas letras que llamas f, d y w, no se que representan realmente para ti, pero estuve leyendo y mecionabas las palabras "Acumulador", "Registros"..., y creo que de lo poco que se de ASM nunca he visto un registro llamado ni "f", ni "d" ni "w",...

bueno, puede que lo que te este diciendo no te sirva para nada o que ya conozcas esto pero por si acaso:

mira, el microprocesador consta de varios registros, denominados, AX, BX, CX y DX , cada uno de ellos cumple una función en específico, que no las recuerdo ahora, pero usando estos registros(son como secciones del micro...) es que los programas hacen sus operaciones matemáticas y otras... entonces, para sumar dos valores se deben introducir sol operandos en los registros y mandar a operar al ordenador con un operador llamado ADD, mas o menos, mira este codiguito:

Código:
 mov ax, 100  // muevo para el registro ax, 100
 add ax, 150  // le sumo al registro ax, 100
y el resultado se almacenará en AX, para sre mas claro, en ensamblador existen operadores, MOV, ADD, SUB, MUL, LEA, INC, DEC, DIV ... mucho de ellos requieren de una sintaxis para operar, por ejemplo:

MOV Destino, Fuente
ADD Destino, Fuente
...

es decir, destino en el primer caso sería donde almacenarás un nuevo valor, pude ser uno de los registros, si pongo: mov dx, 10h: lo que estoy haciendo es introducir en el registro dx el valor 10h...

en el segundo caso, se hace una suma, por ejemplo
mov ax, 10
add ax, 10


aqui se coloca en el registro ax el valor 10 y luego se le suma 10 más, al final el resultado se guarda en el registro Destino que es AX en este caso:

otro ejemplo:

Código:
mov ax, 150
mov dx, 150
add ax, dx
¿que crees que sucederá aqui?,


saludos,

aeff!
Responder Con Cita
  #4  
Antiguo 21-02-2008
REHome REHome is offline
Miembro
 
Registrado: jul 2003
Ubicación: España
Posts: 454
Poder: 21
REHome Va por buen camino
Ya me dijeron la respuesta que yo quiero.

Cita:
ADDWF f,d
f es la direccion en ram de la variable.

d pueden ser las letras f o w y entonces el linkeador reemplaza w por 0 y f por 1 ( o se puede poner 0 o 1 directamente)

ejemplo
Cita:
ADDWF numero,f
sumara el contenido de W con el contenido de lo que este en la direccion etiquetada como numero Y guardara el resultado en la direccion etiquetada como numero
Cita:
bueno, ya sabes que w el un registro de trabajo, es decir, en el se guardan datos temporales, para moverlos de un lado a otro, por ejemplo.

movlw b'00011101'

significa, mover a w ese binario.

movwf portb

significa, mover lo de w a un registro x, en este caso port b, es decir que ahora port b, es igual a 00011101

hay que tener en cuenta:

w=registro de trabajo
f= registro x
d= destino del la operacion(donde se va a guardar
tal vez esto te puede sevir.

es una buena guia.




Cita:
mov ax, 150
mov dx, 150
add ax, dx


En tu resultado da 300. Veo que te expresas muy bien en asm. Pues se parece mucho a los PIC. He dado 8085 en electrónica y se parece mucho al que mencionas. Muchas gracias por la ayuda.

¿Qué compilador es el más adecuado para manejar los procesadores 8085, 8086, 8088 cosas de estas?
__________________
http://electronica-pic.blogspot.com....n-arduino.html Manuales de electrónica general, PIC y Arduino.

Última edición por REHome fecha: 21-02-2008 a las 21:27:12.
Responder Con Cita
  #5  
Antiguo 21-02-2008
REHome REHome is offline
Miembro
 
Registrado: jul 2003
Ubicación: España
Posts: 454
Poder: 21
REHome Va por buen camino
¿Qué crees que da en un PIC 16F84A?

Cita:
movlw .150
movwf 10h
movlw .150
movwf 11h
movwf 13h

movf 10h,W
addwf 11h,W
movwf 13h
__________________
http://electronica-pic.blogspot.com....n-arduino.html Manuales de electrónica general, PIC y Arduino.
Responder Con Cita
  #6  
Antiguo 11-03-2008
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 18
MaMu Va por buen camino
Cita:
Empezado por REHome Ver Mensaje
¿Qué crees que da en un PIC 16F84A?
Cargas 150 decimal en el registro W
Moves el contenido del registro W a la dirección hexa 10h
Cargas 150 decimal en el registro W
Moves el contenido del registro W a la dirección hexa 11h
Moves el contenido del registro W a la dirección hexa 13h
Moves el contenido de la dirección hexa 10h al registro W
Le sumas lo que tenias en el registro W a la dirección hexa 11h y lo guardas en W
Moves el contenido del registro W a la dirección hexa 13h

Por lo tanto, tenes en:

W = 300 decimal
10h = 150 decimal
11h = 150 decimal
13h = 300 decimal

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
linea de comandos y bpl juanmdq Varios 8 25-01-2008 16:44:18
comandos de impresion federicorl Impresión 4 07-09-2006 23:03:49
Ayuda con conexion a bases de datos desde linea de comandos k_bron Conexión con bases de datos 3 31-08-2006 22:23:31
messenger por comandos Cosgaya Varios 0 01-02-2006 13:58:17
Ejecutar comandos del DOS? Carlos Arevalo Varios 3 12-11-2003 08:50:41


La franja horaria es GMT +2. Ahora son las 10:00:00.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi