Sooo....
Hab eben mal mit CH-Basic etwas rumgespielt...
Ich hoffe, falls fehler auftauchen, werden mir die ASM-Spezies die Richtung weisen, und insgesamt wirds den ASM-Neulingen etwas helfen das alles zu verstehen.

CH-Basic-Code:
Code:
PIC 16F628
StartAddress 0x5
BYTE vartest1
WORD 
SBYTE 
SWORD 
     PortRd A , VARTEST1
     SetPort B , VARTEST1
Zu Deutsch:
Lade den kompletten Port A in die Variable VARTEST1
Schiebe die komplette Variable VARTEST1 in Port B

Also alles was an Port A reinkommt, gebe ich 1 zu 1 an Port B weiter....

Als ASM-Code macht mir das Prog das hier:

Code:
LIST P= 16F628
     INCLUDE "P16F628.INC"
     RADIX DEC
     ORG  0X5
AUX1_L EQU  0X20
AUX1_H EQU  0X21
AUX2_L EQU  0X22
AUX2_H EQU  0X23
AUX EQU  0X24
S0 EQU  0X25
VARTEST1 EQU  0X26
     MOVF   PORTA, W
     MOVWF  VARTEST1
     MOVF   VARTEST1, W
     MOVWF  TRISB
END
Ich versuche jetzt mal geschriebenerweise, mir das ganze irgendwie zu "übersetzen"...

LIST P= 16F628
INCLUDE "P16F628.INC

Hier sag ich dem Programm, welchen Controller ich überhaupt verwende....

MOVF PORTA, W
Packe (mov = move ?) den Port A in den Arbeitsspeicher (W ?)

MOVWF VARTEST1
Packe den Arbeitsspeicher W in die Variable VARTEST1

MOVF VARTEST1, W
Packe die Variable VARTEST1 in den Arbeitsspeicher W

MOVWF TRISB
Packe den Arbeitsspeicher W in den Port B

---------

Warum das aber erst PORTA und hinterher TRISB heisst, bin ich überfragt....