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.