65 lines
4.6 KiB
Plaintext
65 lines
4.6 KiB
Plaintext
|
00001 ;TPicSim3
|
|||
|
00002 ;Programm zum Test des 16F84-Simulators.
|
|||
|
00003 ;Es werden die Byte-orientieren File-Register Befehle gepr<70>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<6E>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
|