Что не так с этой строкой кода Lc3?

Я делаю вопрос практического экзамена.

Вопрос в том

Что-то не так в этой строке кода LC3? (Звездная строка)

ADD R3, R3, 0;
**BRNZ ISPOS;**
HALT
.BLKW 250
ISPOS NOT R3, R3 ....

Я увидел, что помеченная звездочкой строка — это Branch, а коды состояния отрицательные и нулевые, в основном идут на метку ISPOS, если код условия отрицательный или нулевой, или останавливают программу в противном случае.

Я бы сказал, что в этой строке кода LC3 нет ничего плохого. Кто-нибудь видит какие-то проблемы с этим?


person committedandroider    schedule 12.05.2015    source источник
comment
Поскольку у вас есть только 9 битов смещения, это на краю достижимого диапазона, но едва ли подходит. Я не вижу в этом ничего плохого.   -  person Jester    schedule 12.05.2015
comment
Является ли ассемблер регистронезависимым для флагов nz? В каждом примере, который я вижу в Интернете, они написаны строчными буквами, как в BRnz.   -  person Gene    schedule 12.05.2015
comment
@Gene Регистр учитывается только для меток.   -  person GabrielOshiro    schedule 12.05.2015
comment
@ Джин, да, это тоже бросилось мне в глаза, но когда я собрал код, ошибок не было. Поэтому я предполагаю, что коды условий нечувствительны к регистру.   -  person committedandroider    schedule 12.05.2015


Ответы (1)


Да, в этом сегменте кода есть несколько разных ошибок.

Коды операций не могут иметь ничего, кроме метки, предшествующей им.

**BRNZ ISPOS;**

Должен стать:

BRNZ ISPOS;**

Вы не можете использовать случайные символы после операндов, если только они не закомментированы

ISPOS NOT R3, R3 ....

Необходимо изменить на:

ISPOS NOT R3, R3 ;....
person Chris M    schedule 12.05.2015