Как заставить ассемблер переводить инструкции в двоичный формат ⇐ JAVA
Как заставить ассемблер переводить инструкции в двоичный формат
Я пытаюсь создать ассемблер, который преобразует инструкцию языка в 1 или 2 строки двоичного кода. Язык содержит коды операций и регистры. Пример, который я сейчас использую для тестирования, — это инструкция ADD D, A. Что должно быть преобразовано в 00101001, но вместо этого неправильно преобразуется в 001001.
Кодировка инструкций
ЗАГРУЗИТЬ 0000 НАГРУЗКА 0001 ДОБАВИТЬ 0010 СУБ 0011 СПМ 0100 ДГТ 0101 ДЛТ 0110 ДЖЕК 0111 КОПИРОВАТЬ 1000 МАГАЗИН 1001 При включении в инструкцию регистр A кодируется двумя битами 01, а регистр D кодируется двумя битами 10. Например, команда ADD A,D будет кодироваться как 00100110:
0010 (4 старших бита) кодируют ADD 01 (следующие 2 бита) кодируют регистр A 10 (2 младших бита) кодируют регистр D Вот мой метод, который выполняет перевод. Может ли кто-нибудь подсказать мне, что я делаю неправильно.
private void TranslateOneInstruction(String Line) { String[] сегмент = line.split("\\s+"); если (сегмент.длина > 0) { переключатель (сегмент[0]) { случай «ЗАГРУЗИТЬ»: вывод.печать("0000"); перерыв; кейс «ЛОАДА»: вывод.печать("0001"); перерыв; случай «ДОБАВИТЬ»: вывод.печать("0010"); перерыв; кейс «МАГАЗИН»: вывод.печать("1001"); перерыв; по умолчанию: System.err.println("Строка ошибки NNN"); перерыв; } } если (сегмент.длина > 1) { переключатель (сегмент[1]) { случай «А»: вывод.печать("01"); перерыв; случай «Д»: вывод.печать("10"); перерыв; по умолчанию: System.err.println("Строка ошибки NNN"); перерыв; } } }
Я пытаюсь создать ассемблер, который преобразует инструкцию языка в 1 или 2 строки двоичного кода. Язык содержит коды операций и регистры. Пример, который я сейчас использую для тестирования, — это инструкция ADD D, A. Что должно быть преобразовано в 00101001, но вместо этого неправильно преобразуется в 001001.
Кодировка инструкций
ЗАГРУЗИТЬ 0000 НАГРУЗКА 0001 ДОБАВИТЬ 0010 СУБ 0011 СПМ 0100 ДГТ 0101 ДЛТ 0110 ДЖЕК 0111 КОПИРОВАТЬ 1000 МАГАЗИН 1001 При включении в инструкцию регистр A кодируется двумя битами 01, а регистр D кодируется двумя битами 10. Например, команда ADD A,D будет кодироваться как 00100110:
0010 (4 старших бита) кодируют ADD 01 (следующие 2 бита) кодируют регистр A 10 (2 младших бита) кодируют регистр D Вот мой метод, который выполняет перевод. Может ли кто-нибудь подсказать мне, что я делаю неправильно.
private void TranslateOneInstruction(String Line) { String[] сегмент = line.split("\\s+"); если (сегмент.длина > 0) { переключатель (сегмент[0]) { случай «ЗАГРУЗИТЬ»: вывод.печать("0000"); перерыв; кейс «ЛОАДА»: вывод.печать("0001"); перерыв; случай «ДОБАВИТЬ»: вывод.печать("0010"); перерыв; кейс «МАГАЗИН»: вывод.печать("1001"); перерыв; по умолчанию: System.err.println("Строка ошибки NNN"); перерыв; } } если (сегмент.длина > 1) { переключатель (сегмент[1]) { случай «А»: вывод.печать("01"); перерыв; случай «Д»: вывод.печать("10"); перерыв; по умолчанию: System.err.println("Строка ошибки NNN"); перерыв; } } }
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как преобразовать программу C++, генерирующую палиндромы, в ассемблер для SPOJ?
Anonymous » » в форуме C++ - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как заставить EF Core правильно переводить запросы объектов сложных значений в SQL?
Anonymous » » в форуме C# - 0 Ответы
- 5 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как заставить EF Core правильно переводить запросы объектов сложных значений в SQL?
Anonymous » » в форуме C# - 0 Ответы
- 7 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как заставить EF Core правильно переводить запросы объектов сложных значений в SQL?
Anonymous » » в форуме C# - 0 Ответы
- 10 Просмотры
-
Последнее сообщение Anonymous
-