assembleria..

avuton

Auttakaa avutonta assemblerkoodaajaa..Miten saan tehtyä ohjelman joka ottaa rekisteristä ER3 pareittain vierekkäiset bitit ja tekee niiden AND-funktion ja laittaa saadut 16bittiä R3-rekisteriin...? :/

8

595

Äänestä

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • adaga

      Siis no en ole tuolle vermeelle (H8) assembly vetänyt mutta tässä on x86 ratkaisu:

      cx=data res cl

      mov ax,cx
      mov bx,cx
      and ax,0x5555
      and bx,0xaaaa
      rol ah,1
      and al,ah

      ror bl,1
      and bl,bh

      and al,bl
      mov cl,al

      eli selitys

      cx=x0,y0,x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6,x7,y7

      josta siirron ja and kautta

      ax=00,y0,00,y1,00,y2,00,y3,00,y4,00,y5,00,y6,00,y7
      bx=x0,00,x1,00,x2,00,x3,00,x4,00,x5,00,x6,00,x7,00

      josta rotaten ja and:n kautta

      al=y0,y4,y1,y5,y2,y6,y3,y7
      bl=x0,x4,x1,x5,x2,x6,x3,x7

      jonka jälkeen al AND bl on tulos joka sijoitetaan cl:ään. Toivottasti selvisi perusajatus. Bittien järjestys vaihtuu mutta se nyt vaan on tässä tapauksessa niin.

      • Punikki & 7 hyypiötä

      • Sinivuokko
        Punikki & 7 hyypiötä kirjoitti:

        vaikka mitä arvoja antaisi? kopsin koodin suoraan...

        oma versio:
        http://www.jippii.fi/jsp/forum/thread.jsp?b=tietokone&t=17461

        Adagan idea on hyvä ja palvelee sellaisenaan tarkoitustaan. Vain toteutus hieman ontuu.

        Lopputulos on todellakin aina nolla, koska maskaus on mennyt väärin. Esimerkiksi tilanne, jossa ax-rekisterin kaikki bitit ovat ykkösiä (ax=0xFFFF):
        ..
        and ax,0x5555 ;ax=0x5555
        ..
        rol ah,1 ;ax=0xAA55
        and al,ah ;al=0x00

        Esimerkissä oli myös puolet liikaa rivejä ;-)

        In: ax
        Out: al

        mov dx,ax
        add ax,ax
        and ax,dx
        and ax,0xAAAA
        shr al,1
        or al,ah

        Erona versioosi (http://www.jippii.fi/...), maskaus ja 'and' kannattaa tehdä kuten edellä on esitetty, ei loopissa. Looppi aiheuttaa väistämättä ylimääräistä työtä ja ajanhukkaa, mitä tottakai yritämme välttää silloin harvoin kun assyyn turvaudumme.

        Adagan ideassa kuten yo. versiossakin lopputuloksen bitit ovat vaihtaneet paikkaa ikävästi. Tämän korjaaminen, jos se on tarpeen, onkin jo helpommin tehtävissä esim. loopilla tai jos nopeus on tilankäyttöä tärkeämpää, vaikkapa xlat-käskyllä.

        Tarve juuri tällaiselle maskaukselle voi tulla vastaan esim. jonkin raudan i/o-porttiin liittyen. Jos kyseessä olisi puhdas softaratkaisu, bittien koodausta kannattaisi miettiä uudelleen.


      • adaga
        Sinivuokko kirjoitti:

        Adagan idea on hyvä ja palvelee sellaisenaan tarkoitustaan. Vain toteutus hieman ontuu.

        Lopputulos on todellakin aina nolla, koska maskaus on mennyt väärin. Esimerkiksi tilanne, jossa ax-rekisterin kaikki bitit ovat ykkösiä (ax=0xFFFF):
        ..
        and ax,0x5555 ;ax=0x5555
        ..
        rol ah,1 ;ax=0xAA55
        and al,ah ;al=0x00

        Esimerkissä oli myös puolet liikaa rivejä ;-)

        In: ax
        Out: al

        mov dx,ax
        add ax,ax
        and ax,dx
        and ax,0xAAAA
        shr al,1
        or al,ah

        Erona versioosi (http://www.jippii.fi/...), maskaus ja 'and' kannattaa tehdä kuten edellä on esitetty, ei loopissa. Looppi aiheuttaa väistämättä ylimääräistä työtä ja ajanhukkaa, mitä tottakai yritämme välttää silloin harvoin kun assyyn turvaudumme.

        Adagan ideassa kuten yo. versiossakin lopputuloksen bitit ovat vaihtaneet paikkaa ikävästi. Tämän korjaaminen, jos se on tarpeen, onkin jo helpommin tehtävissä esim. loopilla tai jos nopeus on tilankäyttöä tärkeämpää, vaikkapa xlat-käskyllä.

        Tarve juuri tällaiselle maskaukselle voi tulla vastaan esim. jonkin raudan i/o-porttiin liittyen. Jos kyseessä olisi puhdas softaratkaisu, bittien koodausta kannattaisi miettiä uudelleen.

        and al,ah
        and bl,bh

        pitäisi olla

        or al,ah
        or bl,bh


      • adaga
        Punikki & 7 hyypiötä kirjoitti:

        vaikka mitä arvoja antaisi? kopsin koodin suoraan...

        oma versio:
        http://www.jippii.fi/jsp/forum/thread.jsp?b=tietokone&t=17461

        Ei ollut ajatus antaa kysyjälle valmista koodia suoraan. Eikä tuo olisi toiminutkaan kun käskykanta kysyjällä on eri. Ajatus oli lähinnä näyttää yksi lähestymistapa ongelman ratkaisuun.


      • Punikki & 7 hyypiötä
        adaga kirjoitti:

        Ei ollut ajatus antaa kysyjälle valmista koodia suoraan. Eikä tuo olisi toiminutkaan kun käskykanta kysyjällä on eri. Ajatus oli lähinnä näyttää yksi lähestymistapa ongelman ratkaisuun.

        Juu, mielenkiinnosta kokeilin sun versiota, omassa kun on (turhaan) silmukka kun fiksumminkin asian voi hoitaa.


      • hiha
        Punikki & 7 hyypiötä kirjoitti:

        Juu, mielenkiinnosta kokeilin sun versiota, omassa kun on (turhaan) silmukka kun fiksumminkin asian voi hoitaa.

        Hienoa nähdä että assemlerkoodareitakin on hengissä ja hengailemassa tälläkin palstalla. Itellä viimenen soodaus assemblerilla joskus -90.


      • Punikki & 7 hyypiötä
        hiha kirjoitti:

        Hienoa nähdä että assemlerkoodareitakin on hengissä ja hengailemassa tälläkin palstalla. Itellä viimenen soodaus assemblerilla joskus -90.

        Aika hintsusti tulee nykyisin assya käytettyä. Joskus on ihan vähän "verestää" ;)


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Putin hoiti Suomen natoon ja myös Ruotsin

      Iso kiitos Vladimir Putinille. Hänen ansiosta pääsemme nyt Natoon. Putin halusi Naton lähelle ja nyt sai. Voimme tästä kiittää vain Putinia.
      Maailman menoa
      650
      7987
    2. Niinistö teki hetkessä Suomesta Venäjän ydinaseiden maalitaulun

      Kaiken lisäksi mies vielä lällätteli Putinille eilisessä tiedotustilaisuudessa ja käski katsomaan itseään peiliin. Kyllä vähän asiallisempaa käytöstä
      Maailman menoa
      466
      2270
    3. Voi Stefu ja sun kiivas luonteesi

      Sielä lentelee ullakkohuoneiston ikkunasta daamin vaatteet ja matkalaukut pitkin pihaa. Toisaalta,en ihmettele yhtään että tämä suhde päättyi näin,kyl
      Kotimaiset julkkisjuorut
      233
      2186
    4. Poliisi otti Stefun kiinni!

      Seiska tietää kertoa.
      Kotimaiset julkkisjuorut
      147
      1759
    5. Ohhoh! Martina Aitolehti ja seurapiirihurmuri-Jesper ekassa yhteiskuvassa - Sutinaa Mallorcalla!

      Martina Aitolehti ja seurapiirijulkkis-Jesper nauttivat toisistaan varsin vauhdikkaissa merkeissä Mallorcalla. Aitolehti ei ole esitellyt rakastaan vi
      Kotimaiset julkkisjuorut
      25
      1250
    6. Veikkaus: Miten The Rasmus pärjää Euroviisuissa?

      Euroviisuhuuma on ylimmillään, kun Suomi ja The Rasmus taistelee biisillään Jezebel. Bändi on tikissä, kunhan Lauri Ylösen ääni kantaa. Mitä veikka
      Viihde ja kulttuuri
      51
      1236
    7. Stefanilta tuli taas karu totuus Sofiasta

      Marokkolainen h*o*ra! Voi tsiisus kun mulla on hauskaa! Lumput lentää ikkunasta kun Stefu raivoaa h*uralleen🤣🤣🤣 Nyt ne popparit tulille, tästä tule
      Kotimaiset julkkisjuorut
      110
      1153
    8. Ootko onnellinen kun ei tarvitse

      nähdä tätä tyhmää naamaa enää koskaan? Multa se särkee sydämen, mutta minkäs teen. Vaikka olisi kuinka sinnikäs eikä hellittäisi, se ei aina auta.
      Ikävä
      65
      843
    9. Steppuli veressä

      Seiskan lööpissä Steppulilla naama ja nyrkit veressä. Ei tainnut ihan kamojen pihalle paiskominen riittää. Onkohan pistänyt kämpän tuusannuuskaks.
      Kotimaiset julkkisjuorut
      58
      798
    10. Oletko nähnyt eroottiset kohuleffat? Fifty Shades Of Grey -trilogia tv:stä

      Fifty Shades -trilogia starttaa, kun nuori opiskelijanainen Anastasia tapaa rikkaan liikemiehen. Seksisuhdehan siitä starttaa, höystettynä sadistisill
      Suhteet
      7
      747
    Aihe