1

如何在 Pep9 程序集中编写 if 语句?我想用 Pep9 汇编形式从 C 中编写这个 if 语句。

if ( (0 < weight) && (weight <= 1 ) ) {
    printf("Light Weight\n");
}
else if((1 < weight) && (weight <= 3)){
    printf("Medium Weight\n");
}

但是当输入大于 1 时我无法打印结果。这是我目前所拥有的:

if:   LDWA weight,s  ;if(0 < weight) 
      CPWA limit11,i
      BRLT msg1 
      LDWA weight,s  ;if(weight <= 1)
      CPWA limit12,i 
      BRGT msg1 
      STRO cost1,d  
   cost1: .ASCII "Low Weight\n\x00"    
   msg1: .END   
 
if:   LDWA weight,s  ;if(1 < weight) 
      CPWA limit21,i 
      BRLT msg2
      LDWA weight,s  ;if(weight <= 3)
      CPWA limit22,i  
      BRGT msg2 
      STRO cost2,d  
   cost2: .ASCII "Medium Weight

第一个 if 语句工作正常。但第二个无法打印任何内容。你能指出问题出在哪里吗?

4

1 回答 1

1

我不是很了解 PEP8/9,但这里有一些想法:

您正在尝试执行 if-then-else-if-then 语句。

特别注意第一个 if-then 如何流入第二个 if-then(通过 else)。

cost1在这里,您将data放在第一个 if 和第二个 if 之间。处理器不会自动知道要跳过执行流(控制流)中的数据。如果是我,我会将所有数据(字符串等)重新定位到最后,但如果您希望它们内联,则使用无条件分支围绕它们进行分支,如果需要,则告诉处理器跳过字符串。

您的 .END 可能应该是代码的最后一条语句,而不是在中间。


如果这些都不起作用,请向我们展示您的所有代码,而不仅仅是片段。

于 2020-07-23T01:27:38.070 回答