Autor Wątek: Deasemblacja - dylemat nowicjusza  (Przeczytany 6869 razy)

KWF

  • *****
  • Wiadomości: 6823
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • "I co ja robię tu, u-u, co Ty tutaj robisz ..."
    • Insta do lasownia
Deasemblacja - dylemat nowicjusza
« dnia: 2018.10.20, 19:54:58 »
Mam dwie linijki kodu maszynowego w liczbach dziesiętnych:
- p0: 175, 237, 79, 253, 233,
- p1: 62, 128, 237, 79, 253, 233,

Przepisałem je sobie w systemie szesnastkowym:
- p0: AF ED 4F FD E9
- p1: 3E 80 ED 4F FD E9

Na moje oko wynika, że:
- p0:
AF     xor a
ED 4F  ld r,a
FD E9  jp (iy)

- p1:
3E 80  ld a,0x80
ED 4F  ld r,a
FD E9  jp (iy)

Jeśli mylę się, proszę poprawcie mnie.
KWF
-----
R Tape loading error 0:1
Moje zabawki: https://github.com/McKlaud76

steev

  • *****
  • Wiadomości: 1362
  • Miejsce pobytu:
    inode 42
Odp: Deasemblacja - dylemat nowicjusza
« Odpowiedź #1 dnia: 2018.10.21, 01:49:15 »
Nie mylisz się :)
;
;  DZ80 V3.3.6 Z80 Disassembly of code.bin
;  10/21/18 1:47
;
        org     0
;
        xor     a               ; 0000  af              /
        ld      r,a             ; 0001  ed 4f           mO
        jp      (iy)            ; 0003  fd e9           }i
;
        ld      a,80h           ; 0005  3e 80           >.
        ld      r,a             ; 0007  ed 4f           mO
        jp      (iy)            ; 0009  fd e9           }i
Machines should work. People should think.

KWF

  • *****
  • Wiadomości: 6823
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • "I co ja robię tu, u-u, co Ty tutaj robisz ..."
    • Insta do lasownia
Odp: Deasemblacja - dylemat nowicjusza
« Odpowiedź #2 dnia: 2018.10.21, 08:46:18 »
Podziękował ślicznie i "pomagas" poszedł.
KWF
-----
R Tape loading error 0:1
Moje zabawki: https://github.com/McKlaud76

dr.df0

  • *
  • Wiadomości: 15
  • Miejsce pobytu:
    Poland
Odp: Deasemblacja - dylemat nowicjusza
« Odpowiedź #3 dnia: 2019.02.20, 23:56:21 »
BTW, jest taka ciekawa biblioteka w Perlu, której użycie po zainstalowaniu może wyglądać tak:

use CPU::Z80::Disassembler;

@opcodes = qw{ 175 237 79 253 233 };

$dis = CPU::Z80::Disassembler->new;
$addr = 0;
for $c (@opcodes) {
    $dis->memory->poke($addr++, $c);
}
$dis->write_dump;

Uruchomienie powyższego kodu daje taki wynik:

$ perl t.pl
0000 AF         xor a
0001 ED4F       ld r,a
0003 FDE9       jp (iy)

steev

  • *****
  • Wiadomości: 1362
  • Miejsce pobytu:
    inode 42
Odp: Deasemblacja - dylemat nowicjusza
« Odpowiedź #4 dnia: 2019.02.21, 01:27:54 »
Muszę zapamiętać :)
Machines should work. People should think.