如何实现逻辑OR ||在easy68k的if()条件下?

时间:2019-03-23 02:34:49

标签: assembly 68000 easy68k

假设我必须比较一个数据寄存器,并且必须将它与等于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 个答案:

答案 0 :(得分:4)

在汇编器中,没有支撑块,只有gotos。因此,请考虑一下,如果x == 0已经知道需要“ then”代码,但是如果x != 0,则必须测试x == 7来确定是否转到“ then”代码或“其他”代码。

由于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:
    ;