Gå til innhold

Assembly: [Løst] Hjelp til Assembly oppgave (prøveeksamen)


Anbefalte innlegg

Hei! Jeg ble trukket opp til prøveeksamen i mikrokontroller og fikk som oppgave å programmere et trafikklys for så å koble det over på et Bread Board/ Project Board. Har skrevet ferdig koden og montert opp selve trafikklyset (med leds og motstander etc), og alt fungerer fint.

 

På selve prøveeksamen skal jeg derimot forklare hva de forskjellige kommandoene gjør, og hvorfor jeg har brukt dem. Sliter litt med å forklare denne her (i og med at jeg kopierte den fra nettet);

 

Loop:
  movlw d'130'        ;1 x 254 x 10 = 2540
  movwf Delay         ;1 x 254 x 10 = 2540
  decfsz Delay,f      ;1 x 130 x 254 x 10 = 330200
  GOTO $-1            ;2 x 130 x 254 x 10 = 660400
  decfsz Delay1,f     ;1 x 254 x 10 = 2540
  goto Loop           ;2 x 254 x 10 = 5080
  decfsz Delay2,f     ;1 x 10
  goto Loop           ;2 x 10
  movlw d'10'
  movwf Delay2
  return

Kan noen fortelle kort om hva movlw, movwf og decfsz gjør? Det er en 1 sekunds loop btw.

Lenke til kommentar
Videoannonse
Annonse

 

 

To change register at once we use two command :

 

MOVLW b'00001111'

MOVWF PORTB

 

This will move binary 00001111 to PORTB register. In assembly, we cannot put a number to a register directly. To do this we use accumulator(W) register. MOVLW means "move literal to accumulator". The literal is the constant comes after command (here b'00001111'). And, MOVWF means "move accumulator to register". The name of register comes after command (here PORTB).

 

 

decfsz: http://stackoverflow.com/a/4976575

 

 

 

  • Liker 1
Lenke til kommentar

Har ikke vært borti denne varianten av assembly, men antar at det vil hjelpe andre brukere om du kunne opplyse om hvolken assembly variant dette er.

 

Vet ikke annet en at det er Assembly som du bruker til å programmere mikrokontrollere med :/.

 

Dette må være en dårlig vits. Du skal opp på prøveeksam i mikrokontroller, og du vet ikke en gang hvilke type assembly du har kopiert uforstående fra nettet?

 

Jeg jobber med mikrokontroller til daglig, og det er et stort mangel på kvalifiserte ingeniører i bransjen i Norge. Jeg hjelper gjerne studenter med virkelige problemer, med å gi tips og pekepinner. Men i dette tilfellet er tipsen min at du enten få ut fingeren og faktisk studere faget ditt, ellers bytte du faget og slutte å kaste vekk universitetets sine tid og penger.

Lenke til kommentar

Har ikke vært borti denne varianten av assembly, men antar at det vil hjelpe andre brukere om du kunne opplyse om hvolken assembly variant dette er.

 

Vet ikke annet en at det er Assembly som du bruker til å programmere mikrokontrollere med :/.

 

Dette må være en dårlig vits. Du skal opp på prøveeksam i mikrokontroller, og du vet ikke en gang hvilke type assembly du har kopiert uforstående fra nettet?

 

Jeg jobber med mikrokontroller til daglig, og det er et stort mangel på kvalifiserte ingeniører i bransjen i Norge. Jeg hjelper gjerne studenter med virkelige problemer, med å gi tips og pekepinner. Men i dette tilfellet er tipsen min at du enten få ut fingeren og faktisk studere faget ditt, ellers bytte du faget og slutte å kaste vekk universitetets sine tid og penger.

 

For det første; vi har ingen lærerbøker som omhandler temaet assembly, og vi har heller ikke fått tilgang til noen form for nettsider om det. Læreren vår har heller ikke definert hva slags assembly kode det er snakk om.

 

Og hvor har du det fra at jeg går på universitetet? Jeg går VG2 DataEl, og har ingen planer om å jobbe med det her i fremtiden.

  • Liker 1
Lenke til kommentar

Har ikke vært borti denne varianten av assembly, men antar at det vil hjelpe andre brukere om du kunne opplyse om hvolken assembly variant dette er.

 

Vet ikke annet en at det er Assembly som du bruker til å programmere mikrokontrollere med :/.

 

Dette må være en dårlig vits. Du skal opp på prøveeksam i mikrokontroller, og du vet ikke en gang hvilke type assembly du har kopiert uforstående fra nettet?

 

Jeg jobber med mikrokontroller til daglig, og det er et stort mangel på kvalifiserte ingeniører i bransjen i Norge. Jeg hjelper gjerne studenter med virkelige problemer, med å gi tips og pekepinner. Men i dette tilfellet er tipsen min at du enten få ut fingeren og faktisk studere faget ditt, ellers bytte du faget og slutte å kaste vekk universitetets sine tid og penger.

 

For det første; vi har ingen lærerbøker som omhandler temaet assembly, og vi har heller ikke fått tilgang til noen form for nettsider om det. Læreren vår har heller ikke definert hva slags assembly kode det er snakk om.

 

Og hvor har du det fra at jeg går på universitetet? Jeg går VG2 DataEl, og har ingen planer om å jobbe med det her i fremtiden.

 

Hvis du har fått en eksamoppgave på et emne der du har hatt ingen opplæring, ingen bøker, ingen tilgang til nettsider, og ingen andre informasjon er det kun to forklaring - enten er læreren din udugelig, ellers har du ikke følgt med på noe. Uansett kan ingen hjelpe deg ved å forklare om denne koden.

 

Og det spiller ingen rolle om du er på skolen eller på universitet. Det er <i>du</i> som har ansvar for din utdanning, og din framtid. Det er noe alvorlig galt når du skal ta en eksam og du tar utgangspunkt i kopiering fra nettet på noe du ikke har peiling på.

Lenke til kommentar

Har ikke vært borti denne varianten av assembly, men antar at det vil hjelpe andre brukere om du kunne opplyse om hvolken assembly variant dette er.

 

Vet ikke annet en at det er Assembly som du bruker til å programmere mikrokontrollere med :/.

 

Dette må være en dårlig vits. Du skal opp på prøveeksam i mikrokontroller, og du vet ikke en gang hvilke type assembly du har kopiert uforstående fra nettet?

 

Jeg jobber med mikrokontroller til daglig, og det er et stort mangel på kvalifiserte ingeniører i bransjen i Norge. Jeg hjelper gjerne studenter med virkelige problemer, med å gi tips og pekepinner. Men i dette tilfellet er tipsen min at du enten få ut fingeren og faktisk studere faget ditt, ellers bytte du faget og slutte å kaste vekk universitetets sine tid og penger.

 

For det første; vi har ingen lærerbøker som omhandler temaet assembly, og vi har heller ikke fått tilgang til noen form for nettsider om det. Læreren vår har heller ikke definert hva slags assembly kode det er snakk om.

 

Og hvor har du det fra at jeg går på universitetet? Jeg går VG2 DataEl, og har ingen planer om å jobbe med det her i fremtiden.

 

Hvis du har fått en eksamoppgave på et emne der du har hatt ingen opplæring, ingen bøker, ingen tilgang til nettsider, og ingen andre informasjon er det kun to forklaring - enten er læreren din udugelig, ellers har du ikke følgt med på noe. Uansett kan ingen hjelpe deg ved å forklare om denne koden.

 

Og det spiller ingen rolle om du er på skolen eller på universitet. Det er <i>du</i> som har ansvar for din utdanning, og din framtid. Det er noe alvorlig galt når du skal ta en eksam og du tar utgangspunkt i kopiering fra nettet på noe du ikke har peiling på.

 

Det er bare snakk om 'loop'-koden som jeg har kopiert. Resten har jeg skrevet selv og jeg forstår det fullt ut. Læreren har ikke snakket om disse tre kommandoene som jeg nevner her, og det er derfor jeg kommer hit for å spørre om hjelp. Er du villig til å svare på spørsmålet mitt nå?

 

Uansett, takk til dere som postet linker etc. Skal ta en titt på dem senere.

Lenke til kommentar

Det er bare snakk om 'loop'-koden som jeg har kopiert. Resten har jeg skrevet selv og jeg forstår det fullt ut. Læreren har ikke snakket om disse tre kommandoene som jeg nevner her, og det er derfor jeg kommer hit for å spørre om hjelp. Er du villig til å svare på spørsmålet mitt nå?

 

Uansett, takk til dere som postet linker etc. Skal ta en titt på dem senere.

 

Har du skrevet resten av koden i C? Eller var det til en annen mikrokontroller? Fordi du kan ikke ha skrevet noe som helst i assembly på en PIC uten at du forstår "movlw" og "movwf", og man kommer ikke så veldig langt uten "decfsz".

 

Kokker det hele ned til at du har skrevet et program i C for en ikke-nevnt mikrokontroller, men du viste ikke hvordan du skulle få en 1-sekund pause, og har dermed kopiert tilfeldig assembly kode til en tilfeldig mikrokontroller fra en tilfeldig webside?

Lenke til kommentar

Det er bare snakk om 'loop'-koden som jeg har kopiert. Resten har jeg skrevet selv og jeg forstår det fullt ut. Læreren har ikke snakket om disse tre kommandoene som jeg nevner her, og det er derfor jeg kommer hit for å spørre om hjelp. Er du villig til å svare på spørsmålet mitt nå?

 

Uansett, takk til dere som postet linker etc. Skal ta en titt på dem senere.

 

Har du skrevet resten av koden i C? Eller var det til en annen mikrokontroller? Fordi du kan ikke ha skrevet noe som helst i assembly på en PIC uten at du forstår "movlw" og "movwf", og man kommer ikke så veldig langt uten "decfsz".

 

Kokker det hele ned til at du har skrevet et program i C for en ikke-nevnt mikrokontroller, men du viste ikke hvordan du skulle få en 1-sekund pause, og har dermed kopiert tilfeldig assembly kode til en tilfeldig mikrokontroller fra en tilfeldig webside?

Det spiller da ingen rolle, jeg vil bare ha movlw, movwf og decfsz forklart inn med teskje. Koden min består mye av bsf, bcf, crlf, call, goto osv.

Endret av joalim
Lenke til kommentar

Det er bare snakk om 'loop'-koden som jeg har kopiert. Resten har jeg skrevet selv og jeg forstår det fullt ut. Læreren har ikke snakket om disse tre kommandoene som jeg nevner her, og det er derfor jeg kommer hit for å spørre om hjelp. Er du villig til å svare på spørsmålet mitt nå?

 

Uansett, takk til dere som postet linker etc. Skal ta en titt på dem senere.

 

Har du skrevet resten av koden i C? Eller var det til en annen mikrokontroller? Fordi du kan ikke ha skrevet noe som helst i assembly på en PIC uten at du forstår "movlw" og "movwf", og man kommer ikke så veldig langt uten "decfsz".

 

Kokker det hele ned til at du har skrevet et program i C for en ikke-nevnt mikrokontroller, men du viste ikke hvordan du skulle få en 1-sekund pause, og har dermed kopiert tilfeldig assembly kode til en tilfeldig mikrokontroller fra en tilfeldig webside?

Det spiller da ingen rolle, jeg vil bare ha movlw, movwf og decfsz forklart inn med teskje. Koden min består mye av bsf, bcf, crlf, call, goto osv.

 

Nei, det godtar jeg ikke. Selv om det er 15 år siden jeg programmert i PIC assembly, og har muligens glemt et par detaljer, kan jeg ikke uten videre akseptere påstand at du har skrevet selv et enkelt trafikklys program i PIC assembly uten å ha forstått "movlw" og "movwf". Jeg kan forstå at det er mulig å skrive et slikt program der det kun er i pause funksjonen at man bruke disse instruksjoner - men du kan ikke ha lest om og lært om måten PIC cpu'en fungere for å skrive programmet selv uten at du også har vært bort i "movlw" og "movwf".

 

Du har selv sagt at du ikke har lærebøker eller nettsider som omtale assembly, og at du ikke en gang vet hvilke type assembly det er snakk om. Man skriver ikke assembly kode uten å vite hva slags assembly det er.

 

Konklusjonen må da være at du ikke har skrevet noen ting av programmet, og har bare kopierte den.

Lenke til kommentar

Huff, jeg fatter ikke hvorfor du skal slå deg vrang og bry deg om hvordan jeg har skrevet koden. Selv om du sikkert er bitter over manglende ingeniører med kunnskap, så trenger du ikke bekymre deg for at jeg fyller de rekkene enda mer. Jeg er bare ute etter et svar, og forventer ikke at folk skal blande seg inn om jeg kan pensumet eller ikke. Det er mitt problem, og derfor har du ingenting med det å gjøre.

 

Takk for at du brukte tiden på å kverulere istedenfor å komme med ett anstending svar.

 

end

  • Liker 1
Lenke til kommentar

Huff, jeg fatter ikke hvorfor du skal slå deg vrang og bry deg om hvordan jeg har skrevet koden. Selv om du sikkert er bitter over manglende ingeniører med kunnskap, så trenger du ikke bekymre deg for at jeg fyller de rekkene enda mer. Jeg er bare ute etter et svar, og forventer ikke at folk skal blande seg inn om jeg kan pensumet eller ikke. Det er mitt problem, og derfor har du ingenting med det å gjøre.

 

Takk for at du brukte tiden på å kverulere istedenfor å komme med ett anstending svar.

 

end

 

Det er et problem for hele samfunnet om studenter jukser - selv om du ikke kommer til å bruke dette faget profesjonelt. Du er jo bare et barn - du tror sikkert at det ikke betyr noe, og til og med at du kan lure folk med kopi-og-lim hjemmelekser. Jeg håper bare at du våkner opp til realitet før du skaper problemer for deg selv og andre.

Lenke til kommentar

Huff, jeg fatter ikke hvorfor du skal slå deg vrang og bry deg om hvordan jeg har skrevet koden. Selv om du sikkert er bitter over manglende ingeniører med kunnskap, så trenger du ikke bekymre deg for at jeg fyller de rekkene enda mer. Jeg er bare ute etter et svar, og forventer ikke at folk skal blande seg inn om jeg kan pensumet eller ikke. Det er mitt problem, og derfor har du ingenting med det å gjøre.

 

Takk for at du brukte tiden på å kverulere istedenfor å komme med ett anstending svar.

 

end

 

Det er et problem for hele samfunnet om studenter jukser - selv om du ikke kommer til å bruke dette faget profesjonelt. Du er jo bare et barn - du tror sikkert at det ikke betyr noe, og til og med at du kan lure folk med kopi-og-lim hjemmelekser. Jeg håper bare at du våkner opp til realitet før du skaper problemer for deg selv og andre.

 

Hvor mange ganger må jeg si det; det er bare 'loop'-koden som jeg har kopiert. Det er 12 av 135 linjer, og kan da umulig kvalifiseres som juks nå som jeg i tillegg bruker tiden på å lære den? Politikk kan du diskutere om i dets respektive forum, jeg er ikke interessert i å høre om hva du mener, selv om jeg ser poenget ditt. Alt jeg ønsket da jeg åpnet denne tråden var å lære noe.

 

Til dere som ønsker å hjelpe; har skjønt movlw og movwf nå (takk for link, +1), så da er det bare decfsz igjen (skal ta en titt på linken, Thomas). Hele koden er i tillegg omskrevet med hjelp fra lærer (movlw er mye nyttigere en bsf og bcf i og med at jeg kan definere flere utganger samtidig istedenfor en og en, og koden ble nesten fire ganger så kort). :p

 

Hele koden for dem som er interessert:

 

#include <P16F690.inc>
__config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF &_BOD_OFF & _IESO_OFF & _FCMEN_OFF)

cblock 0x20
   Delay
   Delay1
   Delay2
endc

org 0

Start:
   BSF STATUS,RP0
   MOVLW b'00001000'               ;Setter knappen som input (RA3), og resten som output (RA0, RA1, RA2, RA4 og RA5).
   MOVWF TRISA
   BCF PORTC,0
   BCF STATUS,RP0

Fase1:
   MOVLW b'00010001'               ;Rødt lys fotjenger, grønt lys bil. Holdes til knappen trykkes
   MOVWF PORTA

Knapp:
   BTFSC PORTA,3                   ;Knappen sjekker om den er trykket. Hvis ja, går den til Fase2. Hvis nei, går den tilbake.
   GOTO $-1

   Call Tosek

Fase2:
   MOVLW b'00010010'               ;Rødt lys fotjenger, gult lys bil.
   MOVWF PORTA

   Call Tresek

Fase3:
   MOVLW b'00010100'               ;Rødt lys fotjenger, rødt lys bil.
   MOVWF PORTA

   Call Tosek

Fase4:
   MOVLW b'00100100'               ;Grønt lys fotjenger, rødt lys bil.
   MOVWF PORTA

   Call Nisek

Fase5:
   MOVLW b'00100100'               ;Grønt lys blink fotjenger, rødt lys bil.
   MOVWF PORTA
   BSF PORTC,0
   Call Blink
   MOVLW b'00000100'
   MOVWF PORTA
   BCF PORTC,0
   Call Blink
   MOVLW b'00100100'
   MOVWF PORTA
   BSF PORTC,0
   Call Blink
   MOVLW b'00000100'
   MOVWF PORTA
   BCF PORTC,0
   Call Blink
   MOVLW b'00100100'
   MOVWF PORTA
   BSF PORTC,0
   Call Blink
   MOVLW b'00000100'
   MOVWF PORTA
   BCF PORTC,0
   Call Blink
   MOVLW b'00100100'
   MOVWF PORTA
   BSF PORTC,0
   Call Blink
   MOVLW b'00000100'
   MOVWF PORTA
   BCF PORTC,0
   Call Blink
   MOVLW b'00100100'
   MOVWF PORTA
   BSF PORTC,0
   Call Blink
   MOVLW b'00000100'
   MOVWF PORTA
   BCF PORTC,0
   Call Blink

Fase6:
   MOVLW b'00010100'               ;Rødt lys fotjenger, rødt lys bil.
   MOVWF PORTA

   Call Tresek

Fase7:
   MOVLW b'00010110'               ;Rødt lys fotjenger, gult og rødt lys bil.
   MOVWF PORTA

   Call Tosek

   CLRF PORTA
   GOTO Fase1

Tosek:
   MOVLW d'20'
   MOVWF Delay2
   GOTO Loop

Tresek:
   MOVLW d'30'
   MOVWF Delay2
   GOTO Loop

Nisek:
   MOVLW d'90'
   MOVWF Delay2
   GOTO Loop

Blink:
   MOVLW d'4'
   MOVWF Delay2
   GOTO Loop

Loop:
   MOVLW d'130'
   MOVWF Delay
   DECFSZ Delay,f
   GOTO $-1
   DECFSZ Delay1,f
   GOTO Loop
   DECFSZ Delay2,f
   GOTO Loop
   Return

end

 

Endret av joalim
Lenke til kommentar
  • 5 måneder senere...
  • 4 uker senere...

Jeg hadde emne nå (høgskole) hvor vi holdt på med asm programmering. Når vi ikke forstod en instruksjon, så var beskjeden fra læreren enkel: SE I DATABLADET... Og der finner man ALT, hva den gjør, hvordan, osv osv. Hver PIC mikrokontroller har et datablad, og det skal ikke så mye til å skjønne at: Hmm, det er noe her jeg ikke forstår, åja, da søker jeg det opp på internett (eventuelle kilder der er, andre forum, produsentens dokumentasjon, ol). Når noen er så late at de ikke engang gidder å selv lete frem svaret, og bare blank insisterer å få svaret servert: let them burn...

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...