Инструменты пользователя

Инструменты сайта


msx:learning_msx_machine_code:learning_msx_machine_code

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
msx:learning_msx_machine_code:learning_msx_machine_code [2021-04-29 10:29]
GreyWolf [Кривая обучаемости]
msx:learning_msx_machine_code:learning_msx_machine_code [2022-09-09 22:33] (текущий)
GreyWolf
Строка 1: Строка 1:
 ====== Изучение машинного кода MSX (Learning MSX machine code) ====== ====== Изучение машинного кода MSX (Learning MSX machine code) ======
  
-Перевод ​этого материала[[https://​learningmsxmachinecode.blogspot.com|Blog : Learning MSX machine code]]+<WRAP center round box 60%> 
 +Данная статья является переводом материала [[https://​learningmsxmachinecode.blogspot.com|Blog : Learning MSX machine code]] 
 + 
 +Некоторые части оригинального материала опущены или заменены. 
 +</​WRAP>​
  
 FIXME FIXME
Строка 14: Строка 18:
 Что ж… это хороший вопрос. Лучшая причина:​ просто для удовольствия. Вы не заработаете денег, изучив это, вы не получите с этим работу. Вы должны делать это, потому что вам это нравится,​ в качестве хобби. Для меня, человека,​ которому почти 50 лет, компьютеры MSX — это ностальгия. Я получил компьютер [[msx:​msx_1|]] в восьмидесятых,​ когда мне было около 12 лет, и он мне очень понравился. Не только для игр, но и для написания собственных программ. Я изучил [[msx:​basic:​|]],​ читая компьютерные руководства,​ компьютерные книги и журналы. Это был мой первый язык программирования,​ и через некоторое время я достаточно хорошо овладел им, чтобы создавать (простые) программы,​ такие как текстовое приключение(квест),​ простая игра с графикой или редактор спрайтов. ​ Что ж… это хороший вопрос. Лучшая причина:​ просто для удовольствия. Вы не заработаете денег, изучив это, вы не получите с этим работу. Вы должны делать это, потому что вам это нравится,​ в качестве хобби. Для меня, человека,​ которому почти 50 лет, компьютеры MSX — это ностальгия. Я получил компьютер [[msx:​msx_1|]] в восьмидесятых,​ когда мне было около 12 лет, и он мне очень понравился. Не только для игр, но и для написания собственных программ. Я изучил [[msx:​basic:​|]],​ читая компьютерные руководства,​ компьютерные книги и журналы. Это был мой первый язык программирования,​ и через некоторое время я достаточно хорошо овладел им, чтобы создавать (простые) программы,​ такие как текстовое приключение(квест),​ простая игра с графикой или редактор спрайтов. ​
  
-Когда я стал старше,​ я потерял интерес к компьютеру MSX. Я купил другой,​ более быстрый компьютер и продолжал увлекаться программированием как хобби, изучая новые языки, такие как Pascal, Actionscript,​ Javascript и Python. В какой–то момент продал свой старый [[msx:​msx_1|]]. Так уж обстоят дела, но, тем не менее, MSX по–прежнему для меня особенный. Когда я вижу в продаже старый компьютер MSX, мне всегда интересно,​ и я хочу его купить. То же самое и с книгами по MSX, журналами,​ играми и прочим. Я не покупаю его, потому что знаю, что на самом деле не собираюсь его использовать. К счастью,​ сейчас есть эмуляторы,​ и время от времени я играю в некоторые из моих любимых старых игр для MSX, например,​ Kings Valley или Boulderdash. ​+Когда я стал старше,​ я потерял интерес к компьютеру MSX. Я купил другой,​ более быстрый компьютер и продолжал увлекаться программированием как хобби, изучая новые языки, такие как ​[[pascal-programming_language:​pascal-programming_language|Pascal]], Actionscript,​ Javascript и [[python:​python|Python]]. В какой–то момент продал свой старый [[msx:​msx_1|]]. Так уж обстоят дела, но, тем не менее, MSX по–прежнему для меня особенный. Когда я вижу в продаже старый компьютер MSX, мне всегда интересно,​ и я хочу его купить. То же самое и с книгами по MSX, журналами,​ играми и прочим. Я не покупаю его, потому что знаю, что на самом деле не собираюсь его использовать. К счастью,​ сейчас есть эмуляторы,​ и время от времени я играю в некоторые из моих любимых старых игр для MSX, например,​ Kings Valley или Boulderdash. ​
  
-Так почему я хочу вернуться к теме программирования на MSX и особенно программированию машинного кода? Просто потому,​ что это было для меня слишком трудным,​ когда мне было 12–13 лет. Я прочитал книгу и несколько статей о машинном коде, но не смог понять это. Я немного напортачил с изменением видеопамяти моего MSX с помощью команды ''​[[msx:​basic_programming_guide:​11#​vpoke|VPOKE]]''​ в [[msx:​basic:​|]],​ которая дала некоторые забавные графические эффекты,​ но я не мог понять,​ как это на самом деле работает. В то время не было Интернета,​ чтобы получить информацию или задать вопросы на форуме,​ поэтому я придерживался [[msx:​basic:​|]]. В настоящее время доступно много информации,​ и я хочу посмотреть,​ смогу ли я научиться этому. Просто для развлечения ;-)+Так почему я хочу вернуться к теме программирования на MSX и особенно программированию машинного кода? Просто потому,​ что это было для меня слишком трудным,​ когда мне было 12–13 лет. Я прочитал книгу и несколько статей о машинном коде, но не смог понять это. Я немного напортачил с изменением видеопамяти моего MSX с помощью команды ''​[[msx:​basic_dialogue_programming_language:​011#​vpoke|VPOKE]]''​ в [[msx:​basic:​|]],​ которая дала некоторые забавные графические эффекты,​ но я не мог понять,​ как это на самом деле работает. В то время не было Интернета,​ чтобы получить информацию или задать вопросы на форуме,​ поэтому я придерживался [[msx:​basic:​|]]. В настоящее время доступно много информации,​ и я хочу посмотреть,​ смогу ли я научиться этому. Просто для развлечения ;-)
  
-===== Кривая обучаемости =====+===== Кривая обучения =====
  
 Как я уже говорил,​ машинный код — не самая простая вещь для изучения. Машинный код сам по себе на самом деле довольно прост и понятен,​ но для выполнения задач вам понадобится много коротких инструкций,​ а также немало технических знаний компьютера. Например,​ возьмем простую задачу,​ такую ​​как отображение текста на экране. В [[msx:​basic:​|]] это можно сделать,​ просто введя простую команду и нажав <​key>'​Ввод '​⏎</​key>:​ Как я уже говорил,​ машинный код — не самая простая вещь для изучения. Машинный код сам по себе на самом деле довольно прост и понятен,​ но для выполнения задач вам понадобится много коротких инструкций,​ а также немало технических знаний компьютера. Например,​ возьмем простую задачу,​ такую ​​как отображение текста на экране. В [[msx:​basic:​|]] это можно сделать,​ просто введя простую команду и нажав <​key>'​Ввод '​⏎</​key>:​
Строка 24: Строка 28:
 print "Hello world! print "Hello world!
 </​code>​ </​code>​
-{{image_001.png|}}+{{helloworldmsx1.png|}} 
 +/* {{image_001.png|}} ​*/
  
 Но с машинным языком (который используется для создания машинного кода) это будет выглядеть примерно так: Но с машинным языком (который используется для создания машинного кода) это будет выглядеть примерно так:
Строка 51: Строка 56:
  
 После написания этой программы в редакторе вам необходимо перевести (собрать) её в машинный код, затем перенести на свой компьютер или эмулятор,​ загрузить и выполнить. Это в конечном итоге даёт тот же результат:​ После написания этой программы в редакторе вам необходимо перевести (собрать) её в машинный код, затем перенести на свой компьютер или эмулятор,​ загрузить и выполнить. Это в конечном итоге даёт тот же результат:​
-\\ {{image_002.png|}}+\\ {{:​msx:​learning_msx_machine_code:​001.bin|}} 
 +\\ [[+tab|wmsx>?​DISK_FILES=/​_media/​msx/​learning_msx_machine_code/​001.bin&​BASIC_BRUN=001.bin|Открыть в WebMSX]] 
 + 
 +/* \\ {{HelloWorldMSX1Asm.png|}}*/​ 
 +/* {{image_002.png|}} ​*/
  
 А что будет, если в вашей программе будет ошибка?​ Если вы ошиблись в [[msx:​basic:​|]],​ вы получите сообщение об ошибке. Просто выясните,​ что пошло не так, устраните проблему и попробуйте еще раз: А что будет, если в вашей программе будет ошибка?​ Если вы ошиблись в [[msx:​basic:​|]],​ вы получите сообщение об ошибке. Просто выясните,​ что пошло не так, устраните проблему и попробуйте еще раз:
-\\ {{image_003.png|}}+\\ {{syntaxerrormsx1.png|}} 
 +/* {{image_003.png|}} ​*/
  
 Но если в вашей программе машинного кода есть ошибка,​ не так очевидно,​ что пошло не так. Ваш компьютер может просто выйти из строя. Удачи с этим ;-) Но если в вашей программе машинного кода есть ошибка,​ не так очевидно,​ что пошло не так. Ваш компьютер может просто выйти из строя. Удачи с этим ;-)
  
 Таким образом,​ изучение машинного кода требует больших усилий. Зачем вообще его изучать?​ Думаю, есть 2 основных преимущества:​ Таким образом,​ изучение машинного кода требует больших усилий. Зачем вообще его изучать?​ Думаю, есть 2 основных преимущества:​
-  ​Скорость \\ Машинный код намного быстрее,​ чем [[msx:​basic:​|]],​ который сначала должен быть «переведен» в машинный код, прежде чем он может быть выполнен. Вы не можете написать быструю графическую игру на [[msx:​basic:​|]]. Для этого вам действительно нужен (некоторый) машинный код. +  ​Скорость \\ Машинный код намного быстрее,​ чем [[msx:​basic:​|]],​ который сначала должен быть «переведен» в машинный код, прежде чем он может быть выполнен. Вы не можете написать быструю графическую игру на [[msx:​basic:​|]]. Для этого вам действительно нужен (некоторый) машинный код. 
-  ​Управляемость \\ Всё, что может предложить компьютер,​ можно получить с помощью машинного кода. В языках программирования высокого уровня нет всех тех возможностей,​ которые есть в машинном коде. Машинный код даёт вам полный контроль.+  ​Управляемость \\ Всё, что может предложить компьютер,​ можно получить с помощью машинного кода. В языках программирования высокого уровня нет всех тех возможностей,​ которые есть в машинном коде. Машинный код даёт вам полный контроль. 
 + 
 +===== А что сейчас?​ ===== 
 + 
 +На данный момент я настоящий новичок в машинном коде. Я собрал много информации (веб–сайты,​ документы,​ книги, …), я  довольно много читал об этом и даже пробовал кое–что. Это очень маленький шаг в мире машинного кода. Итак, как этот материал может помочь кому–то изучить машинный код MSX? У этого материала две цели: 
 +  - Для меня это способ документировать процесс моего обучения,​ чтобы я мог хранить всю эту информацию на будущее.  
 +  - FIXME (For the reader it hopefully provides information to start creating MSX machine code with a slightly less steep learning curve. You can it learn together with me.) \\ Надеюсь,​ что читатель представляет информацию для начала создания машинного кода MSX с немного менее крутой кривой обучения. Вы можете научиться этому вместе со мной.  
 + 
 +Не ждите быстрых результатов с самого начала. Этот материал (пока) не посвящен созданию полнофункциональной графической экшн–игры с классной музыкой и звуковыми эффектами. Нет, это больше о том, чтобы заставить компьютер пищать,​ выводя на экран один символ. Речь идет о понимании основ. Но я могу сказать вам, что даже просто услышать звуковой сигнал,​ созданный машинным кодом, созданным вручную,​ может быть очень приятным… ;-)
  
 FIXME FIXME
 +
  
 ====== Ссылки ====== ====== Ссылки ======
msx/learning_msx_machine_code/learning_msx_machine_code.1619681354.txt.gz · Последние изменения: 2021-04-29 10:29 — GreyWolf