首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在MARIE中使用重复减法的除法

在MARIE中使用重复减法的除法
EN

Stack Overflow用户
提问于 2016-04-09 07:48:45
回答 1查看 4.7K关注 0票数 2

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

代码语言:javascript
运行
复制
    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

任何帮助都将不胜感激,因为我已经在这个问题上挣扎了一段时间。

更新:

我已经修改了我的代码,但现在得到了一个无限循环--你知道我如何解决这个问题吗?

代码语言:javascript
运行
复制
    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
EN

回答 1

Stack Overflow用户

发布于 2018-11-17 22:25:32

使用Skipcond 400,如果数字不能被除数整除,将会有一个无尽的循环,因为它会变成负数而不是零。

需要注意的是,当余数不能被B整除时,不要递增X。因此,需要检查余数是否等于零,这样当A不再为正时,X可以递增。

代码语言:javascript
运行
复制
    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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36511069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档