Code: Select all
program test;
var d1,d2,d3 : dWord;
procedure interrupt;
begin
// type of interrupt ...
d1 := 2048;
d2 := 128000;
end;
begin
while true do
begin
d1 := 1024;
d2 := 65536;
// maybe interrupt happened here ....... and d1, d2 change .... values
d3 := d2 div d1;
end;
end.
Code: Select all
; ----------------------------------------------
$0000 $EF2C F000 GOTO _main
$0008 $ _interrupt:
$0008 $CFE9 F015 MOVFF FSR0L, ?saveFSR0
$000C $CFEA F016 MOVFF FSR0H, ?saveFSR0+1
$0010 $CFE1 F017 MOVFF FSR1L, ?saveFSR1
$0014 $CFE2 F018 MOVFF FSR1H, ?saveFSR1+1
$0018 $CFD9 F019 MOVFF FSR2L, ?saveFSR2
$001C $CFDA F01A MOVFF FSR2H, ?saveFSR2+1
;test.ppas,6 :: begin
;test.ppas,8 :: d1 := 2048;
$0020 $0E00 MOVLW 0
$0022 $6E1B MOVWF _d1, 0
$0024 $0E08 MOVLW 8
$0026 $6E1C MOVWF _d1+1, 0
$0028 $0E00 MOVLW 0
$002A $6E1D MOVWF _d1+2, 0
$002C $6E1E MOVWF _d1+3, 0
;test.ppas,9 :: d2 := 128000;
$002E $0E00 MOVLW 0
$0030 $6E1F MOVWF _d2, 0
$0032 $0EF4 MOVLW 244
$0034 $6E20 MOVWF _d2+1, 0
$0036 $0E01 MOVLW 1
$0038 $6E21 MOVWF _d2+2, 0
$003A $0E00 MOVLW 0
$003C $6E22 MOVWF _d2+3, 0
$003E $ test_L_0:
;test.ppas,10 :: end;
$003E $ L_Interrupt_end:
$003E $C015 FFE9 MOVFF ?saveFSR0, FSR0L
$0042 $C016 FFEA MOVFF ?saveFSR0+1, FSR0H
$0046 $C017 FFE1 MOVFF ?saveFSR1, FSR1L
$004A $C018 FFE2 MOVFF ?saveFSR1+1, FSR1H
$004E $C019 FFD9 MOVFF ?saveFSR2, FSR2L
$0052 $C01A FFDA MOVFF ?saveFSR2+1, FSR2H
$0056 $0011 RETFIE
$0058 $ _main:
;test.ppas,12 :: begin
;test.ppas,13 :: while true do
$0058 $ test_L_3:
;test.ppas,15 :: d1 := 1024;
$0058 $0E00 MOVLW 0
$005A $6E1B MOVWF _d1, 0
$005C $0E04 MOVLW 4
$005E $6E1C MOVWF _d1+1, 0
$0060 $0E00 MOVLW 0
$0062 $6E1D MOVWF _d1+2, 0
$0064 $6E1E MOVWF _d1+3, 0
;test.ppas,16 :: d2 := 65536;
$0066 $0E00 MOVLW 0
$0068 $6E1F MOVWF _d2, 0
$006A $0E00 MOVLW 0
$006C $6E20 MOVWF _d2+1, 0
$006E $0E01 MOVLW 1
$0070 $6E21 MOVWF _d2+2, 0
$0072 $0E00 MOVLW 0
$0074 $6E22 MOVWF _d2+3, 0
;test.ppas,18 :: d3 := d2 div d1;
$0076 $0E40 MOVLW 64
$0078 $6E23 MOVWF _d3, 0
$007A $0E00 MOVLW 0
$007C $6E24 MOVWF _d3+1, 0
$007E $0E00 MOVLW 0
$0080 $6E25 MOVWF _d3+2, 0
$0082 $0E00 MOVLW 0
$0084 $6E26 MOVWF _d3+3, 0
;test.ppas,19 :: end;
$0086 $D7E8 BRA test_L_3
;test.ppas,20 :: end.
$0088 $D7FF BRA $