Путаница при генерации объектного кода в выводе ассемблеров SIC
Итак, сейчас я пытаюсь понять, как генерируется объектный код, но эти две строки действительно смущают меня, кто-нибудь хочет мне это объяснить?
RSUB is 4C0000, I understand RSUB is 4C Mnemonic, but where did 0000 came from?
EOF BYTE C'EOF' Object code is 454F46, how did they get that?
INPUT BYTE X'F1' F1
how did generate F1 in the object code?
STCH BUFFER, X 549039
BUFFER is 1039, and STCH in mnemonic is 54, but shouldn't it be 541039?
also after a few lines,
LDCH BUFFER, X 509039?
1 ответ
На все это следует ответить в справочнике по набору команд вашей архитектуры и в руководстве к вашему ассемблеру.
RSUB - это 4C0000, я понимаю, что RSUB - это мнемоника 4C, но откуда взялось 0000?
SIC, похоже, использует 24-битные слова и кодирование команд фиксированной длины. Поскольку эта инструкция, по-видимому, не принимает операндов, отсюда и нули. Может быть, процессор игнорирует поле адреса, чтобы вы могли использовать все, что вы хотели, или, возможно, оно должно быть нулевым. Не смог найти однозначного ответа на это.
EOF BYTE C'EOF 'Код объекта 454F46, как они это получили?
45
, 4F
а также 46
это просто коды ASCII для E
, O
а также F
соответственно. Предположительно C
оператор вашего ассемблера инструктирует его испускать код ascii следующих символов.
INPUT BYTE X'F1 'F1, как сгенерировать F1 в объектном коде?
Предположительно X
Оператор вашего ассемблера означает испускать байт с заданным шестнадцатеричным значением.
STCH BUFFER, X 549039 BUFFER - 1039, а STCH в мнемоническом выражении - 54, но не должно ли это быть 541039?
Адрес - только младшие 15 бит. Бит № 15 используется в качестве флага, указывающего режим индексированной адресации, следовательно 1039
становится 9039
,