Как реализовать логическое ИЛИ ||в условии if () в easy68k? - PullRequest
2 голосов
/ 23 марта 2019

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

Я знаю, как это сделать, просто сравнив с одним числом, а не 2.

CMP #0, D3
BNE ELSE
REST OF THE CODE HERE

Как мне сравнить, когда я хочу сравнить его с любым0 или другое число, например 7. В c ++ вы бы сказали

if(x == 0 || x == 7)
{code here}
else
{code here}

1 Ответ

4 голосов
/ 23 марта 2019

В ассемблере нет скрепленных блоков, только gotos.Так что подумайте, если x == 0 вы уже знаете, что вам нужен код "then", но если x != 0, вам нужно протестировать x == 7, чтобы выяснить, идти ли к коду "then" или к "else"code.

Поскольку C способен выражать эту структуру, я буду использовать это для иллюстрации:

Ваш код

if(x == 0 || x == 7)
    {code T here}
else
    {code E here}

эквивалентен:

    if (x == 0) goto then;
    if (x == 7) goto then;
else: /* label is not actually needed */
    code E here
    goto after_it_all;
then:
    code T here
after_it_all:
    ;
...