2016-05-19 10 views
0

Ich mache gerade einen Kurs über Assembly, und bin in ein Problem geraten, dass auch nach Recherchen online und im Gespräch mit dem prof lehrt es, ich bin immer noch völlig verloren, wie zu füge es ein.Anwenden einer Bitmaske mit lc3

Kurz gesagt, ich bin auf der Suche nach einer Bitmaske auf einen Wert zu implementieren. Wenn Sie beispielsweise einen 16-Bit-Wert (1000 0011 1100 0001) annehmen und in diesen konvertieren möchten (0000 0000 0111 1111), wenden Sie eine Maske dieses Werts an (0000 0000 0111 1111) wurde gesagt, ist ein OR-Befehl .... außer ich sehe keinen solchen Befehl in lc3-Dokumentation, die mit dem Kurs bereitgestellt wurde. Vielleicht ist es anders, aber ich habe noch keine Dokumentation gefunden, die es auf meinen Reisen skizziert.

Zusammenfassend, habe keine Ahnung, wie man eine Bitmaske auf einen Wert mit LC3 Assembly anwenden, habe kein Glück mit Ressourcen zur Verfügung, jemand hier, der das Material besser versteht, dann habe ich irgendwelche hilfreiche Ratschläge, wie dies getan würde ?

EDIT: Ja das ist Hausaufgaben, aber wie Sie sehen können, habe ich meine anderen Möglichkeiten erschöpft.

+0

ich habe keine Kenntnisse über lc3 und nur geringe Kenntnisse über Montage. Aber wenn Sie eine Bitmaske anwenden möchten, möchten Sie Ihre Werte jeweils in ein Register laden. Und dann entweder eine AND oder OR-Anweisung für diese Register. – MrSykkox

+2

Nein, Sie könnten dieses Ergebnis nie mit einem logischen Operator aus dem Original erhalten. Dein Material/Lehrer hat falsche Informationen ausgegeben oder du hast es falsch verstanden. –

+0

@MrSykkox Ich denke, das ist, wo ich geworfen werde, ist, wie man eine OR-Anweisung anwenden. Ein AND scheint geradlinig (aka tun ein UND R1, R0, R1 oder so ähnlich). Meine Online-Suche nach solchen Anweisungsdaten war fruchtlos und dann einige. – canadiancreed

Antwort

0

Für alle, die sich über diese stolpert, ist dies, wie ich dieses Problem gelöst, und wie Sie in lc3 Montage

;Initialize the variables 
.ORIG x3000 
LD R0, valueRO  
LD R1, valueR1  
LD R2, lowOrderZero 

;The OR instruction begins now 
NOT R3, R0 ;Inverse the value in Register 0 to Register 3 
NOT R4, R2 ;Inverse the value in Register 2 to Register 4 
AND R5, R3, R4 ;Select either the largest or the closest value and store in R5 (not certain on this one) 
NOT R0, R5 ;Inverse the value in Register 5 to Register 0 

HALT 

valueRO  .FILL x0014 
valueR1  .FILL x0023 
lowOrderZero .FILL x007F 

Mit diesem Beispiel habe ich Werkzeug der Wert in R0 eine OR-Befehl zu tun, und angewandter ein Bitmaske 0000 0000 0111 1111 auf den Wert in R0

Special thanks to the Comp Sci instructors at the University of Auckland

Verwandte Themen