Код MARIE, если выполняются условия
Меня попросили сделать следующее:
Напишите код MARIE, чтобы выполнить следующую выдержку из программы.
If (x < y + z) {
x = x – y; z=z+1;
}
else y=y-1;
Инструкции: - Используйте инструкцию "ORG", чтобы запустить вашу программу по адресу 200. - В конце вашей программы должны быть указаны следующие ярлыки и директивы:
X, Dec 4
Y, Dec 2
Z, Dec 5
One, Dec 1
и я написал это:
ORG 200
Load X
Subt Y
Subt Z
Skipcond 000
Jump Else
If, Load X
Subt Y
Output
Load Z
Add One
Output
Else, Load Y
Subt One
Output
Halt
X, DEC 4
Y, DEC 2
Z, DEC 5
One, DEC 1
мой код оправдывает условия if и else. Это почему? и как я могу это исправить? код, который я написал правильно?
1 ответ
Это почему? Код выполняет условия if и else, потому что в конце блока If необходимо, чтобы инструкция JUMP переместилась в конец оператора if.
Как это исправить?
До:
If, Load X
Subt Y
Output
Load Z
Add One
Output
Else, Load Y
Subt One
Output
Halt
После:
If, Load X
Subt Y
Output
Load Z
Add One
Output
JUMP END
Else, Load Y
Subt One
Output
END, Halt
Код, который я написал правильно? Вам необходимо сохранить в памяти значения X Y и Z, поэтому вам нужно заменить инструкцию OUTPUT соответствующей инструкцией STORE следующим образом:
/ Code Section
ORG 200
Load X
Subt Y
Subt Z
Skipcond 000
Jump Else
If, Load X
Subt Y
STORE X
Load Z
Add One
STORE Z
JUMP END
Else, Load Y
Subt One
STORE Y
END, Halt
/ Data Section
X, DEC 4
Y, DEC 2
Z, DEC 5
One, DEC 1