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

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


msx:learning_msx_machine_code:learning_msx_machine_code

Это старая версия документа!


Изучение машинного кода MSX (Learning MSX machine code)

Перевод этого материала: Blog : Learning MSX machine code

FIXME

Всем привет!

Вы нашли мой эту статью, это здорово! Он называется «Изучение машинного кода MSX», и именно в этом и состоит её цель: научиться писать программы на машинном коде для компьютера MSX.

Так почему же кто–то хочет этому научиться?

Что ж… это хороший вопрос. Лучшая причина: просто для удовольствия. Вы не заработаете денег, изучив это, вы не получите с этим работу. Вы должны делать это, потому что вам это нравится, в качестве хобби. Для меня, человека, которому почти 50 лет, компьютеры MSX — это ностальгия. Я получил компьютер MSX 1 в восьмидесятых, когда мне было около 12 лет, и он мне очень понравился. Не только для игр, но и для написания собственных программ. Я изучил MSX BASIC, читая компьютерные руководства, компьютерные книги и журналы. Это был мой первый язык программирования, и через некоторое время я достаточно хорошо овладел им, чтобы создавать (простые) программы, такие как текстовое приключение(квест), простая игра с графикой или редактор спрайтов.

Когда я стал старше, я потерял интерес к компьютеру MSX. Я купил другой, более быстрый компьютер и продолжал увлекаться программированием как хобби, изучая новые языки, такие как Pascal, Actionscript, Javascript и Python. В какой–то момент продал свой старый MSX 1. Так уж обстоят дела, но, тем не менее, MSX по–прежнему для меня особенный. Когда я вижу в продаже старый компьютер MSX, мне всегда интересно, и я хочу его купить. То же самое и с книгами по MSX, журналами, играми и прочим. Я не покупаю его, потому что знаю, что на самом деле не собираюсь его использовать. К счастью, сейчас есть эмуляторы, и время от времени я играю в некоторые из моих любимых старых игр для MSX, например, Kings Valley или Boulderdash.

Так почему я хочу вернуться к теме программирования на MSX и особенно программированию машинного кода? Просто потому, что это было для меня слишком трудным, когда мне было 12–13 лет. Я прочитал книгу и несколько статей о машинном коде, но не смог понять это. Я немного напортачил с изменением видеопамяти моего MSX с помощью команды VPOKE в MSX BASIC, которая дала некоторые забавные графические эффекты, но я не мог понять, как это на самом деле работает. В то время не было Интернета, чтобы получить информацию или задать вопросы на форуме, поэтому я придерживался MSX BASIC. В настоящее время доступно много информации, и я хочу посмотреть, смогу ли я научиться этому. Просто для развлечения ;-)

Кривая обучаемости

Как я уже говорил, машинный код — не самая простая вещь для изучения. Машинный код сам по себе на самом деле довольно прост и понятен, но для выполнения задач вам понадобится много коротких инструкций, а также немало технических знаний компьютера. Например, возьмем простую задачу, такую ​​как отображение текста на экране. В MSX BASIC это можно сделать, просто введя простую команду и нажав Ввод :

print "Hello world!

Но с машинным языком (который используется для создания машинного кода) это будет выглядеть примерно так:

; bios call to print a character on screen
CHPUT:      equ 0x00a2

            ; the address of our program
            org 0xD000

start:
            ld hl, message
mainLoop:   ld a, (hl)
            cp 0
            ret z
            call CHPUT
            inc hl
            jr mainLoop

message:
            db "Hello world!",0

            ; use the label "start" as the entry point
            end start

После написания этой программы в редакторе вам необходимо перевести (собрать) её в машинный код, затем перенести на свой компьютер или эмулятор, загрузить и выполнить. Это в конечном итоге даёт тот же результат:

А что будет, если в вашей программе будет ошибка? Если вы ошиблись в MSX BASIC, вы получите сообщение об ошибке. Просто выясните, что пошло не так, устраните проблему и попробуйте еще раз:

Но если в вашей программе машинного кода есть ошибка, не так очевидно, что пошло не так. Ваш компьютер может просто выйти из строя. Удачи с этим ;-)

FIXME

Ссылки

msx/learning_msx_machine_code/learning_msx_machine_code.1619681106.txt.gz · Последние изменения: 2021-04-29 10:25 — GreyWolf