Рейтинг:
0
OriginalGriff
а) просто: тестируйте до того, как вы нажмете, а не после. В данный момент Вы читаете значение, нажимаете на него, а затем решаете повторить. Вам нужно прочитать его, проверить, если он равен нулю, выйти из цикла, в противном случае нажать и снова пойти по кругу.
б) я совсем не знаком с ассемблерным кодом, поэтому не могу быть точным. Но... есть только два способа вытащить столько предметов, сколько вы нажмете:
b.1) Проверьте дно стека, прежде чем поп-музыки. Если вы там, он пуст, и вы не должны больше хлопать. Чтобы это работало правильно, вам нужно будет сохранить начальный указатель стека перед первым нажатием и проверить его.
Б.2) Используйте счетчик, чтобы вы знали, сколько предметов вы толкнули. Затем вы можете сбросить этот номер.
Второй подход, вероятно, проще.
в) понятия не имею, я подозреваю, что ваш процессор / ассемблер немного придуман специально для вашей домашней работы! Это будет где-то в наборе инструкций, который дал тебе учитель. Если бы мне пришлось гадать, я бы предположил, что это что - то вроде
CPY IO R0
но это может быть совершенно неправильно.
Member 13976376
Спасибо за ваш ответ. Это действительно много значит, так как я пытаюсь обернуть свою голову вокруг этого, чувствуя себя совершенно бесполезным, ха-ха.
Я понимаю, что вы говорите о тестировании, если это ноль, чтобы выйти из цикла перед толчком, но после удаления PSH R0 и опробования некоторых различных мест для него, и удаления его полностью ничего не появляется в стеке вообще. Я думаю, что главная проблема, с которой я сталкиваюсь, заключается в том, где выполнять команды push и pop.
OriginalGriff
Вам нужны две метки и две инструкции "прыгать" :
@PushLoop:
Получить это.
Проверить его
Если это ноль, переходите к @EndPushLoop
Толкать его
Считать это
Перейти к @PushLoop
@EndPushLoop:
// Продолжайте и печатайте их!
В этом есть смысл?
Member 13976376
Еще раз большое вам спасибо за то, что помогли мне понять.
Я понимаю концепцию петель и то, что они делают. В основном, если входной сигнал равен 0, он переходит вниз к @EndPushLoop, а если нет, то он зацикливается
@PushLoop, чтобы он снова попросил пользователя ввести значение.
Код, который у меня есть на данный момент, таков, но я упускаю из виду "проверить его", как вы написали, а также "подсчитать его". Мне также нужно распечатать стек, но я думаю, что главным приоритетом будет правильно получить толчок и хлопки.
Я опубликую скриншот симки вместе с кодом ниже:
https://gyazo.com/d5a711a2e049c5390de713cd5987be41
OriginalGriff
Нет, я делаю это не для тебя! :смеяться:
У вас есть идея, поэтому реализация должна быть довольно простой: возможно, инструкция CPY устанавливает флаг Z, поэтому вы можете использовать что-то вроде JZ сразу же после прочтения значения. Загляните в описание и убедитесь.
Member 13976376
Хорошо, ха-ха. Я не стану лучше, если позволю тебе закончить его за меня, так что я ценю то, что ты говоришь. Спасибо вам за Ваш вклад, я постараюсь разобраться в этом, чтобы, Надеюсь, у меня был мирный пятничный вечер, ха-ха.
OriginalGriff
Я рад, что вы так думаете - есть вааай слишком много людей, для которых просто сделать это для них очень важно. :вздох:
Имейте голос за попытку!