RTN Operationer, logiskt högerskifte
Hej, jag sitter med en uppgift där jag skall fylla i en RTN tabell (denna då som egentligen är tom). Försöker tyda vad det är som vänder vid varje klockpuls och allt är väldigt tydligt för mig tills jag kommer till puls 5, vid det logiska högerskiftet.
Resultatet av det skiftet blir men jag får det till ,
är inte helt säker på varför det blir 86, min spontana tanke är att det har något att göra med C flaggan som läggs in. Skulle jag dock göra det får jag detta i R : vilket fortfarande är fel.
Hur kommer det sig att R laddas med 86 i puls 5?
Du skiftar åt höger du har före skiftet
A4 vilket binärt är 1001 0100
när du flyttar varje bit ett snäpp åt höger matas en nolla in från vänster och biten längst till höger försvinner. Återstår alltså
0100 1010 vilket i hex blir 86
(det finns troligen också en instruktion som roterar, dvs tar minst signifikanta biten och stoppar in längst till vänster i samband med skiftet)
Var det det du frågade efter eller ngt annat?
Tillägg: 23 dec 2021 14:05
Jag kontrollerade inte det jag skrev, A = 1010, (inte 1001 som är 9dec)
Ursäkta röran som jag orsakade, Bubo verkar vara på rätt spår i inlägg #6
Ture skrev:Du skiftar åt höger du har före skiftet
A4 vilket binärt är 1001 0100
när du flyttar varje bit ett snäpp åt höger matas en nolla in från vänster och biten längst till höger försvinner. Återstår alltså
0100 1010 vilket i hex blir 86
(det finns troligen också en instruktion som roterar, dvs tar minst signifikanta biten och stoppar in längst till vänster i samband med skiftet)
Var det det du frågade efter eller ngt annat?
A4 hexadecimalt blir 1010 0100 binärt, 86 hexadecimalt blir 1000 0110
När jag gör skiftet flyttas bitarna in, skiftar man A4 får man då 0101 0010 vilket blir 52 hexadecimalt, svaret skall dock bli 86 hexadecimalt (du ser i tabellen) förstår inte riktigt hur de kommer fram till det.
C flaggan finns också med i puls 5, så jag antog att man förde in den då samtidigt till MSB biten. Men då blir resultatet 83 hexadecimalt vilket fortfarande är fel.
Kan det vara så att du tänker fel på ett steg? Är det inte så att det som står i registren på rad CP 5 är resultatet av RTN-operationen på den rad som är betecknad CP 4?
R -> A betyder ju "ladda in i A det som råkar finnas i R", dvs skriv 86 i register A.
Det är för övrigt exakt samma operation vi ser på rad 7, med resultatet på rad 8.
Även rad 6-7 tyder på det: C3 minus 1F blir ju A4. (Tror jag. Lite ovan vid hexadecimalt...)
Bubo skrev:Kan det vara så att du tänker fel på ett steg? Är det inte så att det som står i registren på rad CP 5 är resultatet av RTN-operationen på den rad som är betecknad CP 4?
R -> A betyder ju "ladda in i A det som råkar finnas i R", dvs skriv 86 i register A.
Det är för övrigt exakt samma operation vi ser på rad 7, med resultatet på rad 8.
Även rad 6-7 tyder på det: C3 minus 1F blir ju A4. (Tror jag. Lite ovan vid hexadecimalt...)
Jag har testat att göra högerskiftet med båda A4 och 86, får dock fel på båda gångerna. Det blir dock rätt ifall jag för in C flaggan i bitmönstret, om jag gör höger skifte på 86 får jag följande:
1000 0110 >> 0100 0011
Med A4:
1010 0100 >> 0101 0010
Men om jag för in C biten i MSB (vilket jag inte vet ifall man skall göra eller inte) då får jag:
1000 0110 >> 1100 0011 (detta motsvarar C3).
Det kan vara så att jag läst raderna fel, men förstår fortfarande inte hur man får fram C3 efter höger skiftet. Ifall det är så att man tar in C flaggan och sätter MSB = 1 då hade det varit logiskt.
86: 1000 0110
Skifta höger: x100 0011 (0bort åt höger)
Om du fyller på med en nolla: 0100 0011. Detta är även Tures kommentar om att rotera. Den skulle jag ha trott på.
Om du fyller på med en etta: 1100 0011 = C3
Att rotera känns rimligast, men att fylla på med en etta verkar ge det svar vi var ute efter.
Raderna i tabellen är som Bubo skriver, operationen på rad n opererar på värdena i rad n och svaret hamnar i rad n+1.
RTN är uttolkningen av styrsignalerna till ALU:n:
http://www.cse.chalmers.se/edu/year/2014/course/EDA216/FlisProcessorHandbok-A4.pdf
(C) A >> 1 -> R betyder "biten från C och de 8 bitarna från A skiftade 1 steg åt höger, lagra i R"
C=1, A=hex 86:
1 10000110 >> 1 = 11000011 = hex C3
Programmeraren skrev:Raderna i tabellen är som Bubo skriver, operationen på rad n opererar på värdena i rad n och svaret hamnar i rad n+1.
RTN är uttolkningen av styrsignalerna till ALU:n:
http://www.cse.chalmers.se/edu/year/2014/course/EDA216/FlisProcessorHandbok-A4.pdf(C) A >> 1 -> R betyder "biten från C och de 8 bitarna från A skiftade 1 steg åt höger, lagra i R"
C=1, A=hex 86:
1 10000110 >> 1 = 11000011 = hex C3
Nu blev det logiskt, tack för förklaringen!