Assamblerkod
Hej vi har en labb om några dagar där vi ska följa ett flödesschema och utgå från en källkodsfil i vilken de funktioner vi behöver för att skriva till LCDn redan finns färdiga. Vi har lagt till Main-funktion i assemblerkoden men det är något som är fel i vår kod. Vi har försökt hitta felet men lyckas inte. Här är vår kod:
Vad är det som blir fel?
Detta är flödesschemat:
vi använder oss av två kort som ser ut som bilden nedan:
här ska vi enligt instruktionerna skriva ett "a" och detta ska visas på båda korten som är kopplade till varandra. Vi kan inte skriva något alls på raden så det är nog något fel i vår kod.
De senaste bilderna syns inte.
Kan ni se var programmet exekverar, och värden på register och så? Har ni en simulator eller riktig hårdvara?
Här är bilderna. Vi använder oss av command prompt
Jag föreslår att du gör ett minimalt program, som bara skriver ut ett a.
Först behöver du hand om felen som din assembler skriver ut. Så länge den gnäller är det knappt någon idé att testköra. Därför är Lagunas förslag om ett minimalt program utmärkt. Sedan kan man bygga vidare när man har någonting över huvud taget som fungerar.
"Unknown register 97" får mig direkt att höja på ögonbrynen. 97 ser inte ut som ett register och är dessutom ASCII-värdet för 'a'.
Eftersom din kod är en stor bild är det inte så lätt att räkna rader, men jag hittar den här som ser mycket misstänkt ut:
mov r4,'a'
Jag gissar du vill stoppa in ett 'a' i register r4. Det är dock inte var instruktionen gör enligt dokumentationen:
mov - move register to register
mov rC, rA
Moves the contents of rA to rC.
Du får leta upp en annan instruktion som petar in 'a' i r4. Jag kan inte den här arkitekturen med en load-instruktion eller en variant av mov måste finnas.