Правильно ли я изменил данную (очень короткую) инструкцию ассемблера?

mov 8[+r1], 1337

Отредактируйте, прочитав рекомендованную ветку 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 при необходимости.

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


person rpbudd    schedule 03.07.2016    source источник
comment
Зачем нужен sub #1336, r2?   -  person Sep Roland    schedule 03.07.2016
comment
Это необходимо для увеличения +1. Вы вычитаете его из 1337 и получаете приращение +1 (приращение необходимо из-за [+ r1]).   -  person rpbudd    schedule 03.07.2016
comment
Поскольку r1 использует предварительное приращение, какой смысл делать это для r2?   -  person Sep Roland    schedule 03.07.2016
comment
Но как бы вы тогда сделали приращение?   -  person rpbudd    schedule 03.07.2016
comment
Разве на это легко не ответить, просто выполнив код? Если вы имели в виду, разложил ли я эту более сложную инструкцию на набор более простых инструкций с точно таким же результатом, тогда вы в основном просто изучите регистры и ячейки памяти, задействованные до и после каждого решения, тогда вы легко увидите, является ли конечный результат тем же. Учитывая, что вы попираете регистр r2, это по крайней мере одно отличие.   -  person Lasse V. Karlsen    schedule 03.07.2016
comment
Лассе, я действительно не знаю, как бы я это сделал. Я новичок в этом, и у меня нет никаких программ / я никогда не узнал, как их использовать. Пока делал это только на бумаге, и я очень нуб (1 неделя).   -  person rpbudd    schedule 03.07.2016
comment
на днях у нас был этот вопрос с домашним заданием, почему бы не прочитать его? если вы понимаете одно, вы понимаете другое.   -  person old_timer    schedule 03.07.2016
comment
@dwelch: Посмотрите, пожалуйста, мою правку, теперь она верна? Я действительно не хочу использовать другое решение, в котором были изменены другие вещи.   -  person rpbudd    schedule 03.07.2016
comment
это вопрос, который задают и на него ответили, вы хотите знать, как это сделать, или, если у вас есть кратчайшее решение, оно уже было задано и дано ответ. Какой смысл всем в классе задавать один и тот же вопрос? Это не домашнее задание.   -  person old_timer    schedule 04.07.2016


Ответы (1)


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

Похоже, что это не включает предварительное приращение в регистре r1.
Просто добавьте 9 вместо 8.

add #9, r1
mov #1337, r2
mov [r1], [r2]
person Sep Roland    schedule 03.07.2016
comment
Думаю, проблема заключается в ограничении задачи: кроме r1 мы можем дополнительно изменить r2, если это необходимо. Значит, мне нельзя будет изменить №8 на №9, или я ошибаюсь? Tyvm, кстати, за вашу помощь! - person rpbudd; 03.07.2016
comment
Поскольку вы заявили, что я изменился на, мы все думаем, что вы написали 4 строки кода. Тогда, очевидно, вы можете написать любые числа, которые захотите, чтобы решить задачу. - person Sep Roland; 03.07.2016