所以我正在学习用汇编语言编写一个与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
}
谢谢!