Hirdetés

Aktív témák

  • N0zer0

    senior tag

    válasz unalmastolgy #25 üzenetére

    Gondolom programozás elméleten kellett a feladatot fejben megoldani és már nem aktuális. Ha megírod asm-ben és debuggerrel ellenőrzöd, akkor mutatni fogja az eredményeket. Fejben:

    Az állapotjelző az állapotregiszterben (flag) lévő adat. Ennek minden bitje valamiről tájékoztat. Egyik a CF (Carry Flag), a másik a PF (Parity Flag), de van még sok bit.

    I.
    Első kérdés: a dword 4 byte-os adatméretet jelent, 8 elemű a tömb, ez 32 byte-nyi adat. A D[28], másképpen D[7*4] a tömb 28. byte-ja, azaz a 4 byte-os 7.elem értékének legalsó byte-ja: 3.

    MOV ( D[28] , EAX ) számomra nem értelmezhető, szintaktikailag hibás.
    Helyette: MOV EAX, D[28]
    EAX értéke 3. Ez alapján AH értéke 0, AL értéke 3.

    II.
    A második kérdés szintaktikusan helyesen:
    MOV EAX, D[28] // EAX értéke mint írtam már 3, ami binárisan 00000000-00000000-00000000-00000011
    SAR EAX, 9 // az adatot jobbra tolja 9 bittel, és bal oldalra a signum bit értéke íródik. Módosított flag-ek: cf, zf, of, pf, sf.

    00000000-00000000-00000000-00000011
    Ezt eltolva jobbra 9 bittel, majd az előjel bit értéke 1.
    Eredmény EAX-ben:
    10000000-00000000-00000000-00000000
    AX az utoló 16 bit:
    00000000-00000000
    Ez decimálisan és hexadecimálisan is 0

    CF értéke 1, mert jobb oldalon 1-es bit esett ki az eltolás folyamán. PF értéke 0, mert az eredmény szélén 0-ás bit lett (páros szám lett az eredémy).

Aktív témák