Erdekes tema ez. Ki lehet talalni Z80 gepi kodra is ujabb assembly szintaxist, attol, hogy egy tranzisztor is valtozna a Z80-ban
Peldaul, ha az ISA szintjen nezzuk, pl egy regiszter-regiszter kozotti adatatvitel nem igazan ugyanaz, mint amikor egy regisztert tarolni kell a memoriaban, vagy eppen onnan beolvasni. 65xx-en ezert asm-ban is tok mas neveket adtak neki (az A-val nezve most), pl LDA (LD A ..) ha memoriabol betolteni kell, STA (ST A, store), de pl TXA (transfer X->A) ha regiszterek kozott kell atvinni. Azt, hogy Z80 asm-ban ez mind "LD", az csak szintaxis kerdese, ettol meg Z80-ra is igaz lehet, hogy a sajat szintjen a "load", a "store" es a "transfer" jellegu utasitasok eleg nagy kulonbseget mutatnak, nyilvan. Vki egyszer poenkodott is vele, hogy 6502 asm-ot kb intel szintaxissal irta le, mov a,2 (LDA #2), mov a, x (TXA), es ilyesmik.
Amugy, az Z80 asm-ban (de intel is ...) mindig is zavart, hogy nincs tiszta jelzese annak, hogy most vmi konstans, vagy memoria, azaz pl:
LD A, valami
LD A, (valami)
Ok, itt a zerojel hivatott jelezni persze a dolgot, amde ott meg kifejezesekkel lehet zavar, ha pl egy nem tul fapados assembler-nel lehet azt is irni, pl:
LD A, (valami + 1) * 2
LD A, (valami + 1 * 2)
Ez most trukkos persze, de mondjuk elirtam hogy hova tegyem a zarojelet. A ketto igen mast jelent, az elsonel a zarojel csak matematikai szereppel bir, a masodiknal viszont nem, hanem az asm szintaxis resze.
En ezert szeretem 6502-nel a # jelet annak jelzesere, hogy konstans, es nem memoria:
LDA #2
LDA 2
Az elso a 2-ot, mint konstanst tolti az A-ba, a masodik a memoriacimet. Persze, biztos van olyan, akinek meg ez nem tetszik
Az mondjuk pedig meg tovabb keveri a dolgot, hogy a # sok pl Z80 assemblerben a hexadecimalis jeloles, de 6502-nel nem, ott erre a $ szokas, azaz az "LDA #$FF" az mint konstanst a hex FF-et tolti be. Ez is megerne egy miset, "$", "#", "12h", "$12", jo eg, mennyi kulonbozo modszer a 16-os szamrendszer jelzesere