Assembler. С чего начать?

Aivar
akorop
Где-то 1954?
Нет, конечно. 80-90-е. Наиболее вменяемый под Speccy ALASM хоть и именовался макроассемблером...
Я, честно говоря, на Спектруме ассемблер проигнорировал, но, вроде, для Спектрума был адаптирован родной Z80ASM с достаточно стандартными макросердствами (в стиле Intel). Хотя, конечно, он был убог чрезвычайно по сравнению с гораздо более старыми макроассемблером IBM/360,370 AKA ЕС ЭВМ.
Вообще, по-моему, ассемблер без макросредств вообще не заслуживает рассмотрения.
Кроме Alasm пробовал Edasmon, Zeus, Editas и не припоминаю какого либо намека на макросы. Ну, что было под руками...

akorop
ассемблер без макросредств вообще не заслуживает рассмотрения
Для 86-го процессора - возможно. Для Z80, признаться, не представляю, для чего нужен макроассемблер.
Aivar
Кроме Alasm пробовал Edasmon, Zeus, Editas и не припоминаю какого либо намека на макросы. Ну, что было под руками...
akorop
ассемблер без макросредств вообще не заслуживает рассмотрения
Для 86-го процессора - возможно. Для Z80, признаться, не представляю, для чего нужен макроассемблер.
Ровно для того же самого, что и для любого процессора. Для повышения уровня языка, притом заточенного под свою задачу. И чем мощнее макросредства, тем более читаемые программы можно писать. А раз они программы читаются, то и легче сопровождаются.
А голые команды годятся разве что для отписки ради зачёта. Ну или для мелкой вставки или подпрограммы в программе на нормальном языке.
akorop
Для повышения уровня языка
Для повышения уровня языка низкого уровня. Дык, понятно, хоть и звучит абсурдно. Именно поэтому я и высказывался о компактности машинного кода (разумеется, в ущерб простоте написания программы).

А голые команды годятся разве что для отписки ради зачёта. Ну или для мелкой вставки или подпрограммы в программе на нормальном языке.
Не могу согласиться. Я человек старой формации, иногда писал программы в мониторе (если кто не в курсе о чем речь), поэтому, чем писать в Ассемблере, сплошь и рядом используя макросы, по-моему проще работать с "нормальным" языком высокого уровня.
На сем предлагаю прекратить спор. Свою мысль вы донесли и, надеюсь, поняли мою.
И все-таки скажите - на каком языке разговаривает компьютер????
Ошибки не исчезают с опытом - они просто умнеют
vasek, на машинном, разумеется. Если речь не об интерпретаторах, программа, написанная на языке высокого уровня, компилируется в машинный код, непосредственно понимаемый процессором. Интерпретаторы же интерпретируют команды налету.
Aivar
vasek, на машинном, разумеется. Если речь не об интерпретаторах, программа, написанная на языке высокого уровня, компилируется в машинный код, непосредственно понимаемый процессором. Интерпретаторы же интерпретируют команды налету.
Похоже я не совсем точно выразился - тогда спросим так - что такое машинный язык??? И можно ли считать все эти FASM-ы, NASM-ы и им подобные машинным языком???
Ошибки не исчезают с опытом - они просто умнеют
vasek
И можно ли считать все эти FASM-ы, NASM-ы и им подобные машинным языком???
Риторика. Программа Ассемблер и создана, дабы облегчить жизнь пишущему. Ведь гораздо проще запомнить мнемонику, пользоваться метками, другими плюшками в т.ч. и макросами, нежели запоминать шестнадцатеричные (восьмеричные, двоичные...) значения команд, вручную записывать/перемещать массивы данных, прописывать адреса к ним, короче кодить непосредственно в машинном коде.
vasek
Похоже я не совсем точно выразился - тогда спросим так - что такое машинный язык??? И можно ли считать все эти FASM-ы, NASM-ы и им подобные машинным языком???
Машинный язык - это формализованный двоичный код. FASM-ы, NASM-ы(как и любой ассемблер) - это символьная форма записи машинного кода, обвертка поверх последнего, которая представляет инструкции, записанные в двоичном коде, в виде команд.
Aivar и Rarog, все это мне известно и понятно.
Я человек старой теоретической формации и всегда считал, что машинный язык представляет собой набор простых инструкций - то есть, например, процессор компьютера выполняет программные инструкции, типа - записать число в регистр А, записать число в регистр Б, сравнить содержимое регистров А и Б, если они равны, записать число 1 в регистр С..........если значение регистра С равно 1, выполнить инструкцию Х по адресу Д, в противном случае выполнить инструкцию У по адресу Е и т.д. Это я привык называть ассемблером.
Конечно, прогресс на месте не стоит — появляются другие процессоры, другие более приспособленные языки, но в их основе лежит тот же простой ассемблер, то есть он основа всех этих FASM и NASM...... Я их не изучал и не знаю, а потому и хочу докапаться до истины.
Сейчас скажу может быть и ерунду — но не бейте. Представим чисто теоретически — написали программу на простом старом ассемблере, прогнали ее через дизассемблер, на выходе получили то же самое (почти один в один, набор простых инструкций). Сейчас прогоним через дизассемблер (и не говорите, что они все разные) эти FASM и NASM — что мы получим на выходе??? Уверен, что это будет простой набор инструкций и + что то другое, но, главное, это все будет не соответствовать программам написанным на FASM и NASM.
Но, возможно, я просто сильно отстал от всего этого и мои представления сильно устарели.
Ошибки не исчезают с опытом - они просто умнеют
 
Зарегистрироваться или войдите чтобы оставить сообщение.