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