PIC_Simulator_Simon/TPicSim Testprogramme/TPicSim3.LST

65 lines
4.7 KiB
Plaintext

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