                    00001           ;TPicSim3
                    00002           ;Programm zum Test des 16F84-Simulators.
                    00003           ;Es werden die Byte-orientieren File-Register Befehle geprüft
                    00004           ;aber kein DECFSZ, INCFSZ, RLF, RRF
                    00005           ;(c) St. Lehmann
                    00006           ;Ersterstellung: 23.03.2016
                    00007           
                    00008           ;Hinweis:
                    00009           ;Bei diesen Befehlen entscheidet das d-Bit (Destination), ob das Ergebnis
                    00010           ;dieser Operation ins W- oder File-Register geschrieben wird. Wird im
                    00011           ;Assemblercode der Befehl mit ",W" geschrieben, bedeutet dies, dass das
                    00012           ;d-Bit 0 ist und das Ergebnis ins W-Register kommt. Fehlt ",W" ist das 
                    00013           ;d-Bit 1 und das Ergebnis wird ins Fileregister geschrieben.
                    00014           ;
                    00015           ;Alle Befehle die eine Fileregister-Adresse haben, können auch "indirekt"
                    00016           ;adressieren. Dies ist im Testfile TPicSim6.LST beschrieben.
                    00017           ;
                    00018           list c=132          ;Zeilenlänge im LST auf 132 Zeichen setzen
                    00019           
                    00020           ;Definition einiger Symbole
                    00021           ;zuerst Hardware-Register
                    00022           status   equ 03h
                    00023           ra       equ 05h
                    00024           rb       equ 06h
                    00025           
                    00026           ;für den Benutzer frei verwendbare Register
                    00027           wert1    equ 0ch             ;Variable Nr.1
                    00028           wert2    equ 0dh             ;Variable Nr.2
                    00029           ergeb    equ 0eh             ;Variable Nr.3
                    00030           
                    00031           ;Definition des Prozessors
                    00032           device 16F84
                    00033             
                    00034           ;Festlegen des Codebeginns
                    00035           org 0
                    00036  loop     
0000 3011           00037           movlw 11h           ;in W steht nun 11h, DC=?, C=?, Z=?
0001 008C           00038           movwf wert1         ;diesen Wert abspeichern, DC=?, C=?, Z=?
0002 3014           00039           movlw 14h           ;W = 14h, DC=?, C=?, Z=?
0003 070C           00040           addwf wert1,w       ;W = 25h, DC=0, C=0, Z=0
0004 078C           00041           addwf wert1         ;W = 25h, wert1 = 36h, DC=0, C=0, Z=0
0005 050C           00042           andwf wert1,w       ;W = 24h, wert1 = 36h, DC=0, C=0, Z=0
0006 008D           00043           movwf wert2         ;W=24h, wert1=36, wert2=24h
0007 018C           00044           clrf wert1          ;W=24h, wert1=0, wert2=24h, DC=0, C=0, Z=1
0008 090D           00045           comf wert2,w        ;W=DBh, wert1=0, wert2=24h, DC=0, C=0, Z=0
0009 030C           00046           decf wert1,w        ;W=FFh, wert1=0, wert2=24h, DC=0, C=0, Z=0
000A 0A8D           00047           incf wert2          ;W=FFh, wert1=0, wert2=25h, DC=0, C=0, Z=0
000B 088C           00048           movf wert1          ;W=FFh, wert1=0, wert2=25h, DC=0, C=0, Z=1
000C 048C           00049           iorwf wert1         ;W=FFh, wert1=FFh, wert2=25h, DC=0, C=0, Z=0
000D 020D           00050           subwf wert2,w       ;W=26h, wert1=FFh, wert2=25h, DC=0, C=0, Z=0
000E 0E8D           00051           swapf wert2         ;W=26h, wert1=FFh, wert2=52h, DC=0, C=0, Z=0
000F 068C           00052           xorwf wert1         ;W=26h, wert1=D9h, wert2=52h, DC=0, C=0, Z=0
0010 0100           00053           clrw                ;W=00h, wert1=D9h, wert2=52h, DC=0, C=0, Z=1
                    00054             
0011 020C           00055           subwf wert1,w       ;W=D9h, wert1=D9h, wert2=52h, DC=1, C=1, Z=0
0012 020D           00056           subwf wert2,w       ;W=79h, wert1=D9h, wert2=52h, DC=0, C=0, Z=0
0013 028D           00057           subwf wert2         ;W=79h, wert1=D9h, wert2=D9h, DC=0, C=0, Z=0
0014 028D           00058           subwf wert2         ;W=79h, wert1=D9h, wert2=60h, DC=1, C=1, Z=0
                    00059             
                    00060           
                    00061  ende     
0015 2815           00062           goto ende           ;Endlosschleife, verhindert Nirwana
                    00063           
                    00064             
