forum speccy.pl
ZX Spectrum => PROGRAMOWANIE => Wątek zaczęty przez: KWF w 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.
-
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
-
Podziękował ślicznie i "pomagas" poszedł.
-
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)
-
Muszę zapamiętać :)