Apua ohjelmaan...

assembly taitamaton

Mun pitäisi tehdä esimerkkiohjelma seuraavan ohjeen mukaan:

Laadi ARM-prosessorille assembly-kielinen ohjelma, joka lukee rekisterin r0 osoittamasta muistiosoitteesta alkaen kaksi 32-bittistä lukua ja järjestää ne se samoihin muistiosoitteisiin suuruusjärjestykseen siten, että ensimmäisessä muistiosoitteessa on suurempi luvuista. Lopuksi ohjelma asettaa rekisterin r0 arvoksi nollan, mikäli luvut olivat oikeassa järjestyksessä ja ykkösen mikäli lukujen paikkoja piti vaihtaa.


Ikinä en ole ohjelmoinut assenblyllä, joten pystyisikö joku ystävällinen sielu auttamaan tämän kanssa niin pääsisin alkuun?

5

1743

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • dgsdfg

      Ehkä tästä on apua

      ; offsetit
      LUKU1 = 0
      LUKU2 = 4

      ; siirrä registeriin r1 luku1
      r1

    • Jaaaaaaaaaaarm

      En kyllä mene takamaan toimivuutta, vaikka kääntyykin gnuarm:lla.

      --- ESIMERKKI ALKAA ---

               .data
               .text
            
         _start: .global _start
               .global main      
               b   main

         #
         # Luvut jotka järjestetään
         #

         luvut:   .word   12, 14

         #
         # Pää ohjelma joka kiertää silmukkaa kutsuen järjestä alirutiinia
         #

         main:   
               ldr   r0, =luvut
               bl   jarjesta
               b   main

         #
         # Järjestä alirutiini
         #
            
         jarjesta:
               stmia   sp, {r1, r2}
               ldr   r1, [r0]
               ldr   r2, [r0, #4]
               cmp   r1, r2
               bhi   oikea      
               str   r1, [r0, #4]
               str   r2, [r0]
               mov      r0, #1
               b   loppu
         oikea:
               mov   r0, #0
         loppu:
               ldmia   sp, {r1, r2}
               mov   pc, lr

         .end

      --- ESIMERKKI LOPPUU ---

      • sdsfkishjsl

        Pari bugi fixia ja vahan optimointia

        jarjesta:
        stmia sp!,{r1,r2,lr}
        ldmia r0,{r1-r2}
        cmp r1,r2
        movls r0,#0
        ldmlsia sp!,{r1,r2,pc}
        str r1,[r0,#4]
        str r2,[r0]
        mov r0,#1
        ldmia sp!,{r1,r2,pc)

        Eli tuon sp:n jalkeen on oltava !.


      • Jaaaaaaaaaaarm
        sdsfkishjsl kirjoitti:

        Pari bugi fixia ja vahan optimointia

        jarjesta:
        stmia sp!,{r1,r2,lr}
        ldmia r0,{r1-r2}
        cmp r1,r2
        movls r0,#0
        ldmlsia sp!,{r1,r2,pc}
        str r1,[r0,#4]
        str r2,[r0]
        mov r0,#1
        ldmia sp!,{r1,r2,pc)

        Eli tuon sp:n jalkeen on oltava !.

        En tosiaan ole ARM:ia varsinaisesta kokeillut kuin kerran harrastus mielestä, noin vuosi sitten.


    • PerttiTT

      ARMI käskykanta on vähän erilainen ja monipuolisempi kuin 'normaali' assembly.

      käskyn malli yleensä:

      KÄSKYehtoSetliput kohdeRek , 1lähdeRek, 2lähdeRek, käsky2lähdeRek:lle käskynparametri !tallennetaanko2lähdeRek

      Esim.
      LDR r6, [r4] ;lataa muistista ==( r6 = *r4;)
      LDR r4, [r0 , r2 , LSL #2] ;== ( r4 = *(r0 (r2

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

    Luetuimmat keskustelut

    1. 184
      1981
    2. Hei A, osaatko

      sanoa, miksi olet ihan yhtäkkiä ilmestynyt kaveriehdotuksiini Facebookissa? Mitähän kaikkea Facebook tietää mitä minä en
      Ikävä
      52
      1888
    3. Synnittömänä syntyminen

      Helluntailaisperäisillä lahkoilla on Raamatunvastainen harhausko että ihminen syntyy synnittömänä.
      Helluntailaisuus
      135
      1578
    4. Euroviisut fiasko, Suomen kautta aikain typerin esitys, jumbosija odottaa. Olisi pitänyt boikotoida!

      Tämän vuoden euroviisut on monella tapaa täydellinen fiasko. Ensinnäkin kaikkien itseään kunnioittavien eurooppalaisten
      Maailman menoa
      143
      1458
    5. Mitä tämä tarkoittaa,

      että näkyy vain viimevuotisia? Kirjoitin muutama tunti sitten viestin, onko se häipynyt avaruuteen?
      Ikävä
      41
      1324
    6. Nukkumisiin sitten

      Käsittelen asiaa tavallani ja toiveissa on vielä että tästä pääsee hyppäämään ylitse. Kaikenlaisia tunteita on läpikäyny
      Ikävä
      4
      1194
    7. Muistatko komeroinnin?

      Taannoin joskus kirjoitin aloituksen tänne komeroinnista eli hikikomoreista; syrjäytyneistä nuorista ihmisistä. Ehkä asu
      Suhteet
      48
      1175
    8. Naisten tyypilliset...

      Naiset ei varmaan ymmärrä itse miten karmealle heidän tavara haisee. Miehet säälistä nuolevat joskus, yleensä humalassa
      Ikävä
      10
      1153
    9. Syö kohtuudella niin et liho.

      Syömällä aina kohtuudella voi jopa laihtua.On paljon laihoja jotka ei harrasta yhtään liikuntaa. Laihuuden salaisuus on
      Laihdutus
      10
      1119
    10. Tuollainen kommentti sitten purjehduspalstalla

      "Naisen pillu se vasta Bermudan kolmio on. Sinne kun lähdet soutelemaan niin kohta katoaa sekä elämänilo että rahat"
      Suhteet
      3
      1118
    Aihe