mekatronik är nöjd med hjälpen
mekatronik 143
Postad: 8 jan 13:11

RTN med ALU och Assembler

Hej, jag har två problem här med RTN som jag skall tyda av och har lite svårt att förstå vissa saker. Här är den första:

Här kunde jag nästan lösa den här frågan med uteslutningsmetoden. Med tanke på att vi måste börja med att ladda T registret som första steg blev e och f endast de aktuella kandidaterna för rätt svar. Jag vet dock inte varför f skulle vara rätt, skillnaden är att man adderar 1 två extra gånger i e. Vet inte varför man skall addera med 1 från början i Q2 som de gjort i båda stegen.

Den här tyckte jag var väldigt svår att förstå, det enda jag listade ut var att e inte kunde vara aktuell här eftersom man utför operationen med effektivadressering. Men mer än så förstod jag inte.

Jag använder denna processorn:  http://www.cse.chalmers.se/edu/year/2014/course/EDA216/FlisProcessorHandbok-A4.pdf 

Programmeraren 2191
Postad: 9 jan 15:14 Redigerad: 9 jan 15:17

Jag gjorde en tabell och stegade. a)

Ska testa e och f härnäst.

Programmeraren 2191
Postad: 9 jan 15:23 Redigerad: 9 jan 15:24

e)

f)

mekatronik 143
Postad: 9 jan 15:34
Programmeraren skrev:

e)

f)

Jag testade precis detta, en otroligt bra metod för att verifiera och få fram rätt svar. Tack så hemskt mycket!

Programmeraren 2191
Postad: 9 jan 15:37

1.13)

Offseten till SP ligger i byten efter instruktionen så man måste veta om PC auto-inkrementeras före eller efter opcode:n har lästs.
Dock har 5 av alternativen M(PC)-->T så vi får nog tro att PC pekar på offseten (byten efter opcoden).
Ser inget om att SP påverkas av instruktionen under "Indirekt stackregister med konstant offset (Indexed) [ns]" så då försvinner alternativen B, C, D, E.
A och F är samma förutom add C(arry) ingår i add:en i steg Q6 i alternativ F. Men ADDA är utan carry och då återstår endast A.
Stämmer det med facit?

mekatronik 143
Postad: 9 jan 15:53
Programmeraren skrev:

1.13)

Offseten till SP ligger i byten efter instruktionen så man måste veta om PC auto-inkrementeras före eller efter opcode:n har lästs.
Dock har 5 av alternativen M(PC)-->T så vi får nog tro att PC pekar på offseten (byten efter opcoden).
Ser inget om att SP påverkas av instruktionen under "Indirekt stackregister med konstant offset (Indexed) [ns]" så då försvinner alternativen B, C, D, E.
A och F är samma förutom add C(arry) ingår i add:en i steg Q6 i alternativ F. Men ADDA är utan carry och då återstår endast A.
Stämmer det med facit?

Det stämmer med facit, jag blev lite förvirrad på Q6 steget i F med tanke på att våra carry benämningar oftast är "Cin" och inte bara "C", men det låter rimligt att det är skillnaden eftersom vår ALU inte kan addera 3 register samtidigt. 

 

Tack igen för en bra förklaring!

Programmeraren 2191
Postad: 9 jan 16:06 Redigerad: 9 jan 16:29

Som du ser så kan ALU:n addera med carry, ADCA gör det till exempel. Men man vill ha båda varianterna som olika instruktioner för olika tillfällen.

Svara Avbryt
Close