Вступление.
Всем Привет!
Меня зовут Константин.
Добро пожаловать в мой блог, надеюсь найдешь для себя что ни будь полезное.
Данной публикацией хочется начать цикл статей, где я буду самообучаться программированию. Но что бы жизнь сахаром не казалась, задачу нужно несколько усложнить. Для чего откатиться лет на двадцать - тридцать назад и для изучения данной дисциплины начать с языка ассемблера для процессора Z80. Но сразу же оговорюсь, что обучать я никого не буду, так как сам не умею программировать. Скорее буду ждать обратной связи, с целью перенять чей либо опыт. В своих публикациях я скорее буду описывать свои действия, а так же, что этим я хотел получить и насколько это у меня всё вышло.
Для программирования я выбрал компьютер Sprinter на базе данного процессора. Кому интересно что это за машина, информацию можно найти в интернете.
Я же опишу его кратко.
Выпускалась данная машина конторой Peters Plus, автор Ivan Mac.
Основой является микроконтроллер Z84C1516 с ядром микропроцессора Z80.
Поддерживает до 4Мб ОЗУ, 512кб ПЗУ, 64Кб быстрой памяти, 256кб видеопамяти (может быть установлено 512, но дополнительные 256кб не используются в текущей реализации). Видеоконтроллер позволяет нам выводить картинку в разрешении 320*256 точек при 256 цветах из 24 битной палитры. Либо 640*256 точек при 16 цветах. Имеется два ISA-8 слота, поддержка FDD, HDD, Keyboard PS/2, Com- Mouse, Covox, AY, имеется микросхема часов. Работает на операционной системе Estex DSS.
Это если коротко...
Для программирования буду использовать ассемблер ORGASM.
Это не полноценная версия ассемблера, но как говориться, что имеем на текущий момент. Отладка будет осуществляться монитором отладчиком DEMON.
Источником информации по программированию на языке ассемблера, для меня является старая книжка «Как написать игру на Ассемблере» выпуск 2, для ZX Spectrum. Советую её к прочтению, для тех кто вообще не в курсе, что такое Ассемблер.
Стоит немного оговориться, поскольку я не программист и многих вещей не знаю, то код буду писать с использованием функций операционной системы DOS (Estex DSS).
В общем, что бы не тянуть кота за хвост (бедное животное), начнем как это водится с Hello world!
Все необходимые ссылки постараюсь закрепить в конце статьи.
И так, Hello world!
Для тех кто совсем не в курсе ассемблера, а идти читать книжку лень, немного просвещу... Директива ORG указывает, по какому адресу в памяти компьютера будет располагаться программа, в моём случае это адрес с шестнадцатеричным значением #8100 (33024 dec). Команда процессора LD указывает, что в регистровую пару HL заносится адрес, по которому будет располагаться выводимая на экран строка. Что такое регистры и регистровые пары читаем в интернете/ книгах. В регистр С записываем номер функции #5C, которая и выводит строчку символов на экран, параметром для которой и является значение в регистровой паре HL. но что бы функция заработала, мало прописать её номер в регистре, нужно функцию ещё и вызвать, что и делает следующая команда процессора RST #10.
Последующий код, где в регистр С заносится код функции #41 и вновь вызывается командой RST #10, это всего лишь выход из нашей простенькой программы.
Но написать программу мало, что бы она заработала, её нужно скомпилировать в exe файл, для чего мне нужен компилятор языка ассемблера ORGASM.
В простейшем случае, если исходный файл с кодом программы находится в одной папке с компилятором (кстати нужно сохранить программу под именем main.asm), то достаточно написать в командной строке DOS следующую строчку:
orgasm.exe main.asm main.exe -e
где вначале указываю имя запускного файла компилятора с параметрами следующими друг за дружкой через пробел. main.asm - это мой исходный код, main.exe - это будущий исполняемый файл, а -е - это ключ, который говорит компилятору, что я создаю именно ехе файл. Данный ключ создаст необходимую шапку для моего файла, что в последующем позволит ему запускаться в операционной системе Estex DSS. Без этого ключа, скомпилированный файл запускаться не будет.
После запуска данной (orgasm.exe main.asm main.exe -e) строки, вижу два прохода компилятора, после чего получаю созданный main.ехе файл.
Если всё правильно, то запустив получившийся main.exe файл, на экране мы увидим результат работы моего кода.
Однако, если запускать полученный файл не из под голой DOS, а например из под файлового менеджера, то результат работы программы мы можем не успеть увидеть, так как после выполнения, программа сразу же вернется на экран файлового менеджера. Поэтому, чтобы посмотреть результат работы программы, стоит нажать клавишу ESC.
В общем это было коротенькое вступление. Следующей статьёй немного облагорожу свой текущий код. А в последствии перейду к чему нибудь посложнее.
Ссылки:
nedoPC - Sprinter / About-RUS - browse