Написание ассемблера, нужна помощь [закрыто]

9
задан starblue 6 August 2010 в 13:22
поделиться

4 ответа

Вы можете просто скопировать и сгенерировать файл .COM? Он загружается в сегмент кода по адресу: 0100 и выполняется с CS, DS, ES и SS, которые все указывают на этот сегмент.

Если бы вы могли это сделать, то создание кода стало бы НАМНОГО проще.

Ваша тестовая программа будет простой

mov dx, 110
mov ah,9
int 21h
mov ax,4c00
int 21

at address 110:
"Hello, World!" 0d 0a 24
7
ответ дан 4 December 2019 в 19:32
поделиться

Вам нужно отображение между мнемоническими инструкциями, такими как MOV, и кодами операций, см. OpcodeMap . Кроме того, вам нужна информация о том, сколько аргументов (и ширины операторов) требует инструкция (закодированная в битовых полях, что сэкономит вам много времени, если вы все сделаете правильно).

Я сомневаюсь, что книга драконов вам сильно поможет.

Искусство ЯЗЫК АССЕМБЛЕРА ПРОГРАММИРОВАНИЕ - хороший справочник.

1
ответ дан 4 December 2019 в 19:32
поделиться

Книга о драконах - совершенно неправильный источник, потому что ассемблер не является компилятором. "Грамматик" строки на ассемблере чрезвычайно прост (обычный грамматик - не зависит от контекста).

Часть генерации кода для ассемблера почти не существует. Получите хороший справочник по кодам операций вашего целевого процессора и просто сгенерируйте байты, как объяснено.

Есть несколько хороших простых ассемблеров, и вы должны взглянуть на них. Обучение чтению кода — очень эффективный способ для проекта колледжа. Вам это понадобится, потому что код Intel Assembler чрезвычайно уродлив, по крайней мере, если вы хотите настроить таргетинг на некоторые расширения.

3
ответ дан 4 December 2019 в 19:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: