Здесь показаны различия между двумя версиями данной страницы.
msx:basic_programming_guide:101 [2020-11-01 12:53] |
msx:basic_programming_guide:101 [2022-09-09 23:30] (текущий) |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | [<>] | + | ~~HIDEPAGE:search;sitemap~~ |
- | ~~TOC wide~~ | + | ~~REDIRECT>msx:basic_dialogue_programming_language:101~~ |
- | + | ||
- | ====== Приложение 1 — 1.1. Связь программы на MSX BASIC с подпрограммами в машинных кодах ====== | + | |
- | FIXME | + | |
- | + | ||
- | [[bibliography#b92|[92]]], [[bibliography#b96|[96]]], | + | |
- | \\ [ [[msx:msx2_technical_handbook:msx2_technical_handbook|]]: {{msx:msx2_technical_handbook:th-2.txt}} ] | + | |
- | * 4.1 USR Function | + | |
- | * 4.2 Data Exchange by the Argument and Return Value of USR Function | + | |
- | * 4.3 Making New Commands | + | |
- | + | ||
- | {{anchor:def_usr}} | + | |
- | ====== DEF USR ====== | + | |
- | FIXME | + | |
- | + | ||
- | Оператор ''DEF USR'' определяет начальный адрес программы в машинных кодах для последующего использования. Можно использовать до 10 различных программ. Программы нумеруются от 0 до 9. По умолчанию берётся значение 0. | + | |
- | + | ||
- | Синтаксис: | + | |
- | <WRAP group> | + | |
- | <WRAP half column> | + | |
- | <code> | + | |
- | DEF USR номер = адрес | + | |
- | </code> | + | |
- | + | ||
- | </WRAP> | + | |
- | , | + | |
- | <WRAP half column> | + | |
- | + | ||
- | </WRAP> | + | |
- | </WRAP> | + | |
- | где | + | |
- | * //номер// — номер программы в машинных кодах, может находиться в диапазоне от 0 до 9. Если не указано, то 0 | + | |
- | * //адрес// — начальный адрес подпрограммы на в машинных кодах | + | |
- | + | ||
- | + | ||
- | __//Пример//__: | + | |
- | + | ||
- | <code> | + | |
- | DEF USR 1 = &HA000 | + | |
- | </code> | + | |
- | В этом примере указано, что начальным адресом подпрограммы с номером 1 является &HA000. | + | |
- | + | ||
- | {{anchor:usr}} | + | |
- | ====== USR() ====== | + | |
- | + | ||
- | FIXME | + | |
- | + | ||
- | Функция ''USR()'' передает переменную в подпрограмму на машинном языке. Сначала необходимо определить расположение подпрограммы с помощью [[#DEF USR]]. | + | |
- | + | ||
- | Синтаксис: | + | |
- | <WRAP group> | + | |
- | <WRAP half column> | + | |
- | + | ||
- | <code> | + | |
- | USR [номер подпрограммы](аргумент) | + | |
- | </code> | + | |
- | </WRAP> | + | |
- | , | + | |
- | <WRAP half column> | + | |
- | + | ||
- | </WRAP> | + | |
- | </WRAP> | + | |
- | где | + | |
- | * //номер// — номер подпрограммы число в диапазоне от 0 до 9, если не указано то 0 | + | |
- | * //аргумент// — имя переменной, или строка может быть получена машинной подпрограммой, если аргументом является 0 (нуль), в программу в машинных кодах ничего не переносится | + | |
- | + | ||
- | Значение переменной передается подпрограмме в машинных кодах. При вызове программы число байтов, занимаемое этим значением, однозначно связанное с его типом, заносится в регистр А микропроцессора [[zilog_z80:zilog_z80|Z80]] и в ячейку памяти &HF663. Возможные значения: | + | |
- | * 2 — целочисленные | + | |
- | * 3 — строковые | + | |
- | * 4 — вещественные с одинарной точностью | + | |
- | * 8 — вещественные с двойной точностью | + | |
- | + | ||
- | Адрес переменной хранится в регистре HL. | + | |
- | + | ||
- | Для строк имеется небольшое отличие. Адрес, где записана строка, находится в регистре DE. | + | |
- | + | ||
- | ---- | + | |
- | + | ||
- | + | ||
- | [<>] | + | |
- | + | ||
- | + | ||
- | {{tag>MSX BASIC Book_msxbpg}} | + |