<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
		<id>https://rn-wissen.de/wiki/index.php?action=history&amp;feed=atom&amp;title=Benutzer%3ABenedikt.Seidl%2Fasm</id>
		<title>Benutzer:Benedikt.Seidl/asm - Versionsgeschichte</title>
		<link rel="self" type="application/atom+xml" href="https://rn-wissen.de/wiki/index.php?action=history&amp;feed=atom&amp;title=Benutzer%3ABenedikt.Seidl%2Fasm"/>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=Benutzer:Benedikt.Seidl/asm&amp;action=history"/>
		<updated>2026-04-11T16:45:02Z</updated>
		<subtitle>Versionsgeschichte dieser Seite in RN-Wissen.de</subtitle>
		<generator>MediaWiki 1.25.1</generator>

	<entry>
		<id>https://rn-wissen.de/wiki/index.php?title=Benutzer:Benedikt.Seidl/asm&amp;diff=11245&amp;oldid=prev</id>
		<title>Benedikt.Seidl: meins ;-)</title>
		<link rel="alternate" type="text/html" href="https://rn-wissen.de/wiki/index.php?title=Benutzer:Benedikt.Seidl/asm&amp;diff=11245&amp;oldid=prev"/>
				<updated>2007-04-12T14:16:00Z</updated>
		
		<summary type="html">&lt;p&gt;meins ;-)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Kurzübersicht Assembler Befehle ==&lt;br /&gt;
&amp;lt;font style=&amp;quot;font-size:10px;&amp;quot;&amp;gt;&lt;br /&gt;
{| &lt;br /&gt;
|-&lt;br /&gt;
| valign=top |&lt;br /&gt;
&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|ADDLW||Add literal and W &lt;br /&gt;
|-&lt;br /&gt;
|ADDWF||Add W and f &lt;br /&gt;
|-&lt;br /&gt;
|ANDLW||AND literal with W &lt;br /&gt;
|-&lt;br /&gt;
|ANDWF||AND W with f&lt;br /&gt;
|-&lt;br /&gt;
|BCF||Bit Clear f &lt;br /&gt;
|-&lt;br /&gt;
|BSF||Bit Set f &lt;br /&gt;
|-&lt;br /&gt;
|BTFSC||Bit Test f, Skip if Clear &lt;br /&gt;
|-&lt;br /&gt;
|BTFSS||Bit Test f, Skip if Set &lt;br /&gt;
|-&lt;br /&gt;
|CALL||Call subroutine &lt;br /&gt;
|-&lt;br /&gt;
|CLRF||Clear f&lt;br /&gt;
|-&lt;br /&gt;
|CLRW||Clear W&lt;br /&gt;
|-&lt;br /&gt;
|CLRWDT||Clear Watchdog Timer &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
| valign=top |&lt;br /&gt;
&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
|COMF||Complement f&lt;br /&gt;
|-&lt;br /&gt;
|DECF||Decrement f&lt;br /&gt;
|-&lt;br /&gt;
|DECFSZ||Decrement f, Skip if 0&lt;br /&gt;
|-&lt;br /&gt;
|GOTO||Go to address or label&lt;br /&gt;
|-&lt;br /&gt;
|INCF||Increment f&lt;br /&gt;
|-&lt;br /&gt;
|INCFSZ||Increment f, Skip if 0&lt;br /&gt;
|-&lt;br /&gt;
|IORLW||Inclusive OR literal with W &lt;br /&gt;
|-&lt;br /&gt;
|IORWF||Inclusive OR W with f&lt;br /&gt;
|-&lt;br /&gt;
|MOVF||Move f&lt;br /&gt;
|-&lt;br /&gt;
|MOVLW||Move literal to W &lt;br /&gt;
|-&lt;br /&gt;
|MOVWF||Move W to f&lt;br /&gt;
|-&lt;br /&gt;
|NOP||No Operation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
| valign=top |&lt;br /&gt;
&lt;br /&gt;
{| {{Blauetabelle}}&lt;br /&gt;
|-&lt;br /&gt;
|RETFIE||Return from interrupt &lt;br /&gt;
|-&lt;br /&gt;
|RETLW||Return with literal in W &lt;br /&gt;
|-&lt;br /&gt;
|RETURN||Return from Subroutine &lt;br /&gt;
|-&lt;br /&gt;
|RLF||Rotate Left f through Carry&lt;br /&gt;
|-&lt;br /&gt;
|RRF||Rotate Right f through Carry&lt;br /&gt;
|-&lt;br /&gt;
|SLEEP||Go into standby mode &lt;br /&gt;
|-&lt;br /&gt;
|SUBLW||Subtract W from literal &lt;br /&gt;
|-&lt;br /&gt;
|SUBWF||Subtract W from f&lt;br /&gt;
|-&lt;br /&gt;
|SWAPF||Swap nibbles in f&lt;br /&gt;
|-&lt;br /&gt;
|XORLW||Exclusive OR literal with W &lt;br /&gt;
|-&lt;br /&gt;
|XORWF||Exclusive OR W with f&lt;br /&gt;
|}&lt;br /&gt;
[[:bild:pic_asm_short.jpg|Kurzübersicht zum Ausdrucken]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Ausführliche Beschreibung zu den Befehlen==&lt;br /&gt;
&lt;br /&gt;
Erklärungen zu den Verwendeten Platzhaltern:&lt;br /&gt;
*'''k''' stellt einen fest definierten Wert da. z.B. &amp;lt;tt&amp;gt;0x20&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;d'42'&amp;lt;/tt&amp;gt; oder &amp;lt;tt&amp;gt;b'00101010'&amp;lt;/tt&amp;gt;&lt;br /&gt;
*'''W''' steht für das W-Register.&lt;br /&gt;
*'''d''' steht für ''destination'' (Ziel). Im code wird d durch ein &amp;lt;tt&amp;gt;w&amp;lt;/tt&amp;gt; bzw. &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt; (der Wert wird in das W-Register gespeichert ) oder &amp;lt;tt&amp;gt;f&amp;lt;/tt&amp;gt; bzw. &amp;lt;tt&amp;gt;1&amp;lt;/tt&amp;gt; (der Wert wird in das  davor definierte Register gespeichert)&lt;br /&gt;
*'''b''' steht für Bitnummer im Register (eine Zahl zwischen 0 und 7)&lt;br /&gt;
*'''R''' steht für ein Register&lt;br /&gt;
*'''fett''' geschrieben Bedeutet, dass es ein Platzhalter ist und im Quellcode durch eine Registeradresse oder einen Wert ersetzt werden muss&lt;br /&gt;
*&amp;lt;tt&amp;gt;Schreibmaschinenstil&amp;lt;/tt&amp;gt; bedeutet, dass es so im Quellcode geschrieben werden kann.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; ADDLW k &amp;lt;/b&amp;gt; &amp;lt;i style=&amp;quot;color:grey;&amp;quot;&amp;gt;Add W and literal - Addiere W und Zahl&amp;lt;/i&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
:Es wird die Rechenoperation &amp;lt;math&amp;gt;k+W&amp;lt;/math&amp;gt; ausgeführt und das Ergebniss in das W-Register gespeichert. Dieser Befehl beeinflusst das STATUS-Register. Siehe hierzu  [[#Überprüfung von Rechenergebnissen mit Hilfe des STATUS-Register|Überprüfung von Rechenergebnissen mit Hilfe des STATUS-Register]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; ADDWF R,d &amp;lt;/b&amp;gt; &amp;lt;i style=&amp;quot;color:grey;&amp;quot;&amp;gt;Add W and f - Addiere W und f &amp;lt;/i&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
:Es wird die Rechenoperation &amp;lt;math&amp;gt;R+W&amp;lt;/math&amp;gt; ausgeführt und das Ergebniss entweder in das W-Register ('''d'''=&amp;lt;tt&amp;gt;W&amp;lt;/tt&amp;gt;=&amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;) oder in R gespeichert ('''d'''=&amp;lt;tt&amp;gt;F&amp;lt;/tt&amp;gt;=&amp;lt;tt&amp;gt;1&amp;lt;/tt&amp;gt;). Dieser Befehl beeinflusst das STATUS-Register. Siehe hierzu  [[#Überprüfung von Rechenergebnissen mit Hilfe des STATUS-Register|Überprüfung von Rechenergebnissen mit Hilfe des STATUS-Register]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; ANDWF k&amp;lt;/b&amp;gt; &amp;lt;i style=&amp;quot;color:grey;&amp;quot;&amp;gt;AND literal with W&amp;lt;/i&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
:Es wird bitweise die logische Funktion &amp;lt;math&amp;gt;W\ and\ k&amp;lt;/math&amp;gt; ausgeführt und das Ergebniss in das W-Register gespeichert. Dieser Befehl setzt das Z bit des STATUS-Register, falls W=k und das Ergebnis 0 ist.&lt;br /&gt;
:Zur Verdeutlichung der Operation:&lt;br /&gt;
&amp;lt;dl&amp;gt;&amp;lt;dd&amp;gt;&amp;lt;!-- zum einrücken da--&amp;gt;&lt;br /&gt;
 1100&lt;br /&gt;
 1010&lt;br /&gt;
 ---- and&lt;br /&gt;
 1000&lt;br /&gt;
&amp;lt;/dd&amp;gt;&amp;lt;/dl&amp;gt;&amp;lt;!-- zum einrücken da--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; ANDWF R,d &amp;lt;/b&amp;gt; &amp;lt;i style=&amp;quot;color:grey;&amp;quot;&amp;gt;AND W with f - ???&amp;lt;/i&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
:Es wird bitweise die logische Funktion &amp;lt;math&amp;gt;W\ and\ R&amp;lt;/math&amp;gt; ausgeführt und das Ergebniss entweder in das W-Register ('''d'''=&amp;lt;tt&amp;gt;W&amp;lt;/tt&amp;gt;=&amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;) oder in R gespeichert ('''d'''=&amp;lt;tt&amp;gt;F&amp;lt;/tt&amp;gt;=&amp;lt;tt&amp;gt;1&amp;lt;/tt&amp;gt;). Vergleiche ANDWF&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;BCF R,b&amp;lt;/b&amp;gt; &amp;lt;i style=&amp;quot;color:grey;&amp;quot;&amp;gt;Bit Clear f  - Bit b im R wird gelöscht&amp;lt;/i&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
:Mit dem Befehl &amp;lt;tt&amp;gt;BCF&amp;lt;/tt&amp;gt; wird das Bit '''b''' im Register '''R''' gelöscht. Ein Beispiel:&lt;br /&gt;
&amp;lt;dl&amp;gt;&amp;lt;dd&amp;gt;&amp;lt;!-- zum einrücken da--&amp;gt;&lt;br /&gt;
    movlw b'11111111'     ;es wird b'11111111' in das W-Register geschrieben&lt;br /&gt;
    BCF W,2               ;es wird bit 2 im W-Register gelöscht.&lt;br /&gt;
                          ;das Ergebnis ist: b'11111011'&lt;br /&gt;
&amp;lt;/dl&amp;gt;&amp;lt;/dd&amp;gt;&amp;lt;!-- zum einrücken da--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;BSF R,b&amp;lt;/b&amp;gt; &amp;lt;i style=&amp;quot;color:grey;&amp;quot;&amp;gt;Bit Set f  - Bit b im R wird gesetzt&amp;lt;/i&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
:Mit dem Befehl &amp;lt;tt&amp;gt;BSF&amp;lt;/tt&amp;gt; wird das Bit '''b''' im Register '''R''' gesetzt. Ein Beispiel:&lt;br /&gt;
&amp;lt;dl&amp;gt;&amp;lt;dd&amp;gt;&amp;lt;!-- zum einrücken da--&amp;gt;&lt;br /&gt;
    clrw                   ;es wird b'00000000' in das W-Register geschrieben&lt;br /&gt;
    BSF W,2                ;es wird bit 2 im W-Register gesetzt.&lt;br /&gt;
                           ;das Ergebnis ist: b'00000100'&lt;br /&gt;
&amp;lt;/dl&amp;gt;&amp;lt;/dd&amp;gt;&amp;lt;!-- zum einrücken da--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;BTFSC R,b&amp;lt;/b&amp;gt; &amp;lt;i style=&amp;quot;color:grey;&amp;quot;&amp;gt;Bit Test f, Skip if Clear  - Wenn das Bit b im Register R 0 ist, überspringe den nächsten Befehl&amp;lt;/i&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
:Mit dem Befehl &amp;lt;tt&amp;gt;BTFSC&amp;lt;/tt&amp;gt; kann eine Verzweigung im Programmablauf bewirkt werden. Wenn das Bit '''b''' im Register '''R''' 0 ist, wird der nächste Befehl übersprungen. Ein Beispiel:&lt;br /&gt;
&amp;lt;dl&amp;gt;&amp;lt;dd&amp;gt;&amp;lt;!-- zum einrücken da--&amp;gt;&lt;br /&gt;
     movlw b'00000001'     ;es wird die Zahl 1 in das W-Register kopiert.&lt;br /&gt;
     BTFSC W,0             ;es wird bit 0 geprüft.&lt;br /&gt;
                           ;wenn es 0 ist, wird der nächste Befehl übersprungen&lt;br /&gt;
     goto  IST_EINS        ;springt zur Marke &amp;quot;IST_EINS&amp;quot; &amp;lt;- in diesem Fall wird dieser Sprungbefehl ausgeführt.&lt;br /&gt;
     goto  IST_NULL        ;springt zur Marke &amp;quot;IST_NULL&amp;quot;&lt;br /&gt;
&amp;lt;/dl&amp;gt;&amp;lt;/dd&amp;gt;&amp;lt;!-- zum einrücken da--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;BTFSS R,b&amp;lt;/b&amp;gt; &amp;lt;i style=&amp;quot;color:grey;&amp;quot;&amp;gt;Bit Test f, Skip if Set  - Wenn das Bit b im Register R 1 ist, überspringe den nächsten Befehl&amp;lt;/i&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
:Mit dem Befehl &amp;lt;tt&amp;gt;BTFSS&amp;lt;/tt&amp;gt; kann eine Verzweigung im Programmablauf bewirkt werden. Wenn das Bit '''b''' im Register '''R''' 1 ist, wird der nächste Befehl übersprungen. Ein Beispiel:&lt;br /&gt;
&amp;lt;dl&amp;gt;&amp;lt;dd&amp;gt;&amp;lt;!-- zum einrücken da--&amp;gt;&lt;br /&gt;
     movlw b'00000001'     ;es wird die Zahl 1 in das W-Register kopiert.&lt;br /&gt;
     BTFSS W,0             ;es wird bit 0 geprüft.&lt;br /&gt;
                           ;wenn es 1 ist, wird der nächste Befehl übersprungen&lt;br /&gt;
     goto  IST_NULL        ;springt zur Marke &amp;quot;IST_NULL&amp;quot;&lt;br /&gt;
     goto  IST_EINS        ;springt zur Marke &amp;quot;IST_EINS&amp;quot; &amp;lt;- in diesem Fall wird dieser&lt;br /&gt;
                           ;Sprungbefehl ausgeführt, da der Befehl&lt;br /&gt;
                           ;darüber übersprungen wurde.&lt;br /&gt;
&amp;lt;/dl&amp;gt;&amp;lt;/dd&amp;gt;&amp;lt;!-- zum einrücken da--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;CALL&amp;lt;/b&amp;gt; &amp;lt;i style=&amp;quot;color:grey;&amp;quot;&amp;gt;Call Subroutine  - Rufe Unterprogramm auf&amp;lt;/i&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
:Mit dem &amp;lt;tt&amp;gt;CALL&amp;lt;/tt&amp;gt; Befehl wird ein Unterprogramm aufgerufen. Mit dem &amp;lt;tt&amp;gt;RETURN&amp;lt;/tt&amp;gt;-Befehl wird das Unterprogramm beendet und man kehrt zum Befehl nach dem &amp;lt;tt&amp;gt;CALL&amp;lt;/tt&amp;gt;-Befehl zurück. Das Unterprogramm wird so definiert, dass im Quellcode der Name des Unterprogramms nicht eingerückt steht. Ein Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dl&amp;gt;&amp;lt;dd&amp;gt;&amp;lt;!-- zum einrücken da--&amp;gt;&lt;br /&gt;
     movlw d'13'           ;in das W-Register wird 13d geladen&lt;br /&gt;
     CALL  Unterprogramm1  ;es wird das Unterprogramm &amp;quot;Unterprogramm1&amp;quot; aufgerufen&lt;br /&gt;
     movwf ergebnis        ;das W-Register wird in das Register &amp;quot;ergebnis&amp;quot; kopiert.&lt;br /&gt;
                          ;im Register &amp;quot;ergebnis&amp;quot; steht nun 23d&lt;br /&gt;
       &lt;br /&gt;
 Unterprogramm1            ;zählt 10 zum W-Register&lt;br /&gt;
     addlw d'10'           ;es wird 10d zum W-Register addiert&lt;br /&gt;
     RETURN                ;kehre zurück zum Aufrufer&lt;br /&gt;
&amp;lt;/dl&amp;gt;&amp;lt;/dd&amp;gt;&amp;lt;!-- zum einrücken da--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;CLRF R&amp;lt;/b&amp;gt; &amp;lt;i style=&amp;quot;color:grey;&amp;quot;&amp;gt;Clear f - Schreibe 0 in das Register R&amp;lt;/i&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
:Das Register '''R''' wird mit Nullen gefüllt (gelöscht).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;CLRW&amp;lt;/b&amp;gt; &amp;lt;i style=&amp;quot;color:grey;&amp;quot;&amp;gt;Clear W - Schreibe 0 in W&amp;lt;/i&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
:Das W-Register (&amp;lt;tt&amp;gt;W&amp;lt;/tt&amp;gt;) wird mit Nullen gefüllt (gelöscht).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;CLRWDT&amp;lt;/b&amp;gt; &amp;lt;i style=&amp;quot;color:grey;&amp;quot;&amp;gt;Clear Watchdog Timer - Setzt den Watchdog-Timer zurück&amp;lt;/i&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
:Es wird der WDT (Watchdog-Timer) zurückgesetzt und der Zähler des WDT  auf 0 gesetzt, zusätzlich werden die STATUS-bits TO und PD gesetzt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;COMF R,d&amp;lt;/b&amp;gt; &amp;lt;i style=&amp;quot;color:grey;&amp;quot;&amp;gt;Complement f - negiere alle bits im Register R&amp;lt;/i&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
:Von der Binärzahl im Register '''R''' werden die 0 mit 1 und 1 mit 0 ersetzt. Das Ergebnis wird entweder in das W-Register ('''d'''=&amp;lt;tt&amp;gt;W&amp;lt;/tt&amp;gt;=&amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;) oder in R gespeichert ('''d'''=&amp;lt;tt&amp;gt;F&amp;lt;/tt&amp;gt;=&amp;lt;tt&amp;gt;1&amp;lt;/tt&amp;gt;). Ein kleines Beispiel: aus &amp;lt;tt&amp;gt;AAh&amp;lt;/tt&amp;gt; (&amp;lt;tt&amp;gt;10101010b&amp;lt;/tt&amp;gt;) wird &amp;lt;tt&amp;gt;55h&amp;lt;/tt&amp;gt; (&amp;lt;tt&amp;gt;01010101b&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;DECF R,d&amp;lt;/b&amp;gt; &amp;lt;i style=&amp;quot;color:grey;&amp;quot;&amp;gt;Decrement f, Skip if 0 - Subtrahiert 1 vom Regiser f&amp;lt;/i&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
:Vom Wert des Registers '''R''' wird 1 subtrahiert und das Ergebnis entweder in das W-Register ('''d'''=&amp;lt;tt&amp;gt;W&amp;lt;/tt&amp;gt;=&amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;) oder in R gespeichert ('''d'''=&amp;lt;tt&amp;gt;F&amp;lt;/tt&amp;gt;=&amp;lt;tt&amp;gt;1&amp;lt;/tt&amp;gt;). Dieser Befehl beeinflusst das C-Flag im STATUS-Register nicht.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;DECFSZ R,d&amp;lt;/b&amp;gt; &amp;lt;i style=&amp;quot;color:grey;&amp;quot;&amp;gt;Decrement f, Skip if 0 - Subtrahiert 1 vom Regiser f, überspringe wenn 0&amp;lt;/i&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
:Vom Wert des Registers '''R''' wird 1 subtrahiert und das Ergebnis entweder in das W-Register ('''d'''=&amp;lt;tt&amp;gt;W&amp;lt;/tt&amp;gt;=&amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;) oder in R gespeichert ('''d'''=&amp;lt;tt&amp;gt;F&amp;lt;/tt&amp;gt;=&amp;lt;tt&amp;gt;1&amp;lt;/tt&amp;gt;). Der Zusatz SZ steht für ''skip if zero'', d.h. wenn das Ergebnis der Rechnung Null ist, wird der nächste Befehl übersprungen. Dieser Befehl wird für Schleifen mit bestimmter Anzahl der Durchläufe benutzt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;GOTO&amp;lt;/b&amp;gt; &amp;lt;i style=&amp;quot;color:grey;&amp;quot;&amp;gt;Go to address - Gehe zu Adresse/Sprungmarke&amp;lt;/i&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
:Nach dem GOTO Befehl wird das Programm ab der Adresse weiter ausgeführt, die nach dem GOTO-Befehl steht. Diese Adresse wird durch so genannte Sprungmarke definiert, welche, im Gegensatz zu den Befehlen nicht eingerückt im Quellcode stehen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;INCF R,d&amp;lt;/b&amp;gt; &amp;lt;i style=&amp;quot;color:grey;&amp;quot;&amp;gt;Increment f - Addiere 1 zum Register f&amp;lt;/i&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
:Zum Wert des Registers '''R''' wird 1 addiert und das Ergebniss entweder in das W-Register ('''d'''=&amp;lt;tt&amp;gt;W&amp;lt;/tt&amp;gt;=&amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;) oder in R gespeichert ('''d'''=&amp;lt;tt&amp;gt;F&amp;lt;/tt&amp;gt;=&amp;lt;tt&amp;gt;1&amp;lt;/tt&amp;gt;). Dieser Befehl beeinflusst das C-Flag im STATUS-Register nicht.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;INCFSZ R,d&amp;lt;/b&amp;gt; &amp;lt;i style=&amp;quot;color:grey;&amp;quot;&amp;gt;Increment f, Skip if 0 - Addiere 1 zum Regiser f, überspringe wenn 0&amp;lt;/i&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
:Zum Wert des Registers '''R''' wird 1 addiert und das Ergebniss entweder in das W-Register ('''d'''=&amp;lt;tt&amp;gt;W&amp;lt;/tt&amp;gt;=&amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;) oder in R gespeichert ('''d'''=&amp;lt;tt&amp;gt;F&amp;lt;/tt&amp;gt;=&amp;lt;tt&amp;gt;1&amp;lt;/tt&amp;gt;).  Der Zusatz SZ steht für ''skip if zero'', d.h. wenn das Ergebnis der Rechnung Null ist, wird der nächste Befehl übersprungen. Dieser Befehl wird für Schleifen mit bestimmter Anzahl der Durchläufe benutzt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; IORLW k&amp;lt;/b&amp;gt; &amp;lt;i style=&amp;quot;color:grey;&amp;quot;&amp;gt;OR literal with W&amp;lt;/i&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
:Es wird bitweise die logische Funktion &amp;lt;math&amp;gt;W\ or\ k&amp;lt;/math&amp;gt; ausgeführt und das Ergebniss in das W-Register gespeichert. Dieser Befehl setzt das Z bit des STATUS-Register, falls W=k und das Ergebnis 0 ist.&lt;br /&gt;
:Zur Verdeutlichung der Ooperation:&lt;br /&gt;
&amp;lt;dl&amp;gt;&amp;lt;dd&amp;gt;&amp;lt;!-- zum einrücken da--&amp;gt;&lt;br /&gt;
 1100&lt;br /&gt;
 1010&lt;br /&gt;
 ---- or&lt;br /&gt;
 1110&lt;br /&gt;
&amp;lt;/dd&amp;gt;&amp;lt;/dl&amp;gt;&amp;lt;!-- zum einrücken da--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; IORWF R,d &amp;lt;/b&amp;gt; &amp;lt;i style=&amp;quot;color:grey;&amp;quot;&amp;gt;OR W with f&amp;lt;/i&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
:Es wird bitweise die logische Funktion &amp;lt;math&amp;gt;W\ or\ R&amp;lt;/math&amp;gt; ausgeführt und das Ergebniss entweder in das W-Register ('''d'''=&amp;lt;tt&amp;gt;W&amp;lt;/tt&amp;gt;=&amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;) oder in R gespeichert ('''d'''=&amp;lt;tt&amp;gt;F&amp;lt;/tt&amp;gt;=&amp;lt;tt&amp;gt;1&amp;lt;/tt&amp;gt;). Vergleiche IORLW&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;MOVF R,d&amp;lt;/b&amp;gt; &amp;lt;i style=&amp;quot;color:grey;&amp;quot;&amp;gt;Move f - Bewege f&amp;lt;/i&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
:Das Register R wird in das W-Register ('''d'''=&amp;lt;tt&amp;gt;W&amp;lt;/tt&amp;gt;=&amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;) oder wieder in R kopiert ('''d'''=&amp;lt;tt&amp;gt;F&amp;lt;/tt&amp;gt;=&amp;lt;tt&amp;gt;1&amp;lt;/tt&amp;gt;). Letzteres mag sinnlos scheinen, ist aber nützlich, da durch den Befehl das Z-Bit im STATUS-Regsiter gesetzt wird, falls R Null ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;MOVLW k&amp;lt;/b&amp;gt; &amp;lt;i style=&amp;quot;color:grey;&amp;quot;&amp;gt;Move literal to W - Bewege Zahl in W-Register&amp;lt;/i&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
:Der festgelegte Wert k wird in das W-Register kopiert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;MOVWF R&amp;lt;/b&amp;gt; &amp;lt;i style=&amp;quot;color:grey;&amp;quot;&amp;gt;Move W to f - Bewege W-Register in das Register F&amp;lt;/i&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
:Das W-Register wird in das Register '''R''' kopiert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;NOP&amp;lt;/b&amp;gt; &amp;lt;i style=&amp;quot;color:grey;&amp;quot;&amp;gt;No Operation - Kein Befehl zum Ausführen (warte)&amp;lt;/i&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
:Dieser Befehl macht nichts. Er verbraucht nur Zeit, welche sich einfach mit folgender Formel berechnen lässt. &amp;lt;math&amp;gt;t=\frac{4}{f}&amp;lt;/math&amp;gt;,wobei &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; für die Frequenz des Oszillators steht.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;RETFIE&amp;lt;/b&amp;gt; &amp;lt;i style=&amp;quot;color:grey;&amp;quot;&amp;gt;Return from interrupt - Kehre zurück aus der Unterbrechung&amp;lt;/i&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
:Mit diesem Befehl wird die Interrupt Service Routine (ISR) beendet und das Programm wird an der Zeile weiter ausgeführt, vor der es durch den Interrupt angehalten wurde. Es werden auch alle Interrupts wieder erlaubt (das GIE bit wird gesetzt). Siehe hierzu auch [[#Interrupt | Interrupt]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;RETLW k&amp;lt;/b&amp;gt; &amp;lt;i style=&amp;quot;color:grey;&amp;quot;&amp;gt;Return with literal in W - Kehre zurück mit Zahl k im W-Register&amp;lt;/i&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
:Wurde ein Programmteil mit dem Befehl &amp;lt;tt&amp;gt;CALL&amp;lt;/tt&amp;gt; aufgerufen, dann springt man mit dem Befehl &amp;lt;tt&amp;gt;RETLW&amp;lt;/tt&amp;gt; zurück in die nächste Zeile nach der Zeile aus der das &amp;lt;tt&amp;gt;CALL&amp;lt;/tt&amp;gt; Befehl ausgeführt wurde. Der in k angegebene Wert wird dabei in das W-Register geschrieben. Dieser Befehl wird vor allem für s.g Wertetabellen (eng: lookup tables) verwendet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;RETURN&amp;lt;/b&amp;gt; &amp;lt;i style=&amp;quot;color:grey;&amp;quot;&amp;gt;Return from Subroutine - Kehre zurück zum Übergeordneten Programmteil&amp;lt;/i&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
:Wurde ein Programmteil mit dem Befehl &amp;lt;tt&amp;gt;CALL&amp;lt;/tt&amp;gt; aufgerufen, dann springt man mit dem Befehl &amp;lt;tt&amp;gt;RETURN&amp;lt;/tt&amp;gt; zurück zu der nächsten Zeile nach der Zeile aus der das &amp;lt;tt&amp;gt;CALL&amp;lt;/tt&amp;gt; Befehl ausgeführt wurde.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;RLF R,d&amp;lt;/b&amp;gt; &amp;lt;i style=&amp;quot;color:grey;&amp;quot;&amp;gt;Rotate Left f through Carry - Rotiere das Register f mithilfe des Carry-bits nach links&amp;lt;/i&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
:Alle Bits im Register '''R''' werden um eine Position nach links verschoben. Dabei wird das Carry bit (&amp;lt;tt&amp;gt;STATUS,C&amp;lt;/tt&amp;gt;) in das Bit 0 des Registers R geschoben. Bit 7 aus dem Register '''R''' wird in das Carry bit &amp;quot;geschoben&amp;quot;. Das Ergebnis wird entweder in das W-Register ('''d'''=&amp;lt;tt&amp;gt;W&amp;lt;/tt&amp;gt;=&amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;) oder in R gespeichert ('''d'''=&amp;lt;tt&amp;gt;F&amp;lt;/tt&amp;gt;=&amp;lt;tt&amp;gt;1&amp;lt;/tt&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
:Zur Verdeutlichung:&lt;br /&gt;
&amp;lt;dl&amp;gt;&amp;lt;dd&amp;gt;&amp;lt;!-- zum einrücken da--&amp;gt;&lt;br /&gt;
 |C| |-Register  R-| ;C steht für das Carry-bit, STATUS,C&lt;br /&gt;
  c  7 6 5 4 3 2 1 0 ;vor dem Verschieben&lt;br /&gt;
  7  6 5 4 3 2 1 0 c ;nach dem Verschieben&lt;br /&gt;
&amp;lt;/dd&amp;gt;&amp;lt;/dl&amp;gt;&amp;lt;!-- zum einrücken da--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;RRF R,d&amp;lt;/b&amp;gt; &amp;lt;i style=&amp;quot;color:grey;&amp;quot;&amp;gt;Rotate Right f through Carry - Rotiere das Register f mithilfe des Carry-bits nach rechts&amp;lt;/i&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
:Alle Bits im Register '''R''' werden um eine Position nach rechts verschoben. Dabei wird das Carry bit (&amp;lt;tt&amp;gt;STATUS,C&amp;lt;/tt&amp;gt;) in das 7.Bit des Registers R geschoben. Bit 0 aus dem Register '''R''' wird in das Carry bit &amp;quot;geschoben&amp;quot;. Das Ergebnis wird entweder in das W-Register ('''d'''=&amp;lt;tt&amp;gt;W&amp;lt;/tt&amp;gt;=&amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;) oder in R gespeichert ('''d'''=&amp;lt;tt&amp;gt;F&amp;lt;/tt&amp;gt;=&amp;lt;tt&amp;gt;1&amp;lt;/tt&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
:Zur Verdeutlichung:&lt;br /&gt;
&amp;lt;dl&amp;gt;&amp;lt;dd&amp;gt;&amp;lt;!-- zum einrücken da--&amp;gt;&lt;br /&gt;
 |C| |-Register  R-| ;C steht für das Carry-bit, STATUS,C&lt;br /&gt;
  C  7 6 5 4 3 2 1 0 ;vor dem Verschieben&lt;br /&gt;
  0  C 7 6 5 4 3 2 1 ;nach dem Verschieben&lt;br /&gt;
&amp;lt;/dd&amp;gt;&amp;lt;/dl&amp;gt;&amp;lt;!-- zum einrücken da--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;SLEEP &amp;lt;/b&amp;gt; &amp;lt;i style=&amp;quot;color:grey;&amp;quot;&amp;gt;Go into standby mode - Versetze den Mirokontroller in Bereitschaftsmodus&amp;lt;/i&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
:Der µC wird in den Sleep-Mode versetzt, in dem er weniger Strom verbraucht. Er kann durch einen Reset, einem Watchdog-Timer-Reset oder durch einen Interrupt wieder aufgeweckt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; SUBLW k &amp;lt;/b&amp;gt; &amp;lt;i style=&amp;quot;color:grey;&amp;quot;&amp;gt;Subtract W from literal - Ziehe W von Zahl ab&amp;lt;/i&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
:Es wird die Rechenoperation &amp;lt;math&amp;gt;k-W&amp;lt;/math&amp;gt; ausgeführt und das Ergebniss in das W-Register gespeichert. Dieser Befehl beeinflusst das STATUS-Register. Siehe hierzu  [[#Überprüfung von Rechenergebnissen mit Hilfe des STATUS-Register|Überprüfung von Rechenergebnissen mit Hilfe des STATUS-Register]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; SUBWF R,d &amp;lt;/b&amp;gt; &amp;lt;i style=&amp;quot;color:grey;&amp;quot;&amp;gt;Subtract W from f - Ziehe W von f ab&amp;lt;/i&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
:Es wird die Rechenoperation &amp;lt;math&amp;gt;R-W&amp;lt;/math&amp;gt; ausgeführt und das Ergebniss entweder in das W-Register ('''d'''=&amp;lt;tt&amp;gt;W&amp;lt;/tt&amp;gt;=&amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;) oder in R gespeichert ('''d'''=&amp;lt;tt&amp;gt;F&amp;lt;/tt&amp;gt;=&amp;lt;tt&amp;gt;1&amp;lt;/tt&amp;gt;). Dieser Befehl beeinflusst das STATUS-Register. Siehe hierzu  [[#Überprüfung von Rechenergebnissen mit Hilfe des STATUS-Register|Überprüfung von Rechenergebnissen mit Hilfe des STATUS-Register]]&lt;br /&gt;
&lt;br /&gt;
:Beispiel:&lt;br /&gt;
&amp;lt;dl&amp;gt;&amp;lt;dd&amp;gt;&amp;lt;!-- zum einrücken da--&amp;gt;&lt;br /&gt;
 movlw    d'20'       ;schreibe 20 in das W-Register&lt;br /&gt;
 movwf    Register1   ;bewegt das W-Register in das Register1&lt;br /&gt;
 movlw    d'10'       ;schreibt 10 in das W-Register&lt;br /&gt;
 SUBWF    Register1,F ;schreibt Register1(20)-W(10) in Register1&lt;br /&gt;
&amp;lt;/dd&amp;gt;&amp;lt;/dl&amp;gt;&amp;lt;!-- zum einrücken da--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;SWAPF R,d &amp;lt;/b&amp;gt; &amp;lt;i style=&amp;quot;color:grey;&amp;quot;&amp;gt;Swap nibbles in f  - Vertausche die Halbbytes (Nibbles)&amp;lt;/i&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
:Es werden die höheren 4 bit (bit7-bit4) mit den niedrigeren 4 bit (bit3-bit0) eines Registers vertauscht und entweder in das W-Register ('''d'''=&amp;lt;tt&amp;gt;W&amp;lt;/tt&amp;gt;=&amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;) oder in R gespeichert ('''d'''=&amp;lt;tt&amp;gt;F&amp;lt;/tt&amp;gt;=&amp;lt;tt&amp;gt;1&amp;lt;/tt&amp;gt;).&lt;br /&gt;
:Beispiel:&lt;br /&gt;
&amp;lt;dl&amp;gt;&amp;lt;dd&amp;gt;&amp;lt;!-- zum einrücken da--&amp;gt;&lt;br /&gt;
 movlw    b'00001111' ;schreibe b'00001111' in das W-Register&lt;br /&gt;
 movwf    Register1   ;kopiert das W-Register in das Register1&lt;br /&gt;
 SWAPF    Register1,W ;vertauscht die ersten 4 bit mit den letzen&lt;br /&gt;
                      ;4 bit in Register 1 und schreibt es in das W-Register&lt;br /&gt;
                      ;im W-Register steht nun b'11110000'&lt;br /&gt;
&amp;lt;/dd&amp;gt;&amp;lt;/dl&amp;gt;&amp;lt;!-- zum einrücken da--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; XORLW k&amp;lt;/b&amp;gt; &amp;lt;i style=&amp;quot;color:grey;&amp;quot;&amp;gt;Exclusive OR literal with W&amp;lt;/i&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
:Es wird bitweise die logische Funktion &amp;lt;math&amp;gt;W\ xor\ k&amp;lt;/math&amp;gt; ausgeführt und das Ergebniss in das W-Register gespeichert. Dieser Befehl setzt das Z bit des STATUS-Registers, falls W=k und das Ergebnis 0 ist.&lt;br /&gt;
:Zur Verdeutlichung der Operation:&lt;br /&gt;
&amp;lt;dl&amp;gt;&amp;lt;dd&amp;gt;&amp;lt;!-- zum einrücken da--&amp;gt;&lt;br /&gt;
 1100&lt;br /&gt;
 1010&lt;br /&gt;
 ---- xor&lt;br /&gt;
 0110&lt;br /&gt;
&amp;lt;/dd&amp;gt;&amp;lt;/dl&amp;gt;&amp;lt;!-- zum einrücken da--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; XORWF R,d &amp;lt;/b&amp;gt; &amp;lt;i style=&amp;quot;color:grey;&amp;quot;&amp;gt;Exclusive OR W with f&amp;lt;/i&amp;gt;&amp;lt;hr&amp;gt;&lt;br /&gt;
:Es wird bitweise die logische Funktion &amp;lt;math&amp;gt;W\ xor\ R&amp;lt;/math&amp;gt; ausgeführt und das Ergebniss entweder in das W-Register ('''d'''=&amp;lt;tt&amp;gt;W&amp;lt;/tt&amp;gt;=&amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt;) oder in R gespeichert ('''d'''=&amp;lt;tt&amp;gt;F&amp;lt;/tt&amp;gt;=&amp;lt;tt&amp;gt;1&amp;lt;/tt&amp;gt;). Vergleiche XORLW&lt;/div&gt;</summary>
		<author><name>Benedikt.Seidl</name></author>	</entry>

	</feed>