我需要构建返回c = a * B的汇编代码。 订单:
你可以使用几个寄存器(不太可取) 并将所有寄存器的值初始化为零。
所以,我尝试这样做,但不幸的是我被卡住了。
//检查A || b!= 0。
INC a
DEC a
Jnz Label 1
HALT .
Label 1
INC b
DEC b
Jnz Label 2
HALT .
.....
答案 0 :(得分:2)
如果不使用第四个寄存器,我看不出怎么做。我跳过let fileManager = FileManager.default
fileManager.removeItem(at: storeUrl)
或a
b
的测试,因为您已经展示了如何做到这一点。
我想要两个嵌套循环,以便0
递增c
x a
次。问题是记住下一次内循环b
是什么,这就是第四个寄存器的目的。用C编写,所以我可以很容易地测试它。
将b
x 3
乘以5
。
c = a * b
节目输出
#include <stdio.h>
int main(void)
{
int a=3, b=5, c=0, d=0;
do { // outer loop a label1:
do { // inner loop b
c++; // accumulate product c INC c
d++; // remembering b INC d
b--; // next inner loop b DIC b
} while(b != 0); // JNZ label1
do { // inner loop d label2:
b++; // restoring b INC b
d--; // next inner loop d DIC d
} while(d != 0); // JNZ label2
a--; // next outer loop a DIC a
} while(a != 0); // JNZ label1
// HALT
printf("%d", c);
return c;
}
正如您所看到的,可以使用您可能使用的四条指令来实现。