ZX Spectrum
Game

ZX Spectrum Assembler

McGraw-Hill Book Company UK Ltd (Великобритания),

Автор:

Жанр: Программирование: Asm


Доступные версии

 Неопознанная копия
Играть!
 Неопознанная копия
Играть!
 Оригинальное издание
Играть!

Язык

  • Русский
  • English

Управление

  • Клавиатура(?)

Игроков

  • Один
  • Описание
  • Описание (авт.пер.)
  • Информация

ZX Spectrum

Машинный код

Ассемблер

(С) 1983 АВТОРСКОЕ ACS ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ

Эта лента авторских прав. Вы не сможете записать или скопировать любую часть или части этого Лента любыми средствами.

07 084718 5

ZX Spectrum Machine Code ассемблера

ZX Machine Code ассемблера представляет собой сложный утилита, предназначенная для перевести стандартные ZILOG ассемблерные мнемоники – язык ассемблера – в машине Код.

Есть две версии программы, по одному с каждой стороны кассеты лента. Одним из них является для 16K Spectrum, другой для машины 48К. Перемотка Лента, в случае необходимости, чтобы добраться до начала версию для своей Спектр.

Загрузите ленту в обычном порядке, с LOAD “MGH 48К” или LOAD “MGH 16K” по мере необходимости.

Кроме того, LOAD “” загрузит любую версию.

После того как программа загружается, появится титульный. Нажатие любой Ключ будет казаться, чтобы выполнить «новой», но Ассемблер будет безопасно храниться в с большим объемом памяти компьютера.

Особенности ассемблере

ZX Spectrum Machine Code Ассемблер имеет много функций, предназначенных для обеспечения Программист с максимально возможной каждого из использования. Основными особенностями Монтажник являются: 1. Исходный код (т.е. мнемоники ассемблера) записывается в REM заявления, проводимые в компьютере в виде обычного BASIC листинга.

Это означает, что программа на языке ассемблера набирается в компьютер используя собственную систему редактирования текста спектра в, с которой программист Спектр будет полностью знакомы. Это означает, конечно, что это легко изменить Программа, добавить к нему, или вычесть из него. Это также означает, что в датчике Исходный код может быть сохранен на ленте, или перечислены на экране или принтере в Обычный способ.

2. Ассемблер могут быть направлены для хранения собранной код в любом месте памяти.

Монтажник также могут быть направлены для компиляции кода для запуска в Расположение кроме той, в которой он хранится (полезной, если вы пишете длинные программы и хотите сохранить код временно). Хотя это часто Удобно магазин машинного кода в “манекен REM” заявления (см ниже) в Спектр, решение остается за программистом.

  • 3. Преимущество пути, в котором ZX Spectrum Machine Code Ассемблер имеет был разработан в том, что она, как правило позволяет запускать программы машинного кода с Монтажник еще в памяти компьютера – бесценный функция, когда разработки программ.
  • 4. Монтажник признает ряд псевдо-инструкций. Это либо директивы на ассемблере, или “мини” инструкции, чтобы сделать программирование проще.
  • 5. Реальные этикетки разрешается, и они могут быть любой длины. Это полезный помощь в поиске свой путь вокруг сложный узел-языковые программы.
  • 6. Комментарии могут быть включены в списки, и появится в собранном листинг на экран или принтер.
  • 7. ZX Spectrum Machine Code ассемблера оснащен эффективной ошибки Обнаружение. Если вы сделали ошибку в вашей программе, Монтажник остановится, во время сборки, с указанием должности ошибки и типа Ошибка.

Ассамблея языке программирования

Пользователям ZX Spectrum машинный код ассемблере, как ожидается, быть знакомы с Z80 программирования на языке ассемблера. Если это не так, или если вы хотите улучшить Ваше знание программирования на языке ассемблера с особым акцентом на Синклер Спектр, книга, освоении и использовании языка ассемблера на ZX Spectrum по Тони Вудс, была написана специально, чтобы удовлетворить эту программу ассемблера. Книга публикуется McGraw-Hill (ISBN 07 084 705 3 сентября, 1983) и доступно в хороших книжных магазинах и многих компьютерных магазинах.

Использование ZX Spectrum машинный код ассемблера

Во-первых, вы должны решить, где вы хотите сохранить собранный машинный код

Программа. Если у вас нет причин для использования других ячеек памяти, лучший место, вероятно, в REM заявлении в начале базовую программу.

Первая строка базовой программы, в которых вы пишете на языке ассемблера должны быть “фиктивный” REM о, состоящий из номера строки (1), REM, и как много символов (любого характера), поскольку есть байты в собранном программы. Оставьте достаточно места, как вы всегда можете удалить его позже. Короткая программа может требуют, например, двадцать байт. Манекен REM, выглядит так это:

1 REM 00000000000000000000

На рисунке 1.

В Spectrum, адрес первого символа после РЗМ в REM Заявление в строке 1 программы всегда 23760, если микродрайвы не используются.

Если вы направляете Ассемблер собрать код, начинающийся с этого адреса, Монтажник будет переписана фиктивные символы с кодом. Линия может затем быть сохранены на ленте, или включены в базовую программу позже.

Каждая программа написана для этого ассемблере (или не существует манекен заявление REM в качестве первой линии программы) должны быть с двух псевдо-инструкции, чтобы указать программе, чтобы начать сборку, и сказать ему, где поместить код. Это идут и орг.

Первая строка (или вторая линия, если есть фиктивная REM) должен быть идти, и она должна быть линия по себе.

Второй трубопровод должен быть с орг, хотя он может содержать другие заявления; ZX Spectrum Machine Code Ассемблер принимает несколько операторов в строке, если они разделяются точкой с запятой.

Последняя строка программы на языке ассемблера должен быть конец. Опять же, это должно быть на линии на своем собственном.

Для запуска ассемблера, введите в качестве прямого команды RANDOMIZE USR 58000 для версии 48К, или RANDOMIZE USR 26000 для версии 16K.

Это удобно, чтобы включить это в список, как в последней строке после отделка. Тогда вы можете просто ввести RUN, чтобы начать сборку, BASIC переводчик переступая через все заявления РЗМ и выполнения RANDOMIZE USR в конце.

Структура типичной программы на языке ассемблера Поэтому, как это:

1 REM 00000000000000000000

10 REM идут 20 REM орг 23760 , , , , , , , , (Программа на ассемблере) , , , , , , , , 100 REM отделка 110 RANDOMIZE USR 58000

Рисунок 2.

Особенности языка ассемблера.

В ZX Spectrum Machine Code ассемблера монтажники все стандартные Мнемонические Zilog, но и имеет следующие особенности: 1. Числа могут быть введены в шестнадцатеричной или в десятичной. Числа, как предполагается, быть десятичной если не предшествует $. Алфавитный составляющая шестнадцатеричной число может быть в верхний или нижний регистр букв, или даже смесь из двух.

Ниже приведены все приемлемо: 223 0 27 $ 1AFF $ 1aFf 2. Комментарии могут быть включены в любом месте в списке, за исключением линий содержащий пойти и закончить. Комментарий предшествует восклицание сделать!. Первые 32 символов (только) из комментария появится в собранных списков.

3. Относительные прыжки должен быть дан знак, указывающий направление прыжка. В следующем приемлемы: младший -3 младший г, + 9 младший пс, + $ 1F 4. Наклейки могут быть использованы для обозначения ячеек памяти, адреса которых будут не известно, пока сборка не будет завершена. Наклейки могут быть любой длины с следующие ограничения: первый символ должен быть заглавная буква, и символы ‘)’ и ‘+’ не должны быть использованы. Например, здесь, любая-где, и Z3 / @ $ этикетки являются допустимыми, но эта метка, место (2) и Логический + 1 не являются. Этикетки просто написано в программе, как и любой другой команды.

Есть несколько способов, в которых могут быть использованы метки. Например, Этикетка Mgh можно отнести к одним из следующих способов: LD, (Mgh) LD HL, Mgh позвоните MgH JP NZ, Mgh LD DE, Mgh младший с, Mgh

Самомодифицирующийся код

Наклейки могут быть использованы для записи самомодифицирующийся код. Например, вы, возможно, следующий фрагмент кода: Джонни; LD HL, (23700) Возможно, вы захотите, чтобы ваша программа изменяет адрес, с которого гл загружается (в Другими словами, вы, возможно, захотите изменить два байта в памяти один байт после “Джонни”). Это можно сделать с помощью следующего кода: LD HL, 30000; л.д. (Johnny + 1), гл Когда эта часть программы машинного кода выполняется, он переписывает программу дать: Джонни; LD HL, (30000) Следует отметить, что только +1 и +2 разрешено в этом типе ссылкой этикетки.

Заключительное слово на этикетках. Монтажник хранит имена и адреса метки в таблице. Пространство, выделенное для этой таблицы ограничен. Когда это израсходованы, не больше метки не будут признаны и ссылки на дальнейшие этикеток будет дано сообщение об ошибке. Количество меток, которые вы можете использовать, безусловно, зависит от их Длина. Вы можете иметь около 100 5-символьные метки, но меньше более длинные, так тому и быть скромный и лаконичный!

5. Машина Спектр ZX код ассемблера будет собрать мнемоники, написанные на нижний регистр. Если вы сомневаетесь в том, правильных форм, они перечислены в Приложение, стр 183-188, или Руководство Синклер Спектр.

Псевдо-инструкции

ZX Spectrum Machine Code Ассемблер распознает команды, которые, хотя и не стандартный Z80 на ассемблере, используются, чтобы сделать жизнь проще для программист. Они перечислены здесь:

перейти Это инструкция к ассемблере, чтобы начать сборку. Это

будет игнорировать все, что перед ходу. Смотрите выше.

завершить Эта инструкция сообщает ассемблеру, чтобы закончить сборку. Смотрите выше.

орг Эта инструкция сообщает ассемблеру, где начать сборку

Код. Например, орг 23760 будет инициировать собрание в первой свободной байта в Ваш REM заявление в верхней части вашей программы. По понятным причинам первые Инструкции в вашей программе должен быть орг. Вы можете использовать орг так часто, как вам бы сделать Ассемблер пропустить по новому адресу сборки.

Иногда бывает нужно, чтобы написать программу, которая предназначена для работы в области памяти вокруг адреса 60000 (или вокруг адресу 30000 в 16K Спектр). Это может представлять проблему, потому что это, где ассемблера Сам живет. Сборка код здесь будет перезаписывать Ассемблер и, вероятно, причиной аварии.

Вы можете обойти эту проблему, используя специальную форму орг. Если вас были писать Org 23760 60000 это привело бы к коду быть собраны на 23760, но написано так, что она будет работать неправильно, если переехал в 60000.

Все, что вам нужно сделать сейчас, чтобы использовать Spectrum SAVE “” CODE 23760, Х и LOAD “” КОД 60000, х объект переехать код (или, еще лучше использовать LDIR). Один раз снова, помните, что пространства важны.

DEFB Это позволяет байт по текущему адресу сборки должен быть установлен на

Определенное значение. Это может быть полезно, когда заставляя сообщение об ошибке с RST 8. Например первый 8; DEFB 1 даст сообщение об ошибке “2 Переменная не найдена”.

DEFB можно использовать, чтобы положить ряд чисел в программу. Как и многие номера как требуются можно поставить после DEFB, при условии, что все они в диапазоне 0-255 и Все разделенных пробелами, например: DEFB 23 45 127 254 23 49 0

DEFW основном так же, как DEFB, но устанавливает только два байта. DEFW является

с последующим числом от 0 до 65535 или этикетке, которой он хранит в два байт в стандартном формате для Z80, то есть младший байт первый.

Таким образом DEFW 65200 будут собраны в два байта, начиная с текущего Положение монтаж, 176, 254.

DEFS Это позволяет строка символов ASCII, которые будут вставлены в

памяти в текущей позиции сборки. Например, название компьютера можно хранить с DEFS Синклер спектра. Этот объект имеет неоценимое значение для хранение текст в программе.

фас Иногда, особенно с 16K Spectrum, вы, возможно, захотите написать программу машина-кода в нескольких разделах, а затем соединить их вместе позже. Это нормально, если вы не пытаетесь обратиться к этикеток вне участка Код, который вы в настоящее время пишу. Если вы это сделаете, то метка не будет нашли и произойдет ошибка. Вы можете обойти эту проблему с помощью экв который говорит ассемблеру адрес этикетке. Например фас 23780 Фреда позволит метка Фред быть использованы даже при том, что адрес не Fred в секции кода сборкой.

Сообщения об ошибках

Если идти, отделка, или орг неисправны, то ошибка будет дано до сборки

начинается. Она должна быть достаточно легко обнаружить какие-либо проблемы на этом этапе! Если ошибка обнаружена во время сборки, то сборка остановится два сообщения об ошибках. Первый дается ассемблере, и является мигание Сообщение, что говорит вам номер строки, заявление номер и тип инструкция, где обнаружена ошибка.

Второе сообщение об ошибке генерируется через переводчика Spectrum, и будет одной из четырех сообщений об ошибках: В Integer вне диапазона. Это является результатом ввода номера, который слишком большой, например более чем 255 для одного номера байта, или больше, чем 99999 для десятичного числа. Десятичные числа от 65 536 и 99 999, в Монтажник многократно вычесть 65536, пока не получит разумный ряд возможное использовать.

6 Количество слишком большой. Это указывает на то, что смещение относительный переход находится вне диапазона.

2 Переменная не найдена. Это сообщение об ошибке, если вы обратитесь к несуществующими этикетки, или если переменная таблица заполнена.

Ошибка Q Параметр. Это указывает на ошибку в синтаксисе – орфографическую, пропущенные пробелы, и т.д.

Собранный список

Монтажник сделает два прохода через исходный код, чтобы собрать его,

Второй проход предшествуют сообщения, чтобы указать, что принтер включен.

Листинг будет положить на экране одной странице за раз, и сделает паузу в Конец каждой странице для власти вести.

Собранный список можно перечислять на принтере ZX, на другом принтере системы, которые распознают команду COPY, и на принтерах с использованием соответствующего программного обеспечения заменить функцию командой COPY (см ниже). Копирование листинг на Принтер дается в качестве опции во время листинга собранный код.

Изменения в программе на ассемблере

Чтобы выключить паузу после каждой страницы листинга, так что сборка продолжается

до конца программы, POKE 62679,24: POKE 62680,30 для машины 48К, или POKE 30679,24: POKE 30680,30 для машины 16К.

Другой тип настройке будет включать посылая вывод на Принтер кроме принтера Синклер. Для этого, спектр должен содержат где-то в памяти машины-код рутина эквивалентно копию. В Случай с Centronics интерфейс Кемпстон ​​/ Hilderbay, эта процедура начнется в 65200 (48К) или 32423 (16K). Этот адрес должен быть введен в Ассемблере в два места. Это на 62707/8 и 32720/1 (48К) или 30707/8 и 31720/1 (16K). Это, вероятно, лучше всего сделать с помощью самой Ассемблер, например:

10 REM идут

20 REM орг 62707 30 REM DEFW 65200 40 REM орг 63720 50 REM DEFW 65200 60 REM отделка 70 RANDOMIZE USR 58000

Рисунок 3

Выше по 48К версии. Для версии 16K, используйте следующее:

10 REM идут

20 REM орг 30707 30 REM DEFW 65200 40 REM орг 31720 50 REM DEFW 65200 60 REM отделка 70 RANDOMIZE USR 26000

Рисунок 4

Примеры программ

Наконец, здесь два образца процедуры вы хотели бы попробовать сборку как

демонстрация пути ZX Spectrum Machine Code Ассемблер работает:

1 REM 00000000000000

10 REM идут 20 REM орг 23760 30 REM LD HL, 0 40 REM ADD HL, SP 50 REM LD DE, ($ 5C65) 60 REM и 70 REM SBC HL, де 80 REM PUSH HL 90 REM поп н.э.

100 REM отставке 110 REM отделка 120 RANDOMIZE USR 58000

Рисунок 5

Выше программа, чтобы показать, как много памяти остается свободной после

Программа была введена. Используйте его с PRINT USR 23760.

Следующая программа является высоким разрешением прокрутки. Каждый раз, когда его еще называют, это прокручивает экран вверх на один с высоким разрешением пикселя. Вы называете это с RANDOMIZE USR 23760. Это уже программа, и, чтобы сэкономить место в листинг, несколько строк сведений были использованы.

Существует демонстрационная программа в основном из линии 996 этого перечисления, чтобы показать вам, как работает с высоким разрешением прокрутки. Используйте RUN 1000, чтобы начать демонстрация (после сборки, конечно).

1 REM 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

  • 5 REM идут 10 REM орг 23760 20 REM LD HL, $ 4000; LD B, 3; Loop6; толкать до н.э.
  • 30 REM LD B, 8; Loop5; нажать BC; LD B, 7; loop0; толкать до н.э.
  • 40 REM LD B, $ 20; Loop2; PUSH HL; л.д. де, $ 100; ADD HL, DE; поп-де- 50 REM LD, (HL); Loop1; л.д. (де),; экс-де, гл; INC HL 60 REM DJNZ loop2; л.д. де, $ E0; ADD HL, DE; поп BC; DJNZ loop0 70 REM поп н.э.; л.д., б; ср 1; младший г, Jump1; толкать до н.э., LD B, $ 20 80 REM Loop3; л.д. де, $ 6E0; PUSH HL; и; SBC HL, де, поп-де-; л.д., (гл) 90 REM LD (де),; экс-де, гл; INC HL 100 REM DJNZ Loop3; л.д. де, $ 700, и, к югу гл, де, поп н.э.; dhnz Loop5 110 REM Jump1; поп н.э.; л.д., б; ср 1; младший г, Jump2; нажать BC; LD B, $ 20 120 REM Loop7; л.д. де, $ 20; PUSH HL; ADD HL, DE; поп де; л.д., (гл) 130 REM LD (де),; экс-де, гл; INC HL; DJNZ Loop7; поп н.э.; DJNZ Loop6; Jump2; LD B, $ 20 140 REM Loop4; LD (HL), 0; INC HL; DJNZ Loop4; отставке 150 REM отделка 160 RANDOMIZE USR 58000 996 СТОП 997 REM 998 REM 999 REM демонстрационная программа 1000 PRINT AT 0,0; PAPER 0; “”; AT 21,0; “McGraw-Hill Book Co (UK) Limited” 1010 ЗА = 1 TO 170 1020 RANDOMIZE USR 23760 1030 Далее я 1040 GOTO 1000

Рисунок 6

Оба вышеупомянутые списки для 48К ассемблере. Линии 120 и 160

соответственно должны быть изменены будет, если вы используете версию 16K.

После сборки, вы, возможно, захотите, чтобы сохранить код машины и ничего еще. Чтобы сделать это, просто удалить все строки, кроме строки 1 и сэкономьте в обычный способ. В результате подпрограмма могут быть объединены с основной программой, или новый BASIC программа набрали в.

Два процедуры, перечисленные выше, с любезного разрешения Бобби Рао, и были впервые опубликованы в компьютере журнала.

ПОМОГИТЕ!

Если у вас есть проблемы …

Просто заполните прилагаемом карты, марки и разместить его. Мы предоставляем быстрый (и бесплатно) совет / услуга обмена. Если вы принесли кассету из магазина, пожалуйста не принять его обратно; использовать карту, но сохранить чек. НЕ отправить ленту обратно на данном этапе.

Важно: Мы не можем предложить консультацию о модификации программы на этот лента или о применении вне диапазона считается нормальным для этого типа Программное обеспечение. Программное обеспечение не включает консультации по своему усмотрению

программы, либо в BASIC или на ассемблере.

Играйте в ZX Spectrum Assembler онлайн. Эта утилита для программинга на ASM, выпущенная в Великобритании в 1983 году компанией McGraw-Hill Book Company UK Ltd, которую написал ACS Software.

Не запускается или глючит игра, или не можете пройти? Спросите в комментариях.

Отправить ответ

Уведомлять об
avatar
wpDiscuz
 

Сохранённые игры[X]

  

Справка[X]

Помощь уже в пути!

Не забывайте периодически сохранять игровой прогресс на сервере (клавишей F8), чтобы уверенно продвигаться вперёд!

Если вы гость на сайте, то прогресс будет сохранён только в памяти браузера и потеряется при закрытии. Чтобы этого не произошло - просто войдите в свой профиль.

Для загрузки сохранённой игры жмите F3 или откройте меню "Диск" кнопкой на правой панели.

Если игра не запускается, или у вас есть вопросы по игре - задайте их ниже.

Помощь

Размер

  • x1 [256x192]
  • x2 [512x384]
  • x3 [768x576]
  • Полный

Диск

Кликни в окно эмулятора, чтобы управлять!
<<<<
Close