Forum: Mikrocontroller und Digitale Elektronik 80C166 W114 missing register bank definition


von Jan (Gast)


Angehängte Dateien:

Lesenswert?

Hallo!

Ich habe mir gerade einen Wolf gesucht:
Vorgabe: ein älteres Design (>15 a) mit einem 80C166, bei welchem der 
Quelltext angefasst werden musste (leider).

Dank DOSBox läuft der Assembler A166 noch.
Die Codeanpassung war schnell gemacht, aber die Warnung W114 hat mich 
genervt. Eine Dokumentation gab es zu der Zeit wohl nur auf Papier.

Nach - gefühlt - ewiger Suche im Netz, fand ich ein passendes User 
Manual:
https://www.tasking.com/support/c166-classic/a166_v8.7.pdf

Nach Einfügen der Zeile "REGDEF R0-R15", verschwindet die Warnung.
Hier ein Minimalbeispiel:
1
NAME    TEST 
2
TEST    SECTION CODE AT 0000H
3
REGDEF  R0-R15
4
5
_begin      PROC    NEAR  
6
    JMPA    cc_UC,_main
7
    RETV     
8
_begin      ENDP
9
10
_main       PROC NEAR
11
    MOV     R0,#1
12
    MOV     R1,#2
13
    ADD     R0,R1
14
15
endloop:    
16
    JMPR    cc_UC,endloop
17
18
    RETV  
19
_main       ENDP
20
21
TEST   ENDS
22
END

Sehr witzig ist auch die Anweisung 'RETV' -> virtual Return.
Die sucht man im Datenblatt/Instruction Set Manual vergeblich.
Aber ohne die Anweisung wirft der Assembler auch wieder Warnungen :-(

Jetzt suche ich noch die Ursache, warum der PEC den S0TIC-Interrupt 
auslöst, obwohl das letzte Zeichen aus dem ASC0 noch gar nicht raus 
ist...

von buffer empty (Gast)


Lesenswert?

Jan schrieb:
> Jetzt suche ich noch die Ursache, warum der PEC den S0TIC-Interrupt
> auslöst, obwohl das letzte Zeichen aus dem ASC0 noch gar nicht raus
> ist..

Na weil der Buffer leer ist und du das nächste Zeichen nachladen kannst.

von pegel (Gast)


Angehängte Dateien:

Lesenswert?

Eigentlich möchte der eine Register Bank Definition.
Mein altes Buch sagt dazu:

von Jan (Gast)


Angehängte Dateien:

Lesenswert?

Danke für die Rückmeldungen.

buffer empty schrieb:
>> Jetzt suche ich noch die Ursache, warum der PEC den S0TIC-Interrupt
>> auslöst, obwohl das letzte Zeichen aus dem ASC0 noch gar nicht raus
>> ist..
> Na weil der Buffer leer ist und du das nächste Zeichen nachladen kannst.
Das steht aber ganz schön zwischen den Zeilen (Seite 103):
https://www.infineon.com/dgdl/m166.pdf?fileId=db3a304412b407950112b41db27d30b8

Der 'normale' S0TINT kommt angeblich auch erst, wenn das Stopbit erzeugt 
wird (hab's aber nicht nachgemessen).

pegel schrieb:
> Eigentlich möchte der eine Register Bank Definition.
Ich habe mir das Assembler-Manual von Tasking nochmal intensiver zu 
Gemüte geführt.
Der Assembler will einem die Registerverwaltung etwas abnehmen.

Ich habe stattdessen die Zeile $ABSOLUTE im Quelltext ergänzt. Damit 
verschwindet die Warnung auch ohne ein(e) REGDEF.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.