okei, vääntäkää joku nyt rautalangasta kun en kuukkelittamallakaan löytänyt. Eli tämän verran ymmärrän: AX,BX,CX,DX... on kokonaisia tavuja, AL on AX:n 4 ekaa bittiä, AH on sen 4 viimeistä bittiä. Entäs sitten esim nämä: CF,ES:BX,SI,DI ym...?
Ensinnäkään nyt ei ole kyse muuttujista vaan rekistereistä. AX, BX, CX ja DX ovat kukin 16 bitin eli kahden tavun kokoisia. AH on AX:n neljä ensimmäistä bittiä (eniten merkitsevät bitit) ja AL on AX:n neljä viimeistä bittiä (vähiten merkitsevät bitit). AH:n ja AL:n koko on 8 bittiä eli 1 tavu. Sama pätee BX-, CX- ja DX-rekistereihin.
ES, SI ja DI ovat osoiterekistereitä. DOSissa muistiosoite muodostuu segmentistä ja siirroksesta. ES on eräs segmenttirekisteri ja siirros voi olla mm. SI- ja DI-rekistereissä. CF kuuluu eri sarjaan edellisten kanssa, sillä se on lippurekisterissä oleva muistilippu. Tarkempi selitys on mahdotonta, hanki jostain kunnollinen assembly-opas. ;)
muuttujia ei ole olemassakaan... on vain muistia ja lisää muistia
.. ja muuttujat vain tapa osoittaa paikkaa muistissa
siis miten qb:ssä voi noita essiä ja ditä käsitellä kun o regtype tai regtypex? muuten selkis...
TYPE RegType
ax AS INTEGER
bx AS INTEGER
cx AS INTEGER
dx AS INTEGER
bp AS INTEGER
si AS INTEGER
di AS INTEGER
flags AS INTEGER
END TYPE
'
' Define the type needed for InterruptX
'
TYPE RegTypeX
ax AS INTEGER
bx AS INTEGER
cx AS INTEGER
dx AS INTEGER
bp AS INTEGER
si AS INTEGER
di AS INTEGER
flags AS INTEGER
ds AS INTEGER
es AS INTEGER
END TYPE
'No eikös tuossa jälkimmäisessä tietotyypissä ole mukana sekä ES että DI?
siis mikä cf. AIjooo oks se toi flags? nii ja toi toinen on joku "vanhempi" eli sitä ei kuulemma qb:n mukaan käytetä hirveesti ja se o ihan erilainen(kai?) :P
RegType säätää perusrekistereitä ja RegTypeX säätää niiden lisäksi segmenttirekistereitä
ja joo CF on FLAGS rekisterin eka bitti
Okei tack. Nyt sujuu, kiitokset.
Eikös Intelillä ole aka tavu vähiten merkitsevä ja seuraavat aina enemmän merkitseviä?
Kyllä, muistissa (little-endian, tavut käänteisessä järjestyksessä). Eli dword 0x12345678 on muistissa tavuina 0x78, 0x56, 0x34, 0x12. Mutta rekistereihin tuo ei tietenkään mitenkään vaikuta.
Aihe on jo aika vanha, joten et voi enää vastata siihen.