![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 02.06.2009
Сообщений: 218
|
![]()
Добрый день, эта тема не связана с тем как сделать программу на ассме, она связана с С++, но курсовая как раз мне сделать транслятор к ассму. У меня проблема получилась, я не знаю как собрать команду из КОП и операнда. Это происходит на втором этапе транслирования, после того как метки, их адреса;литералы,их адреса уже так сказать я занес в структуры массивов, но проблема у меня появилась на втором этапе транслирования. Я вот просто не понимаю как собрать команду, я ниже предоставлю таблицу машинных кодов и псевдокоманд для того чтобы вы видели с чем мне надо работать:
Код:
Даю еще скрин проги препода, чтобы не писать много а всего лишь вы мне показали там что и на каких строках. |
![]() |
![]() |
![]() |
#2 |
equ asm
Участник клуба
Регистрация: 02.05.2009
Сообщений: 1,605
|
![]()
У вас в таблице маш. команд даны сами оп коды, соответствующей длины, операнды в ней будут зависить от отдельных битов оп кода.
Почитайте напр. это и http://www.intel.com/design/processo...als/253666.pdf http://www.intel.com/design/processo...als/253667.pdf Правда у вас похоже не для x86, но принцип скорее всего тот же.
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4 Последний раз редактировалось Goodwin98; 06.06.2009 в 21:45. |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 02.06.2009
Сообщений: 218
|
![]()
спасибо, сейчас почитаем )
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 15.07.2008
Сообщений: 615
|
![]()
Ребят, а -0xA,0x4 знак 'минус' что обозначает и что значит 0xA и 0x4 смещение и сколько байт занимает в памяти?
xor eax, eax
xchg [eax], eax |
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 02.06.2009
Сообщений: 218
|
![]()
там что то не понятно (
я всеголишь не понимаю, почему вот например в строке 0002, где start, там стоит -C001 или почему в строке 0006, где add, стоит 5602? Лан, первые символы это коды операций,а откуда остальные три символа берутся? |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 02.06.2009
Сообщений: 218
|
![]() |
![]() |
![]() |
![]() |
#7 | |
Форумчанин
Регистрация: 15.07.2008
Сообщений: 615
|
![]() Цитата:
Простите за флуд!
xor eax, eax
xchg [eax], eax |
|
![]() |
![]() |
![]() |
#8 |
equ asm
Участник клуба
Регистрация: 02.05.2009
Сообщений: 1,605
|
![]()
Может быть не правильно, но вот какие мысли мне пришли после наблюдения на картинку.
Числа в опкоде это первый и последний полубайт. Если перед командой стоит минус, значит эта команда не требует указания операндов, т.е. -0xA,0x4 так и останется A004 h. Если он не стоит, значит после команды будет смещение операнда, т.е. "ADD ", 0x5,0x0 станет 5 h +смещение напр x (50h) в итоге получится 5050. А если смещение 601h , то получим 5601h. Насчет псевдокоманд. ORG - устанавливает текущий аддрес BSS - переменная END - конец кода EQU - константа(правда как она выражается здесь я не пойму)
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4 Последний раз редактировалось Goodwin98; 06.06.2009 в 23:35. |
![]() |
![]() |
![]() |
#9 |
somewhere else
Участник клуба
Регистрация: 17.07.2008
Сообщений: 1,409
|
![]()
Совсем недавно делал ассемблер для DOS(текстовый вариант скажем так - показывает сгенеренный код)
http://dump.ru/file/2285357 Может быть чем то поможет. Правда это сделано просто топорным способом - ярый пример индусского кода ![]()
"Тяжело в учении, легко в бою" - А.В. Суворов
|
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 02.06.2009
Сообщений: 218
|
![]()
да, на счет этого я тоже думал, но LDY в строке 0014 все это предположение рушит в пух и прах (
но на следующем скрине показывает что sty что то откуда то берет и мне просто не понятно что вообще они берут а еще я нарисовал укрупненный алгоритм второго прохода ассма |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Не удается собрать программу | Миша | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 7 | 23.12.2008 23:16 |
Собрать статистику счетчика. | Djonson | PHP | 1 | 01.03.2008 18:35 |
Выдернуть куски кода из html-кода | trafbite | Помощь студентам | 7 | 18.08.2007 13:51 |