Ошибка «Expression Expected» в строке 1. Как это исправить? - PullRequest
0 голосов
/ 28 мая 2019

Я получаю сообщение об ошибке «В строке 1 выражение ожидается», и я не уверен, почему.

Я использую Эмулятор процессора от nand2tetris. Я попытался изменить строку с 1 на 5, но это не решило проблему. Я просто не понимаю, в чем проблема в первую очередь.

@j
D=5;
@i;
M=1;
@5
@i
D=M
D=D-A;
@END
D;JGT
@j
@1
M=M-A
@i
@1
M=M+A
@LOOP
0;JMP

Я пытаюсь воссоздать этот цикл: J = 5 для (i = 1; i <5; i ++) { j-- } </p>

1 Ответ

1 голос
/ 28 мая 2019

Есть несколько проблем, которые появляются на первый взгляд.

Во-первых, D = 5 не является допустимой операцией взлома.Если вы хотите загрузить 5 в D, вы должны сначала загрузить его в A, а затем перейти к D:

@5
D=A

Second,;является ограничителем перехода и должен сопровождаться условием перехода (например, JEQ или JMP для безусловного перехода).У вас есть несколько строк (включая строку 1), где у вас есть;но нет условия прыжка.Их следует удалить.

Наконец, вам, вероятно, следует просмотреть страницы книг по синтаксису языка ассемблера Hack, чтобы убедиться, что вы понимаете, как он работает.В частности, в приведенном выше коде вы не указали свои цели перехода, такие как END и LOOP.Это делается с помощью конструкции (LABEL).

...