Что именно делает инструкция BEQ?

У меня есть следующий фрагмент кода сборки, который я пытаюсь понять. Это сборка для микроконтроллера MC68332.

LOOP
    some instructions
    some more instructions
BEQ LOOP

Я погуглил BEQ и обнаружил, что это означает переход к нулевому результату, но я до сих пор не понимаю, что он делает. Сравнивает ли он результат последней инструкции с 0, и если он равен 0, то возвращается к строке LOOP?


person jazzybazz    schedule 05.02.2012    source источник
comment
Можете ли вы сказать, какой микроконтроллер вы имеете в виду?   -  person Sedat Kapanoglu    schedule 06.02.2012
comment
микроконтроллер MC68332, спасибо   -  person jazzybazz    schedule 06.02.2012
comment
добавил ответ, надеюсь, это поможет.   -  person Sedat Kapanoglu    schedule 06.02.2012


Ответы (2)


В семействе Motorola 68k это означает ветвь при равенстве, что означает переход к заданному адресу, если установлен нулевой флаг, например, когда предыдущее сравнение прошло успешно.

Однако 68332 кажется другим. Основываясь на синтаксисе в верхнем регистре, это может быть макрос вокруг другой инструкции, которая, по сути, делает то же самое.

Программисты на ассемблере, которые переносят код из других систем, могут использовать аналогичные макросы для облегчения процесса переноса.

person Sedat Kapanoglu    schedule 05.02.2012
comment
спасибо, это именно то, что я думаю. последней инструкцией перед BEQ является SUB D2,D2, которая всегда устанавливает нулевой флаг. следовательно, это бесконечный цикл. Правильно? - person jazzybazz; 06.02.2012
comment
@jazzybazz да, извините за задержку с ответом :) - person Sedat Kapanoglu; 05.01.2021

Точный ответ будет зависеть от того, какой микроконтроллер вы используете. В общем, если нет операндов, ожидается, что BEQ разветвится, если аккумулятор равен 0. Это наиболее вероятно на простых микроконтроллерах, где аккумулятор является основным регистром для вычислений.

Какой микроконтроллер вы используете? Вы должны быть в состоянии найти определение инструкции BEQ в руководстве для этого микроконтроллера.

person Stefan    schedule 05.02.2012
comment
MC68332. в руководстве пользователя про команду BEQ ничего нет - person jazzybazz; 06.02.2012
comment
что означает глагол разветвляться? - person jazzybazz; 06.02.2012
comment
На веб-сайте Freescale есть таблица данных, ссылку на которую можно найти здесь: freescale.com/webapp/sps/site/prod_summary.jsp?code=MC68332. Ветвление означает переход к определенному месту в программе, в данном случае к метке LOOP. Функция этого кода состоит в том, чтобы зацикливаться до тех пор, пока аккумулятор не удержит значение 0. - person Stefan; 06.02.2012