Итак, я учусь программировать на языке ассемблера для абстрактной машины, очень похожей на URM Machine. УРМ машина имеет 3 основные инструкции (или 4 в некоторой литературе):
к нулю регистра: Z (R)
увеличивать регистр: S (R)
Чтобы перейти к строке или этикетку, если регистры R1 и r2 содержат одно и то же значение: J (r1, r2, l)
Теперь моя абстрактная машина еще слабее, потому что при прыжках она только сравнивает регистр и литерал 0.
Чтобы компенсировать это, можно назначить любое значение в регистр (не только нулевое, как в URM), так и основные арифметические операции.
Обе машины допускают бесконечное количество регистров.Определите, является ли число отрицательным (на языке 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
}
Спасибо!