PIC_Simulator_Simon/TPicSim Testprogramme/TPicSim4.LST

81 lines
5.3 KiB
Plaintext

00001 ;TPicSim4
00002 ;Programm zum Test des 16F84-Simulators.
00003 ;Es werden die Befehle DECFSZ, INCFSZ, RLF, RRF geprüft
00004 ;(c) St. Lehmann
00005 ;Ersterstellung: 23.03.2016
00006 ;
00007 list c=132 ;Zeilenlänge im LST auf 132 Zeichen setzen
00008
00009 ;Definition einiger Symbole
00010 ;zuerst Hardware-Register
00011 status equ 03h
00012 ra equ 05h
00013 rb equ 06h
00014
00015 ;für den Benutzer frei verwendbare Register
00016 wert1 equ 0ch ;Variable Nr.1
00017 wert2 equ 0dh ;Variable Nr.2
00018 ergeb equ 0eh ;Variable Nr.3
00019
00020 ;Definition des Prozessors
00021 device 16F84
00022
00023 ;Festlegen des Codebeginns
00024 org 0
00025 loop
0000 3011 00026 movlw 11h ;in W steht nun 11h, DC=?, C=?, Z=?
0001 008C 00027 movwf wert1 ;diesen Wert abspeichern, DC=?, C=?, Z=?
0002 3E11 00028 addlw 11h ;löscht u.a. das Carry-Flag, DC=0, C=0, Z=0
0003 0D8C 00029 rlf wert1 ;W=22h, wert1=22h, wert2=?? , DC=0, C=0, Z=0
0004 0D8C 00030 rlf wert1 ;W=22h, wert1=44h, wert2=?? , DC=0, C=0, Z=0
0005 0D8C 00031 rlf wert1 ;W=22h, wert1=88h, wert2=?? , DC=0, C=0, Z=0
0006 0D0C 00032 rlf wert1,w ;W=10h, wert1=88h, wert2=?? , DC=0, C=1, Z=0
0007 0D8C 00033 rlf wert1 ;W=10h, wert1=11h, wert2=?? , DC=0, C=1, Z=0
0008 0D0C 00034 rlf wert1,w ;W=23h, wert1=11h, wert2=?? , DC=0, C=0, Z=0
0009 0C8C 00035 rrf wert1 ;W=23h, wert1=08h, wert2=?? , DC=0, C=0, Z=0
000A 008D 00036 movwf wert2 ;W=23h, wert1=08h, wert2=23h, DC=0, C=0, Z=0
000B 0C8D 00037 rrf wert2 ;W=23h, wert1=08h, wert2=91h, DC=0, C=1, Z=0
000C 0C0D 00038 rrf wert2,w ;W=C8h, wert1=08h, wert2=91h, DC=0, C=1, Z=0
00039
000D 3009 00040 movlw 9 ;W=09h, wert1=08h, wert2=10h, DC=0, C=1, Z=0
000E 008C 00041 movwf wert1 ;W=09h, wert1=09h, wert2=10h, DC=0, C=1, Z=0
000F 0100 00042 clrw ;W=00h, wert1=09h, wert2=10h, DC=0, C=1, Z=1
00043 loop1
0010 3E01 00044 addlw 1 ;W=01h, DC=0, C=0, Z=0
00045 ;W=02h, DC=0, C=0, Z=0
00046 ;W=03h, DC=0, C=0, Z=0
00047 ;W=04h, DC=0, C=0, Z=0
00048 ;W=05h, DC=0, C=0, Z=0
00049 ;W=06h, DC=0, C=0, Z=0
00050 ;W=07h, DC=0, C=0, Z=0
00051 ;W=08h, DC=0, C=0, Z=0
00052 ;W=09h, DC=0, C=0, Z=0
0011 078D 00053 addwf wert2 ;wert2=92h, DC=0, C=0, Z=0
00054 ;wert2=94h, DC=0, C=0, Z=0
00055 ;wert2=97h, DC=0, C=0, Z=0
00056 ;wert2=9Bh, DC=0, C=0, Z=0
00057 ;wert2=A0h, DC=0, C=1, Z=0
00058 ;wert2=A6h, DC=0, C=0, Z=0
00059 ;wert2=ADh, DC=0, C=0, Z=0
00060 ;wert2=B5h, DC=0, C=1, Z=0
00061 ;wert2=BEh, DC=0, C=0, Z=0
0012 0B8C 00062 decfsz wert1 ;wert1=08h, wert1=07h, ... DC,C und Z bleiben unverändert
0013 2810 00063 goto loop1
00064
0014 30F0 00065 movlw 0f0h ;Wert wird bis 00h (über FFh) hochgezählt
0015 008C 00066 movwf wert1
0016 018D 00067 clrf wert2
0017 0100 00068 clrw
00069 loop2
0018 070C 00070 addwf wert1,w ;W=F0h, DC=0, C=0, Z=0
00071
00072
0019 0A8D 00073 incf wert2 ;wert2=F1h, DC=
001A 0F8C 00074 incfsz wert1
001B 2818 00075 goto loop2
00076
00077 ende
001C 281C 00078 goto ende ;Endlosschleife, verhindert Nirwana
00079
00080