Понимание условия пропуска на языке ассемблера - PullRequest
2 голосов
/ 28 ноября 2011

Ну, во-первых, это язык ассемблера Мари.

Вот что у меня есть: я могу легко принять ввод от пользователя и т.д ....

Теперь я хочу, чтобы каждый раз, когда пользователь вводил символ, предполагал целое число, я хотел бы сравнить его с «0», а затем увеличивать значение счетчика на единицу каждый раз, когда пользователь вводит ноль

Вот простой кусок кода, когда я пытаюсь понять идею.

Моя проблема, которую я считаю, заключается в том, чтобы понять, как работает условие пропуска, я думаю, что, как только я узнаю, что я буду знать, как сравнить с моей инициализированной переменной

Спасибо Всем, кто нашел время, чтобы прочитать это.

  start,    load prom
    output prom
    input
    store num1

    subt ex
    skipcond 400

    jump counterzero




counterzero, Skipcond 400 if AC = 0,
             store county + one
             jump done




done,   load county
            output
            halt



plus,   dec 43
eq,     dec 61
prom,   dec 62
num1,   dec 0
num2,   dec 0
county, dec 0

zero, dec 0
one,  dec 1
sum,    dec 0
nul,    dec 0
h30,    dec 48
ex, dec 33

Отредактировано: мой тест состоит в том, что я ввожу ноль '0', а счетчик должен увеличиваться, вместо этого он дает мне странное квадратное поле: S

1 Ответ

0 голосов
/ 29 ноября 2011

skipcond перепрыгивает через одну инструкцию, если выполняется условие. Итак, у вас есть

skipcond 400
jump counterzero

Это означает, что если AC равен нулю, перейдите к инструкции после перехода. Если нет, выполнить прыжок.

Теперь, поскольку инструкция после перехода расположена по адресу counterzero, в вашем коде, который ничего не делает, нет никакой разницы.

Я не уверен, что это соответствует вашим намерениям, но перед jump counterzero (который вы могли бы опустить) я бы добавил jump done. Тогда он переходит на счетчик адреса ноль, только если AC <> 0.

Если это не сработает, пожалуйста, уточните свои намерения, и я могу уточнить.

...