2016-07-03 13 views
0
mov 8[+r1], 1337 

Edit, прочитав рекомендованную нить dwelch я получаю (предполагая, что я понял это правильно):Правильно ли я изменил заданную (очень короткую) ассемблерную инструкцию?

add #8, r1 
mov #1337, r2 
mov [r1], [r2] 
sub #7, r1 

Правильно ли это или я сделал ошибки?

информации у нас были о ассемблере:

  • n[+rx] регистр индексируется с преинкрементом; n этого значение индекса и rx является регистром x
  • rx регистра непосредственно адресацией

  • [rx] регистра косвенной адресацией

  • #n немедленного решения

Мы можем использовать только add, sub, mov. За исключением r1, мы можем дополнительно модифицировать r2, если необходимо.

Надеюсь, я сделал это правильно?

+0

Почему 'sub # 1336, r2' необходимо? –

+0

Это значение должно быть необходимо для приращения +1. Вы извлекаете его из 1337 и получаете +1 приращение (требуется увеличение из-за [+ r1]). – rpbudd

+0

Так как 'r1' использует предварительный приращение, что бы использовать его для' r2'? –

ответ

1
add #8, r1 
mov #1337, r2 
mov [r1], [r2] 

Это, кажется, не включать Преинкремент на r1 регистре.
Просто добавьте вместо .

add #9, r1 
mov #1337, r2 
mov [r1], [r2] 
+0

Я думаю, что проблема - это предел в задаче: «За исключением r1 мы можем дополнительно модифицировать r2, если это необходимо». Так что мне не разрешено менять # 8 на # 9, или я не прав? Tyvm за вашу помощь кстати! – rpbudd

+0

Поскольку вы заявили, что «* I * изменено на», мы все думаем, что * вы * написали 4 строки кода. Тогда, очевидно, вы можете писать любые номера, которые вам нравятся, чтобы решить задачу. –