Witam ,
Zaczynam z AS6, dotąd używałem 4.18 głownie z asemblerem
Pytanie dotyczy możliwego błędu symulacji prostego kodu w AS6, do potrzeb zapytania sprowadzonego do wersji jak niżej :
powyższy kod jest prawidłowo kompilowany, kompilator przygotowuje obsługę przerwania, jak widać poniżej
również wygenerowany kod obsługi jest poprawny
Problem
a. Opis dotyczy symulacji wbudowanym symulatorem, programiku w AS6 na Win7 (64-bit)
b. obsługa przerwania wykonuje się z ustawioną flagą globalnej obsługi przerwań "I" !!!
c. Po opuszczeniu przerwania flaga globalnego zezwolenia na przerwania zostaje skasowana, i dalsze przerwania nie są wywoływane.
d. przełączenie na disasemblacje nadal wskazuje iż ostatnią instrukcją w przerwaniu jest instrukcja reti, co powinno ustawić flagę zezw. na globalne przerwania - niestety po tej instrukcji właśnie flaga jest zerowana.
Mało wierzę w błąd symulatora AS6 , jednak wszelkie próby wyjścia z tej sytuacji kończą się tak samo- po pierwszym przerwaniu , następuje wyłączenie obsługi przerwań.
Proszę o podpowiedź / radę . J.P.
ps. odnośnie asemblera wystarczy ogólna precyzja odpowiedzi,
w przypadku języka C proszę szczegółowiej
b.
Zaczynam z AS6, dotąd używałem 4.18 głownie z asemblerem
Pytanie dotyczy możliwego błędu symulacji prostego kodu w AS6, do potrzeb zapytania sprowadzonego do wersji jak niżej :
Kod: C / C++
powyższy kod jest prawidłowo kompilowany, kompilator przygotowuje obsługę przerwania, jak widać poniżej
również wygenerowany kod obsługi jest poprawny
Problem
a. Opis dotyczy symulacji wbudowanym symulatorem, programiku w AS6 na Win7 (64-bit)
b. obsługa przerwania wykonuje się z ustawioną flagą globalnej obsługi przerwań "I" !!!
c. Po opuszczeniu przerwania flaga globalnego zezwolenia na przerwania zostaje skasowana, i dalsze przerwania nie są wywoływane.
d. przełączenie na disasemblacje nadal wskazuje iż ostatnią instrukcją w przerwaniu jest instrukcja reti, co powinno ustawić flagę zezw. na globalne przerwania - niestety po tej instrukcji właśnie flaga jest zerowana.
Mało wierzę w błąd symulatora AS6 , jednak wszelkie próby wyjścia z tej sytuacji kończą się tak samo- po pierwszym przerwaniu , następuje wyłączenie obsługi przerwań.
Proszę o podpowiedź / radę . J.P.
ps. odnośnie asemblera wystarczy ogólna precyzja odpowiedzi,
w przypadku języka C proszę szczegółowiej
b.
