如果语句从C转换为汇编(Motorola 68k)

时间:2015-10-27 00:48:26

标签: c if-statement assembly branch 68000

我给出了这样的IF声明:

if( (Ch > ‘g’) && (Ch < ‘m’)) || ((A>=0) && (A<=100))
    condition = 1;
else
    condition = 0;

其中Ch是char,A是int,条件是short int。

我试图把它变成汇编语言:

Org $8000
CLR.W DO
CLR.W D1
CMPI.B #$67,ch
BGT ;something here...

Org   $9000
ch    DC.B  'a'
A     DC.L   0
condition  DS.W  1

我相信我已经获得了第一个if条件,其中67是ascii代码的十六进制值,字母'g'。但我不知道如何在这里实现AND语句,我想or语句可以像对待一样对待?因为if的一部分执行,另一部分执行。任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果你真的有一个有效的流程图,将它变成汇编应该是一件小事。

我不打算为你画画,只是给它一个伪代码渲染:

    if Ch <= 'g' goto check_second_term
    if Ch < 'm' goto result_one

check_second_term:
    if A < 0 goto result_zero
    if A > 100 goto result_zero
result_one:
    condition := 1
    goto done
result_zero:
    condition := 0
done:

我相信您可以将这些转换为cmp + bcc对。