2016-05-19 2 views
0

В настоящее время я беру курс по сборке и столкнулся с проблемой, которая даже после исследования в Интернете и разговоров с преподавателем, я все еще испытываю полную потерю относительно того, как реализовать его.Применение битовой маски с использованием lc3

Вкратце, я ищу, как реализовать битовую маску для значения. Например, если вы хотите взять 16-битное значение (1000 0011 1100 0001) и преобразовать его в это (0000 0000 0111 1111), вы примените маску этого значения (0000 0000 0111 1111), используя то, что я сказали, что это команда OR ... кроме того, что я не вижу такой команды в документации lc3, которая была предоставлена ​​с курсом. Возможно, это сделано по-другому, но я пока не нашел никакой документации, излагающей это в моих путешествиях.

Подводя итог, понятия не имею, как применить битовую маску к значению с помощью сборки lc3, не повезло с доступными мне ресурсами, кто-нибудь здесь, который лучше понимает материал, тогда у меня есть полезные советы о том, как это будет сделано ?

EDIT: Да, это домашнее задание, но, как вы можете видеть, я исчерпал другие варианты.

+0

у меня нет каких-либо знаний о LC3 и лишь незначительные знания о сборке. Но если вы хотите применить битовую маску, вы хотите загрузить свои значения в регистр каждый. И затем либо выполните инструкции AND или OR для этих регистров. – MrSykkox

+2

Нет, вы никогда не сможете получить этот результат от оригинала с помощью любого логического оператора. Ваш материал/учитель выдавал неправильную информацию, или вы неправильно поняли. –

+0

@MrSykkox Я думаю, что это то, где меня бросают, - это применить инструкцию OR. И И кажется прямолинейным (aka a AND R1, R0, R1 или что-то в этом роде). Мой поиск в Интернете для таких данных инструкций был бесплодным, а затем некоторым. – canadiancreed

ответ

0

Для всех, кто спотыкается через это, это, как я решил эту проблему, и как вы можете сделать инструкцию или в LC3 сборки

;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 

В этом примере я инструмент значение в R0, и применяется битовая маска 0000 0000 0111 1111 к значению в R0

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

Смежные вопросы