判断数字是否为负(在URM机器中如语言)

时间:2010-09-19 22:17:19

标签: assembly computation-theory

所以我正在学习用汇编语言编写一个与URM Machine非常相似的抽象机器。 URM机器有3个基本指令(或者在一些文献中有4个):
        将寄存器归零:Z(r)
        增加寄存器:S(r)
        如果寄存器r1和r2包含相同的值,则跳转到行或标签:J(r1,r2,l)
现在,我的抽象机器甚至更弱了,因为跳跃它只能在寄存器和文字0之间进行比较 为了补偿它,允许将任何值分配给寄存器(不仅仅是URM中的零)和基本算术运算 两台机器都允许无限数量的寄存器。

我能够编写一个程序,成功地比较两个正数并返回最大值 现在我想让我的程序能够收到负数。

我的问题:如何检查数字是否为负数?只有这些教练才有可能吗?

我承认我对这种低级语言并不是很聪明......

我的最大程序如下:(输入转到r1和r2,输出转到r3)

maximo(){
    r5 := r1 - r3    
    jump (r5,0,maxr2)

    r5 := r2 - r4
    jump (r5,0,maxr1)


    r3 := r3 + 1
    r4 := r4 + 1
    jump (r1,r1,maximo)
}

maxr1(){
    r3 := r1 
}

maxr2(){
    r3 := r2 
}

谢谢!

1 个答案:

答案 0 :(得分:0)

CSTheory

上回答这个问题

初始化x←v和y←-v。然后并行递增x和y,直到其中一个等于0。

Jukka Suomela