Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Technische Diskussionen » U8810 Reassembler » Themenansicht

Autor Thread - Seiten: -1-
000
26.02.2016, 09:54 Uhr
PIC18F2550

Avatar von PIC18F2550

ich hab mal einen Versuch eines Reassemblers gebaut.
z.Z. grast er den Speicher, im 1. Durchlauf, Linear ab.
Erspeichert alle Sprünge und Markiert die Adressen nach Code und Daten.
Im 2.Durchlauf werden die marken und Code/Daten ausgegeben.
Alle Marken die außerhalb des eingegebenen Bereiches sind werden am ende Angehangen.
Im 3. Durchlauf wird eine *.asm Datei für den AS erstellt.

Aber erst mal muss ich klären ob alle Befehle richtig erkannt wurden.
In den () stehen die benötigten Takte.

Quellcode:

0000  12 34     INT0        1234H           ( 0/--)
0002  12 34     INT1        1234H           ( 0/--)
0004  12 34     INT2        1234H           ( 0/--)
0006  12 34     INT3        1234H           ( 0/--)
0008  12 34     INT4        1234H           ( 0/--)
000A  12 34     INT5        1234H           ( 0/--)
000C  00 34     DEC         R34             ( 6/--)
000E  01 34     DEC         IR34            ( 6/--)
0010  02 34     ADD         r3,     r4      ( 6/--)
0012  03 34     ADD         r3,     Ir4     ( 6/--)
0014  04 34 56  ADD         R34,    R56     (10/--)
0017  05 34 56  ADD         R56,    IR34    (10/--)
001A  06 34 56  ADD         R34,    IM56    (10/--)
001D  07 34 56  ADD         IR34,   IM56    (10/--)
0020  08 34     LD          r0,     R34     ( 6/--)
0022  09 34     LD          R34,    r0      ( 6/--)
0024  0A 34     DJNZ        r0,     005AH   (10/12)
0026  0B 34     JR   FALSE  005CH           (10/12)
0028  0C 34     LD          r0,     IM34    ( 6/--)
002A  0D 34 56  JP   FALSE  3456H           (10/12)
002D  0E 34     INC         r0              ( 6/--)
002F  0F        ERROR                       ( 0/--)
0030  10 34     RLC         R34             ( 0/--)
0032  11 34     RLC         IR34            ( 0/--)
0034  12 34     ADC         r3,     r4      ( 0/--)
0036  13 34     ADC         r3,     Ir4     ( 0/--)
0038  14 34 56  ADC         R34,    R56     ( 0/--)
003B  15 34 56  ADC         R56,    IR34    ( 0/--)
003E  16 34 56  ADC         R34,    IM56    ( 0/--)
0041  17 34 56  ADC         IR34,   IM56    ( 0/--)
0044  18 34     LD          r1,     R34     ( 6/--)
0046  19 34     LD          R34,    r1      ( 6/--)
0048  1A 34     DJNZ        r1,     007EH   (10/12)
004A  1B 34     JR   LT     0080H           (10/12)
004C  1C 34     LD          r1,     IM34    ( 6/--)
004E  1D 34 56  JP   LT     3456H           (10/12)
0051  1E 34     INC         r1              ( 6/--)
0053  1F        ERROR                       ( 0/--)
0054  20 34     INC         R34             ( 0/--)
0056  21 34     INC         IR34            ( 0/--)
0058  22 34     SUB         r3,     r4      ( 0/--)
005A  23 34     SUB         r3,     Ir4     ( 0/--)
005C  24 34 56  SUB         R34,    R56     ( 0/--)
005F  25 34 56  SUB         R56,    IR34    ( 0/--)
0062  26 34 56  SUB         R34,    IM56    ( 0/--)
0065  27 34 56  SUB         IR34,   IM56    ( 0/--)
0068  28 34     LD          r2,     R34     ( 6/--)
006A  29 34     LD          R34,    r2      ( 6/--)
006C  2A 34     DJNZ        r2,     00A2H   (10/12)
006E  2B 34     JR   LE     00A4H           (10/12)
0070  2C 34     LD          r2,     IM34    ( 6/--)
0072  2D 34 56  JP   LE     3456H           (10/12)
0075  2E 34     INC         r2              ( 6/--)
0077  2F        ERROR                       ( 0/--)
0078  30 34     JP          IRR34           ( 0/--)
007A  31 34     SRP         IM34            ( 0/--)
007C  32 34     SBC         r3,     r4      ( 0/--)
007E  33 34     SBC         r3,     Ir4     ( 0/--)
0080  34 34 56  SBC         R34,    R56     ( 0/--)
0083  35 34 56  SBC         R56,    IR34    ( 0/--)
0086  36 34 56  SBC         R34,    IM56    ( 0/--)
0089  37 34 56  SBC         IR34,   IM56    ( 0/--)
008C  38 34     LD          r3,     R34     ( 6/--)
008E  39 34     LD          R34,    r3      ( 6/--)
0090  3A 34     DJNZ        r3,     00C6H   (10/12)
0092  3B 34     JR   ULE    00C8H           (10/12)
0094  3C 34     LD          r3,     IM34    ( 6/--)
0096  3D 34 56  JP   ULE    3456H           (10/12)
0099  3E 34     INC         r3              ( 6/--)
009B  3F        ERROR                       ( 0/--)
009C  40 34     DA          R34             ( 0/--)
009E  41 34     DA          IR34            ( 0/--)
00A0  42 34     OR          r3,     r4      ( 0/--)
00A2  43 34     OR          r3,     Ir4     ( 0/--)
00A4  44 34 56  OR          R34,    R56     ( 0/--)
00A7  45 34 56  OR          R56,    IR34    ( 0/--)
00AA  46 34 56  OR          R34,    IM56    ( 0/--)
00AD  47 34 56  OR          IR34,   IM56    ( 0/--)
00B0  48 34     LD          r4,     R34     ( 6/--)
00B2  49 34     LD          R34,    r4      ( 6/--)
00B4  4A 34     DJNZ        r4,     00EAH   (10/12)
00B6  4B 34     JR   OV     00ECH           (10/12)
00B8  4C 34     LD          r4,     IM34    ( 6/--)
00BA  4D 34 56  JP   OV     3456H           (10/12)
00BD  4E 34     INC         r4              ( 6/--)
00BF  4F        ERROR                       ( 0/--)
00C0  50 34     POP         R34             ( 0/--)
00C2  51 34     POP         IR34            ( 0/--)
00C4  52 34     AND         r3,     r4      ( 0/--)
00C6  53 34     AND         r3,     Ir4     ( 0/--)
00C8  54 34 56  AND         R34,    R56     ( 0/--)
00CB  55 34 56  AND         R56,    IR34    ( 0/--)
00CE  56 34 56  AND         R34,    IM56    ( 0/--)
00D1  57 34 56  AND         IR34,   IM56    ( 0/--)
00D4  58 34     LD          r5,     R34     ( 6/--)
00D6  59 34     LD          R34,    r5      ( 6/--)
00D8  5A 34     DJNZ        r5,     010EH   (10/12)
00DA  5B 34     JR   MI     0110H           (10/12)
00DC  5C 34     LD          r5,     IM34    ( 6/--)
00DE  5D 34 56  JP   MI     3456H           (10/12)
00E1  5E 34     INC         r5              ( 6/--)
00E3  5F        ERROR                       ( 0/--)
00E4  60 34     COM         R34             ( 0/--)
00E6  61 34     COM         IR34            ( 0/--)
00E8  62 34     TCM         r3,     r4      ( 0/--)
00EA  63 34     TCM         r3,     Ir4     ( 0/--)
00EC  64 34 56  TCM         R34,    R56     ( 0/--)
00EF  65 34 56  TCM         R56,    IR34    ( 0/--)
00F2  66 34 56  TCM         R34,    IM56    ( 0/--)
00F5  67 34 56  TCM         IR34,   IM56    ( 0/--)
00F8  68 34     LD          r6,     R34     ( 6/--)
00FA  69 34     LD          R34,    r6      ( 6/--)
00FC  6A 34     DJNZ        r6,     0132H   (10/12)
00FE  6B 34     JR   Z/EQ   0134H           (10/12)
0100  6C 34     LD          r6,     IM34    ( 6/--)
0102  6D 34 56  JP   Z/EQ   3456H           (10/12)
0105  6E 34     INC         r6              ( 6/--)
0107  6F        ERROR                       ( 0/--)
0108  70 34     PUSH        R34             ( 0/--)
010A  71 34     PUSH        IR34            ( 0/--)
010C  72 34     TM          r3,     r4      ( 0/--)
010E  73 34     TM          r3,     Ir4     ( 0/--)
0110  74 34 56  TM          R34,    R56     ( 0/--)
0113  75 34 56  TM          R56,    IR34    ( 0/--)
0116  76 34 56  TM          R34,    IM56    ( 0/--)
0119  77 34 56  TM          IR34,   IM56    ( 0/--)
011C  78 34     LD          r7,     R34     ( 6/--)
011E  79 34     LD          R34,    r7      ( 6/--)
0120  7A 34     DJNZ        r7,     0156H   (10/12)
0122  7B 34     JR   C/ULT  0158H           (10/12)
0124  7C 34     LD          r7,     IM34    ( 6/--)
0126  7D 34 56  JP   C/ULT  3456H           (10/12)
0129  7E 34     INC         r7              ( 6/--)
012B  7F        ERROR                       ( 0/--)
012C  80 34     DECW        RR34            ( 0/--)
012E  81 34     DECW        IR34            ( 0/--)
0130  82 34     LDE         r3,     Irr4    ( 0/--)
0132  83 34     LDEI        Ir3,    Irr4    ( 0/--)
0134  84        ERROR                       ( 0/--)
0135  85        ERROR                       ( 0/--)
0136  86        ERROR                       ( 0/--)
0137  87        ERROR                       ( 0/--)
0138  88 34     LD          r8,     R34     ( 6/--)
013A  89 34     LD          R34,    r8      ( 6/--)
013C  8A 34     DJNZ        r8,     0172H   (10/12)
013E  8B 34     JR   TRUE   0174H           (10/12)
0140  8C 34     LD          r8,     IM34    ( 6/--)
0142  8D 34 56  JP   TRUE   3456H           (10/12)
0145  8E 34     INC         r8              ( 6/--)
0147  8F        DI                          ( 0/--)
0148  90 34     RL          R34             ( 0/--)
014A  91 34     RL          IR34            ( 0/--)
014C  92 34     LDE         Irr3,   r4      ( 0/--)
014E  93 34     LDEI        Irr3,   Ir4     ( 0/--)
0150  94        ERROR                       ( 0/--)
0151  95        ERROR                       ( 0/--)
0152  96        ERROR                       ( 0/--)
0153  97        ERROR                       ( 0/--)
0154  98 34     LD          r9,     R34     ( 6/--)
0156  99 34     LD          R34,    r9      ( 6/--)
0158  9A 34     DJNZ        r9,     018EH   (10/12)
015A  9B 34     JR   GE     0190H           (10/12)
015C  9C 34     LD          r9,     IM34    ( 6/--)
015E  9D 34 56  JP   GE     3456H           (10/12)
0161  9E 34     INC         r9              ( 6/--)
0163  9F        EI                          ( 0/--)
0164  A0 34     INCW        RR34            ( 0/--)
0166  A1 34     INCW        IR34            ( 0/--)
0168  A2 34     CP          r3,     r4      ( 0/--)
016A  A3 34     CP          r3,     Ir4     ( 0/--)
016C  A4 34 56  CP          R34,    R56     ( 0/--)
016F  A5 34 56  CP          R56,    IR34    ( 0/--)
0172  A6 34 56  CP          R34,    IM56    ( 0/--)
0175  A7 34 56  CP          IR34,   IM56    ( 0/--)
0178  A8 34     LD          rA,     R34     ( 6/--)
017A  A9 34     LD          R34,    rA      ( 6/--)
017C  AA 34     DJNZ        rA,     01B2H   (10/12)
017E  AB 34     JR   GT     01B4H           (10/12)
0180  AC 34     LD          rA,     IM34    ( 6/--)
0182  AD 34 56  JP   GT     3456H           (10/12)
0185  AE 34     INC         rA              ( 6/--)
0187  AF        RET                         ( 0/--)
0188  B0 34     CLR         R34             ( 0/--)
018A  B1 34     CLR         IR34            ( 0/--)
018C  B2 34     XOR         r3,     r4      ( 0/--)
018E  B3 34     XOR         r3,     Ir4     ( 0/--)
0190  B4 34 56  XOR         R34,    R56     ( 0/--)
0193  B5 34 56  XOR         R56,    IR34    ( 0/--)
0196  B6 34 56  XOR         R34,    IM56    ( 0/--)
0199  B7 34 56  XOR         IR34,   IM56    ( 0/--)
019C  B8 34     LD          rB,     R34     ( 6/--)
019E  B9 34     LD          R34,    rB      ( 6/--)
01A0  BA 34     DJNZ        rB,     01D6H   (10/12)
01A2  BB 34     JR   UGT    01D8H           (10/12)
01A4  BC 34     LD          rB,     IM34    ( 6/--)
01A6  BD 34 56  JP   UGT    3456H           (10/12)
01A9  BE 34     INC         rB              ( 6/--)
01AB  BF        IRET                        ( 0/--)
01AC  C0 34     RRC         R34             ( 0/--)
01AE  C1 34     RRC         IR34            ( 0/--)
01B0  C2 34     LDC         r3,     Irr4    ( 0/--)
01B2  C3 34     LDCI        Ir3,    Irr4    ( 0/--)
01B4  C4        ERROR                       ( 0/--)
01B5  C5        ERROR                       ( 0/--)
01B6  C6        ERROR                       ( 0/--)
01B7  C7 34 56  LD          r3,     R56+r4  ( 0/--)
01BA  C8 34     LD          rC,     R34     ( 6/--)
01BC  C9 34     LD          R34,    rC      ( 6/--)
01BE  CA 34     DJNZ        rC,     01F4H   (10/12)
01C0  CB 34     JR   NOV    01F6H           (10/12)
01C2  CC 34     LD          rC,     IM34    ( 6/--)
01C4  CD 34 56  JP   NOV    3456H           (10/12)
01C7  CE 34     INC         rC              ( 6/--)
01C9  CF        RCF                         ( 0/--)
01CA  D0 34     SRA         R34             ( 0/--)
01CC  D1 34     SRA         IR34            ( 0/--)
01CE  D2 34     LDC         Irr3,   r4      ( 0/--)
01D0  D3 34     LDCI        Irr3,   Ir4     ( 0/--)
01D2  D4 34     CALL        IRR34           ( 0/--)
01D4  D5        ERROR                       ( 0/--)
01D5  D6 34 56  CALL        3456H           ( 0/--)
01D8  D7 34 56  LD          R56+r4, r3      ( 0/--)
01DB  D8 34     LD          rD,     R34     ( 6/--)
01DD  D9 34     LD          R34,    rD      ( 6/--)
01DF  DA 34     DJNZ        rD,     0215H   (10/12)
01E1  DB 34     JR   PL     0217H           (10/12)
01E3  DC 34     LD          rD,     IM34    ( 6/--)
01E5  DD 34 56  JP   PL     3456H           (10/12)
01E8  DE 34     INC         rD              ( 6/--)
01EA  DF        SCF                         ( 0/--)
01EB  E0 34     RR          R34             ( 0/--)
01ED  E1 34     RR          IR34            ( 0/--)
01EF  E2        ERROR                       ( 0/--)
01F0  E3 34     LD          r3,     Ir4     ( 0/--)
01F2  E4 34 56  LD          R34,    R56     ( 0/--)
01F5  E5 34 56  LD          R56,    IR34    ( 0/--)
01F8  E6 34 56  LD          R34,    IM56    ( 0/--)
01FB  E7 34 56  LD          IR34,   IM56    ( 0/--)
01FE  E8 34     LD          rE,     R34     ( 6/--)
0200  E9 34     LD          R34,    rE      ( 6/--)
0202  EA 34     DJNZ        rE,     0238H   (10/12)
0204  EB 34     JR   NZ/NE  023AH           (10/12)
0206  EC 34     LD          rE,     IM34    ( 6/--)
0208  ED 34 56  JP   NZ/NE  3456H           (10/12)
020B  EE 34     INC         rE              ( 6/--)
020D  EF        CCF                         ( 0/--)
020E  F0 34     SWAP        R34             ( 0/--)
0210  F1 34     SWAP        IR34            ( 0/--)
0212  F2        ERROR                       ( 0/--)
0213  F3 34     LD          Ir4,    r3      ( 0/--)
0215  F4        ERROR                       ( 0/--)
0216  F5 34 56  LD          IR56,   R34     ( 0/--)
0219  F6        ERROR                       ( 0/--)
021A  F7        ERROR                       ( 0/--)
021B  F8 34     LD          rF,     R34     ( 6/--)
021D  F9 34     LD          R34,    rF      ( 6/--)
021F  FA 34     DJNZ        rF,     0255H   (10/12)
0221  FB 34     JR   NC/UGE 0257H           (10/12)
0223  FC 34     LD          rF,     IM34    ( 6/--)
0225  FD 34 56  JP   NC/UGE 3456H           (10/12)
0228  FE 34     INC         rF              ( 6/--)
022A  FF        NOP                         ( 0/--)


--
42 ist die Antwort auf die "Frage nach dem Leben, dem Universum und dem ganzen Rest"
Aktuelle Projektdokumentationen

Dieser Beitrag wurde am 26.02.2016 um 09:54 Uhr von PIC18F2550 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
26.02.2016, 12:02 Uhr
holm

Avatar von holm

Hm. Soll das jetzt Jemand kontrollieren?
Erstma Glückwunsch dazu, einen Test kannst Du machen in dem Du verschiedene Software disassemblierst und danach wieder assemblierst und linkst. Das Erbenis sollte das Selbe wie der Ausgangscode sein, ein besserer Test fällt mir nicht ein.

Wie hast Du das Programm geschrieben? (Sprache?) ..hoffentlich was Portables sonst isses schade um die Arbeit.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
26.02.2016, 13:16 Uhr
Digitalmax

Avatar von Digitalmax

Nur als Tipp, falls Du das Programm noch nicht kennst:
Der JTCEMU-Emulator von Jens Müller bringt fast alles mit was man im Umgang mit Z8-Programmen braucht: Debugger, Reassembler, Editor usw.
Dort fehlt mir im Debugger eigentlich nur eine Anzeige oder Einstellmöglichkeit für 8820/8840-CPUs um Port0 und Port1 anzuzeigen.

Gruß Matthias
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
27.02.2016, 00:25 Uhr
PIC18F2550

Avatar von PIC18F2550

Es gibt immer ein paar Dinge die einem beim Lesen auffallen oder nicht gefallen.
4 Augen sehen mehr als zwei.
Was mich stutzig macht sind die vielen Leerplätze.
Es stellt sich was macht der U88xx wenn er drauf kommt.
Oder was interessant wäre wird dieser Bereich in zwischen von Nachfolgetypen benutzt?

Disassemblieren und danach wieder Assemblieren ist mir schon bekannt nur geht es erst mal um Grundlagen der Rest baut darauf auf.

ich wüste jetzt nicht auf die schnelle wie ich das Programm portieren soll.
Da die Zielsysteme alle unterschiedlich sind.

Geschrieben ist das erst mal in SPIN.
Laufen tut es erst mal nur auf den HIVE.
Am KC habe ich zu wenig Speicherplatz, der JTCEMU-Emulator läuft nach einem Update nicht mehr.

Windows ??? nein Danke. Aber auch Linux ist zu älteren Programmen auch nicht besser.
Habe vor zwei Wochen meine Alten Programme eingestampft.
Da diese auf den neuen Systemen nicht mehr Laufen und ich einfach keine Lust mehr habe zu jeden Programm den Passenden PC da stehen zu haben.

Der Reassemler kommt in einen Propeller mit 1Mb RAM und SD Karte.
Die Daten werden dann von der Karte geladen und das Ergebnis darauf abgespeichert.
Keine Tastatur keine Maus Kein Monitor nur ein Resetknopf, drei Chips, eine LED und etwas Hünerfutter.

Aber erst mal muss der Kern laufen, und dann in Assembler meißeln damit das nicht in eine Kaffeorgie endet.

z.Z. 64k Programmcode mit 62k Datensegment
Der Reassembler hangelt sich beginnend von den hinterlegten Startadressen am Code entlang.
Er merkt sich ob an dem Speicherplatz ein Programmcode ist.
Er folgt den Sprüngen.
Er behandelt die Bedingten Sprünge als wen diese ungültig währen, und merkt sich die Sprungmarke als weitere Startadresse
Trifft er auf schon bearbeitete Speicherzellen bricht er ab und holt sich die nächste Startadressen.

Das ganze ist z.Z. etwas Speicherintensiv 320k Datenbereich und ca. 20k für das Programm werden belegt.

Aber das geht noch zu optimieren.
--
42 ist die Antwort auf die "Frage nach dem Leben, dem Universum und dem ganzen Rest"
Aktuelle Projektdokumentationen

Dieser Beitrag wurde am 27.02.2016 um 00:29 Uhr von PIC18F2550 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
28.02.2016, 23:47 Uhr
PIC18F2550

Avatar von PIC18F2550

Hallo Digitalmax,

Der Reassembler im JTCEMU erkennt leider keine Datenbereiche.
Er Übersetzt alles als Programmcode.
Beispiel aus dem Basic des 8830
So sollte es sein

Quellcode:
;-----------------------------------------------------------------------------
; Liste    der internen Prozeduren
;-----------------------------------------------------------------------------
B_0328:
        db    3,    "NOT"
        dw    B_0139            ; NOT[parameter] bitweise logische Negation
        db    3,    "ABS"
        dw    B_008C            ; ABS[parameter] absoluter Betrag
        db    5,    "SETRR"
        dw    B_028E            ; SETRR    [register,wert]    Doppelregister setzen
        db    4,    "SETR"
        dw    B_0296            ; SETR [register,wert] Register    setzen


Das macht er

Quellcode:
0328   03 4E       ADD     R4, @R14
032A   4F          WDh
032B   54 01 39    AND     %39, %1
032E   03 41       ADD     R4, @R1
0330   42 53       OR      R5, R3
0332   00 8C       DEC     %8C
0334   05 53 45    ADD     @%45, %53
0337   54 52 52    AND     %52, %52
033A   02 8E       ADD     R8, R14
033C   04 53 45    ADD     %45, %53
033F   54 52 02    AND     %2, %52
0342   96          *NOP                    <--- Problem
0343   05 53 45    ADD     @%45, %53
0346   54 45 57    AND     %57, %45
0349   02 9D       ADD     R9, R13




Ansonsten ist er zugegeben schon ein Tolles teil.

PS: habe ihn gerade wieder zum laufen bekommen.
Irgend wie sind die Rechte flöten gegangen.
--
42 ist die Antwort auf die "Frage nach dem Leben, dem Universum und dem ganzen Rest"
Aktuelle Projektdokumentationen
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
28.03.2016, 22:03 Uhr
PIC18F2550

Avatar von PIC18F2550

Mein Reassembler spuckte sowas aus.

Quellcode:
08E9 00 E5              DEC         RE5           (06/--)



Was mich verwunderte da im Quellcode R5 und nicht RE5 steht.
Bringt der AS hier was durcheinander?
Das RE5 gibt es im UB8830 nicht.

Quellcode:
(1)  501/     8E9 : 00 E5               CLS1:    dec R5



Sollte nicht sowas hier rauskommen?

Quellcode:
(1)  501/     8E9 : 00 05               CLS1:    dec R5



Aus Ju+Te-Comp 2k neu, mit AS V1.42 Beta [Bld 86] - Quelle U883_2K.asm - Seite 1 - 28.3.2016 12:52:55

Latest build is 1.42Bld98 (2015-05-25)


So sollte es wohl aussehen ?

Quellcode:
(1)  501/     8E9 : 00 05               CLS1:    dec 5h


--
42 ist die Antwort auf die "Frage nach dem Leben, dem Universum und dem ganzen Rest"
Aktuelle Projektdokumentationen

Dieser Beitrag wurde am 28.03.2016 um 22:13 Uhr von PIC18F2550 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
29.03.2016, 14:42 Uhr
PIC18F2550

Avatar von PIC18F2550

Ok hab eine Lösung gefunden.

R0 bis RF für Registeradressierung mit RP
0h bis 7Fh und 0F0h bis 0FFh für Direktadressierung.

Der DEC kann keine Registeradressierung daher macht AS aus der R5 ein 0E5h.

Eigentlich müsste der AS eine Fehlermeldung ausspucken tut er aber nicht.

Was ich auch nicht Verstehe ich bin doch nicht der einzige der den 2k_neu ROM vom Ju-Te PC mit AS übersetzt hat.
Warum ist das bei den anderen nicht aufgefallen?
--
42 ist die Antwort auf die "Frage nach dem Leben, dem Universum und dem ganzen Rest"
Aktuelle Projektdokumentationen

Dieser Beitrag wurde am 29.03.2016 um 14:42 Uhr von PIC18F2550 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
30.03.2016, 09:39 Uhr
PIC18F2550

Avatar von PIC18F2550


Quellcode:

     104/      79 :                     ; Beginn MPBASIC
     105/      79 :                     ; Variablen A..Z liegen in Register 32 ff
     106/      79 :                     ; Datenübergabe Y    R4+R5, X R2+R3
     107/      79 :                    
     108/      79 :                     ;-----------------------------------------------------------------------------
     109/      79 :                     ;
     110/      79 :                     ;-----------------------------------------------------------------------------
     111/      79 :                    
     112/      79 : 28 04               p_let:        ld    R2, reg_04    ; X := Y
     113/      7B : 38 05                       ld    R3, reg_05
     114/      7D : AF                          ret
     115/      7E :                    



So nach dem ändern der Quelltexte und neu erstellen der bin-Datei, macht mein Reassembler, endlich das was er soll.

Eine Erkennung auf unerlaubte Register, werde ich aber noch einbauen müssen.

Die Suche nach solchen Fehlern artet ja in Arbeit aus.
--
42 ist die Antwort auf die "Frage nach dem Leben, dem Universum und dem ganzen Rest"
Aktuelle Projektdokumentationen
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
30.03.2016, 10:07 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

Bitte achte beim AS auf ein korrektes ASSUME (Doku Punkt 4.22). Der AS optimiert hier selbständig. Ich habe deshalb im Assemblercode RP auf einen ungültigen/ungenutzten Wert gesetzt und so die Optimierung umgangen.

"Mit dem ASSUME-Befehl teilt man AS den aktuellen Wert von RP mit. AS
ist dann in der Lage, bei einer Adresse aus dem internen RAM automatisch zu entscheiden, ob dieser Operand mit einer 4-Bit Adresse angesprochen werden kann oder eine 8-Bit-Adresse verwendet werden muss."
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
009
30.03.2016, 11:36 Uhr
PIC18F2550

Avatar von PIC18F2550

Daher ist das deaktivieren schon OK.

Was mich stört ist nicht die Optimierung sondern das aus R4 ein 0E4h wird.
Das Register gibt es nicht.

Quellcode:

     111/      79 : 28 E4               p_let:        ld    R2, R4        ; X := Y
     112/      7B : 38 E5                       ld    R3, R5
     113/      7D : AF                          ret


--
42 ist die Antwort auf die "Frage nach dem Leben, dem Universum und dem ganzen Rest"
Aktuelle Projektdokumentationen
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
010
30.03.2016, 11:45 Uhr
PIC18F2550

Avatar von PIC18F2550

ich habe mal mit:
assume RP:0C0h
und
assume RP:0h
Rumexperimentiert beides das selbe Ergebnis.
--
42 ist die Antwort auf die "Frage nach dem Leben, dem Universum und dem ganzen Rest"
Aktuelle Projektdokumentationen
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
011
30.03.2016, 12:55 Uhr
PIC18F2550

Avatar von PIC18F2550

@volkerp

gibt es einen Speicherabzug vom 8830 zum Vergleichen?
--
42 ist die Antwort auf die "Frage nach dem Leben, dem Universum und dem ganzen Rest"
Aktuelle Projektdokumentationen
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
012
30.03.2016, 13:02 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

E0..EF sind die 4Bit-Register des U881x, als feste 8Bit-Register ansprechbar.

Der Befehl LD R3,R5 ist vom Typ "LD r1, R2 (LD dest,src)" mit R = 8-Bit Addr, r = 4-Bit Addr. Das wird zum OP-Code r8rr. Und rr steht hier mit E5 für das 4-Bit-Register R5, nicht für das 8Bit-Register 05.

LD R3, 5 würde zu 28 05 assembliert werden.

Aus dem Z8-Handbuch UM0016:

"Note: Address modes R or IR can be used to specify a 4-bit Working Register. In this format, the source or destination Working Register operand is specified by adding 1110b (Eh) to the high nibble of the operand. For example, if Working Register R12 (CH) is the destination operand, then ECh will be used as the destination operand in the Op Code."
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)

Dieser Beitrag wurde am 30.03.2016 um 13:15 Uhr von volkerp editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
013
30.03.2016, 13:04 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

U883_MME_BAS.ROM aus dem Download ist das ausgelesene Original. Der AS erzeugt .bin, damit kann man das Ergebnis gut vergleichen.
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
014
30.03.2016, 13:14 Uhr
PIC18F2550

Avatar von PIC18F2550

Also eine 4Bit Mogeladresse?

Im Handbuch steht zu "LD r1, R2 (LD dest,src)" der Aufbau "q8 Z".
Dabei bedeutet Z = 8Bit Wert.

Also währe in dem Fall "q8 Ez" richtig.

Wenn ich mich nicht täusche soll es doch auch Z8 typen geben die alle 256 Register haben?
--
42 ist die Antwort auf die "Frage nach dem Leben, dem Universum und dem ganzen Rest"
Aktuelle Projektdokumentationen
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
015
30.03.2016, 13:15 Uhr
PIC18F2550

Avatar von PIC18F2550

Ok dann ist das ROM also das was ich suche.

Danke VolkerP
--
42 ist die Antwort auf die "Frage nach dem Leben, dem Universum und dem ganzen Rest"
Aktuelle Projektdokumentationen
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
016
30.03.2016, 13:16 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

Es gibt max. 236 Register (beim Z86C40). E0..FC ist sozusagen reserviert.
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)

Dieser Beitrag wurde am 30.03.2016 um 13:17 Uhr von volkerp editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
017
30.03.2016, 13:19 Uhr
PIC18F2550

Avatar von PIC18F2550

Danke das erklärt alles.
Jetzt komme ich weiter.
--
42 ist die Antwort auf die "Frage nach dem Leben, dem Universum und dem ganzen Rest"
Aktuelle Projektdokumentationen
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
018
30.03.2016, 14:23 Uhr
PIC18F2550

Avatar von PIC18F2550

Ich habe mal aus

assume RP:0C0h ; keine Optimierung !

in das

assume RP:0E0h ; keine Optimierung !

geändert.

Die bin-datei unterscheidet danach sich nicht vom der rom-Datei.

Kann ich "assume " so verwenden, oder gibt es da noch andere Probleme.
--
42 ist die Antwort auf die "Frage nach dem Leben, dem Universum und dem ganzen Rest"
Aktuelle Projektdokumentationen
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
019
03.04.2016, 09:20 Uhr
PIC18F2550

Avatar von PIC18F2550

Nach volkerp Erklärung bezüglich des "Working Register" ist der Quellcode jetzt umgestellt.
Es werden diese Befehle jetzt beachtet und richtig ausgegeben.

Beispiel:

Quellcode:

0320 14 12 34           ADC         R34,   R12    (10/--)    
0320 14 E5 67           ADC         R67,   r5     (10/--)    
0320 14 89 EA           ADC         rA,    R89    (10/--)    
0320 14 EB EC           ADC         rC,    rB     (10/--)    


--
42 ist die Antwort auf die "Frage nach dem Leben, dem Universum und dem ganzen Rest"
Aktuelle Projektdokumentationen
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
020
04.04.2016, 22:17 Uhr
PIC18F2550

Avatar von PIC18F2550

So der erste reassemblierte Teil wird ausgegeben.
Alles was nicht als OP-Code erkannt wird wird erst mal unterdrückt.
Einige Dinge bleiben dem System unerkannt.
1. Nicht verwendete Programmeinsprünge von anderen Programmteilen die nicht geladen wurden.
2. Sprungtabellen da der H und L Teil der Adresse nicht als 16Bitwert geladen werden.


Quellcode:

***************************************************************
* Ux883x Reassembler                            (c)PIC18F2550 *
***************************************************************
ADRR B1 B2 B3 B4 MARKE  CODE FLAG   ARG1   ARG2    T1 T2      
0000 08 00              INT0        0800H         (--/--)    
0002 08 03              INT1        0803H         (--/--)    
0004 08 06              INT2        0806H         (--/--)    
0006 08 09              INT3        0809H         (--/--)    
0008 08 0C              INT4        080CH         (--/--)    
000A 08 0F              INT5        080FH         (--/--)    
000C 31 00              SRP         #00h          (06/--)    
000E 3C 0F              LD          r3,    #0F    (06/--)    
0010 FF                 NOP                       (06/--)    
0011 76 E3 04           TM          r3,    #04    (10/--)    
0014 3C FF              LD          r3,    #FF    (06/--)    
0016 EB 05              JR   NZ     001DH         (12/10)    
0018 76 E3 04           TM          r3,    #04    (10/--)    
001B EB 20              JR   NZ     003DH         (12/10)    
001D E6 F8 B6           LD          RF8,   #B6    (10/--)    
0020 E6 F7 08           LD          RF7,   #08    (10/--)    
0023 4C 08              LD          r4,    #08    (06/--)    
0025 5C 12              LD          r5,    #12    (06/--)    
0027 C2 64              LDC         r6,    @rr4   (12/--)    
0029 60 E6              COM         r6            (06/--)    
002B D2 64              LDC         @rr6,  r4     (12/--)    
002D C2 74              LDC         r7,    @rr4   (12/--)    
002F 60 E6              COM         r6            (06/--)    
0031 D2 64              LDC         @rr6,  r4     (12/--)    
0033 B2 67              XOR         r6,    r7     (06/--)    
0035 31 F0              SRP         #F0h          (06/--)    
0037 ED E0 00           JP   NZ     E000H         (12/10)    
003A 8D 08 12           JP          0812H         (12/10)    
003D E6 F8 04           LD          RF8,   #04    (10/--)    
0040 E6 F1 C0           LD          RF1,   #C0    (10/--)    
0043 0C FF              LD          r0,    #FF    (06/--)    
0045 1C FF              LD          r1,    #FF    (06/--)    
0047 CF                 RCF                       (06/--)    
0048 56 E3 DF           AND         r3,    #DF    (10/--)    
004B 46 E3 20           OR          r3,    #20    (10/--)    
004E 10 E1              RLC         r1            (06/--)    
0050 10 E0              RLC         r0            (06/--)    
0052 76 E3 04           TM          r3,    #04    (10/--)    
0055 6B 04              JR   Z      005BH         (12/10)    
0057 7B F5              JR   C      004EH         (12/10)    
0059 8B ED              JR          0048H         (12/10)    
005B E6 F8 7F           LD          RF8,   #7F    (10/--)    
005E 8B FE              JR          005EH         (12/10)    
0060 46 7F 18           OR          R7F,   #18    (10/--)    
0063 E4 7F F8           LD          RF8,   R7F    (10/--)    
0066 56 03 DF           AND         R03,   #DF    (10/--)    
0069 76 03 04           TM          R03,   #04    (10/--)    
006C 6B FB              JR   Z      0069H         (12/10)    
006E 56 7F F7           AND         R7F,   #F7    (10/--)    
0071 46 03 20           OR          R03,   #20    (10/--)    
0074 E4 7F F8           LD          RF8,   R7F    (10/--)    
0077 FF                 NOP                       (06/--)    
0078 BF                 IRET                      (16/--)    



Was noch fehlt sind die Marken und die Ausgabe der Datenbereiche.
--
42 ist die Antwort auf die "Frage nach dem Leben, dem Universum und dem ganzen Rest"
Aktuelle Projektdokumentationen
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek