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

1830

    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. Onko kaivattusi ulkonäkö

      tarpeeksi miellyttävä? 🥕
      Ikävä
      88
      1541
    2. Toivotko koskaan mies...

      Että nähtäis ja aloitettais alusta, puhtaalta pöydältä tutustuminen. Olit oikeassa ei me kunnolla tunnettu. Olin hölmö.
      Ikävä
      114
      1420
    3. Satuolennoista tarinointi ei kuulu peruskoulun tehtäviin

      Opetustunteja on muutenkin käytössä vain rajallinen määrä. Eli nämä satuhommat koulun ulkopuolelle vapaaehtoisiin harras
      Maailman menoa
      70
      1285
    4. Svty paska työpaikka

      Elekää kukaan hakeku sinne töihin.
      Suomussalmi
      30
      1161
    5. Kyllä näin 45 vuotiaana miehenä pitää sanoo, että 40-50v naiset näyttää vanhoilta

      Niin väsynyttä, silmäryppyä, harmaata hiusta jne jne
      Ikävä
      117
      1000
    6. Lahkokasteen ja kristillisen kasteen erot

      Raamatun mukaan Kristillisessä yhdessä kasteessa Jumala pesee ja puhdistaa ihmisen sydämen ja poistaa perisynnin kirouks
      Kaste
      422
      981
    7. Olisin valmis salaisiin tapaamisiin

      Juuri sinun kanssasi mies. Olet saanut minun pääni pyörälle ja ajatukseni pyörimään ympärilläsi. Hittoon velvollisuudet
      Intohimo
      46
      928
    8. Onko viisikko aktivoitunut

      Taas ruumis !! Viisikko ryskää kukaan ei pärjää
      Seinäjoki
      19
      892
    9. Olisit voinut olla...

      ....ihan tavallinen ihminen, terve mieleltään ja kropaltaan, hyvä seuraihminen ja luotettava kumppani. Mutta ei, olit n
      Ikävä
      66
      808
    10. Olet ihana mies

      Mun söpöliini 🙊😘
      Ikävä
      46
      743
    Aihe