Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly MARIE中的重复减法除法_Assembly_Marie - Fatal编程技术网

Assembly MARIE中的重复减法除法

Assembly MARIE中的重复减法除法,assembly,marie,Assembly,Marie,我正试图用MARIE汇编语言编写一个程序,使用重复减法将两个数字相除。在达到零或负数之前,我需要计算所需的减法次数。我在这方面有一些问题,以下是我目前的代码: Load A Store A Load, Load A Subt B Skipcond 800 Jump Endloop Load C Add One Store C Endloop, Output H

我正试图用MARIE汇编语言编写一个程序,使用重复减法将两个数字相除。在达到零或负数之前,我需要计算所需的减法次数。我在这方面有一些问题,以下是我目前的代码:

    Load    A
    Store   A

Load,   Load    A 
    Subt    B
    Skipcond 800
    Jump    Endloop


    Load    C
    Add     One
    Store   C

Endloop,    Output
    Halt

A,  DEC     10
B,  DEC     2
C,  DEC     0
One, DEC    1
任何帮助都将不胜感激,因为我已经为此奋斗了一段时间

更新:


我已经改变了我的代码,但现在得到了一个无限循环-有什么办法可以解决这个问题吗

    Input
    Store   A
    Input
    Store   B
    Load    A
    Skipcond    800
    Jump    Endloop
Loop,   Subt    B
    Store   A
    Load    X
    Add     One
    Store   X
    Load    A
    Skipcond    400
    Jump    Loop
    Load    X
Endloop,    Halt
A,  DEC         0
B,  DEC         0
X,  DEC         0
One, DEC        1

如果数字不能被除法器整除,则使用
Skipcond 400
将有一个无止境的循环,因为它将变为负而不是零

当余数不能被B整除时,需要注意不要增加X。因此,对等于零的余数进行检查,以便当a不再为正时,可以增加X

    Input
    Store   A
    Input
    Store   B

Loop,   Load    A  
    Subt    B
    Store   A
    Skipcond 800
    Jump    Endloop / While X is positive it will continue
    Load    X
    Add     One
    Store   X
    Jump Loop

IncrementX, Load    X
    Add     One
    Store   X
    Load    A
    Subt    B
    Store   A

Endloop, Load   A
    Skipcond 000 /Skip if negative
    Jump    IncrementX

    Load    X
    Output   
    Halt
A,  DEC     0
B,  DEC     0
X,  DEC     0
One, DEC    1

我看不到你在绕圈子。除此之外,它看起来有点理智。当然,你会想要输出
C
。我已经更改了代码,但是现在得到了一个无限循环-知道我做错了什么吗?