我必须将此 C 代码转换为汇编代码:
#include <stdio.h>
int main(){
int a, b,c;
scanf("%d",&a);
scanf("%d",&b);
if (a == b){
b++;
}
if (a > b){
c = a;
a = b;
b = c;
}
printf("%d\n",b-a);
return 0;
}
我的代码在下面,并且不完整。
rdint %eax # reading a
rdint %ebx # reading b
irmovl $1, %edi
subl %eax,%ebx
addl %ebx, %edi
je Equal
irmov1 %eax, %efx #flagged as invalid line
irmov1 %ebx, %egx
irmov1 %ecx, %ehx
irmovl $0, %eax
irmovl $0, %ebx
irmovl $0, %ecx
addl %eax, %efx #flagged as invalid line
addl %ebx, %egx
addl %ecx, %ehx
halt
基本上我认为它已经完成了,但是当我尝试运行它时,我在两行标记为无效的旁边发表了评论,但我不确定它们为什么无效。我也不确定如何为 a > b 做一个 if 语句。我可以使用了解 y86 汇编语言的人的任何建议。