Дисковая операционная система для ПК "ZX Spectrum" 1990 г.

Глава 15 - программирование в машинных кодах.


15. ПРОГРАММИРОВАНИЕ
В МАШИННЫХ КОДАХ

Включение TR DOS команды в программы, напи-
санные в машинных кодах, относительно просто. Для
создаваемой с этой целью программы требуется 3 эле-
мента:

1. Машинные коды, эквивалентные БЕЙСИК ко-
манде TR DOS. «

2. Программа в машинных кодах, включающая ко-
ды, упомянутые в п. 1.

3. Программа в машинных кодах для установки си-
стемы в ее исходное состояние перед вызовом и испол-
нением команд.

Размещение полученной программы в памяти ком-
пьютера зависит от самой программы. Рассмотрим
пример, в котором команда SAVE будет располагаться
по адресу 49000, команда LOAD - по адресу 49500, а

с адреса 50000 - инструкции вызова этих команд, ко-
торые являются программой-инициатором.
Пример:

Адреса

коды

БЕЙСИК

пояснения

49000

234

REM

коды символов - см.
рук. к SPECTRUM

49001

58

:

49002

248

SAVE

49003

34

к

49004

60

Е

имя файла
"EXAMPLE"

49005

120

X

49006

97

А

49007

109

М

49008

112

Р

49009

108

L

49010

101

Е

49011

34

••

49012

13

ENTER

в конце всегда дол-
жен стоять код клю-
чевого слова ENTER

Коды для LOAD начинаются с адреса 49500 и они
будут такие же, как показано выше, за исключением
того, что адрес 49502 будет содержать код 239 (LOAD)
вместо 248 (SAVE).

Эти две программы, содержащие LOAD и SAVE,
могут быть размещены в любом месте ОЗУ, но в про-
грамме инициаторе, которую мы размещаем с адреса
50000, потребуется изменение адресов, указанных в
ячейках 50007 - 50008 (адрес команды SAVE) и 50025

- 50026 (адрес команды LOAD), на новые значения
адресов этих команд.

Для измененного размещения указанных команд
сам инициатор требуется переассемблировать. Для об-
легчения этой процедуры ниже приведена программа
в мнемонических кодах Z80:

CHADD EQU 23645 размещение SOS

переменной CHADD

ORG ХХХХ хххх -адрес

программы инициатора

LD HL, начало записывания ис-

(CHADD) тинного CHADD

LD (TEMP), HL временное хранение ис-
тинного CHADD

LD HL, 49000 адрес программы SAVE

LD (CHADD), в CI 1ADD помещается
HL адрес SAVE

CALL 15363 вызов TR DOS - SAVE

через CHADD

JP BACK возврат программы в ис-

ходное положение

LD HL,

(CHADD)

LD (TEMP), HL та же процедура

проводится с LOAD, ио
с другим адресом

LD HL, 49500

LD (CHADD),
HL

CALL 15363

BACK LD HL, (TEMP) начало восстановления

CHADD

LEW (CHADD),. перезагрузка исходной
HL CHADD

RET возврат в ту точку, из

которой была вызвана
метка BACK

TEMP метка, выделяющая ме-

сто в памяти для
временного хранения
данных

Вся полная программа, вызывающая программы
SAVE и LOAD вместе с конечным оператором "возврат
в точку входа" занимает всего 47 байт.




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Вступление - Сегодня 3 января двухтысячного года, я сижу за самым обычным столом, в самой обычной квартире конца 90-х.
Что нового - О новинках в Минске.
Свиток - подробное описание игры Chaos.
Записки программиста - унивкрсальная библиотека для работы с графикой от Вячеслава Медноногова - Graphic Library v1.1
Фак - BIG FUCK SCORPION CLUB

В этот день...   21 ноября