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

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


msx:basic_dialogue_programming_language:106

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
msx:basic_dialogue_programming_language:106 [2023-02-18 16:45]
GreyWolf [1.6.4. Возведение в степень]
msx:basic_dialogue_programming_language:106 [2023-02-19 16:27] (текущий)
GreyWolf
Строка 4: Строка 4:
 {{anchor:​n106}} {{anchor:​n106}}
 ====== ​ 1.6. Реализация вещественной арифметики на машинном языке ====== ====== ​ 1.6. Реализация вещественной арифметики на машинном языке ======
-FIXME 
  
 <WRAP group> <WRAP group>
 <WRAP half column> \\ </​WRAP>​ <WRAP half column> \\ </​WRAP>​
-<WRAP half column><​WRAP ​justify>+<WRAP half column><​WRAP ​right>
 Изучай все не из тщеславия,​ а ради Изучай все не из тщеславия,​ а ради
 \\ практической пользы. \\ практической пользы.
Строка 85: Строка 84:
 |VMOVMF|2F10h|(HL):​= DAC|VALTYP|B,​C,​D,​E,​H,​L| |VMOVMF|2F10h|(HL):​= DAC|VALTYP|B,​C,​D,​E,​H,​L|
  
-П р и м е р 1.  Записать число в аккумулятор DAC,а затем прочитать его.+{{anchor:​e1060-01}} __//Пример 1//__. Записать число в аккумулятор DAC,а затем прочитать его. ​\\ {{.examples:​1060-01.bas|}} \\ [[+tab|wmsxbpge>​1060-01.bas]]
 <​code>​ <​code>​
 10 CLEAR 200,&​HF000:​DEFUSR=&​HF000 10 CLEAR 200,&​HF000:​DEFUSR=&​HF000
Строка 103: Строка 102:
 </​code> ​                                                   </​code> ​                                                  
  
-П р и м е р 2.  Записать число в аккумулятор ARG,а затем прочитать его.+{{anchor:​e1060-02}} __//Пример 2//__. Записать число в аккумулятор ARG,а затем прочитать его.\\ {{.examples:​1060-02.bas|}} \\ [[+tab|wmsxbpge>​1060-02.bas]]
 <​code>​ <​code>​
 10 CLEAR 200,&​HF000:​DEFUSR=&​HF000 10 CLEAR 200,&​HF000:​DEFUSR=&​HF000
Строка 126: Строка 125:
 <WRAP group> <WRAP group>
 <WRAP half column> \\ </​WRAP>​ <WRAP half column> \\ </​WRAP>​
-<WRAP half column><​WRAP ​justify>+<WRAP half column><​WRAP ​right>
 Наиболее полезны те советы,​ которым Наиболее полезны те советы,​ которым
 \\ легко следовать. \\ легко следовать.
Строка 143: Строка 142:
 |IMOD|323Ah|HL := DE mod HL|A,​B,​C,​D,​E,​H,​L| |IMOD|323Ah|HL := DE mod HL|A,​B,​C,​D,​E,​H,​L|
  
-П р и м е р  3.  Умножение целых чисел (операнды находятся в регистрах HL и DE).+{{anchor:​e1060-03}} __//Пример 3//__. Умножение целых чисел (операнды находятся в регистрах HL и DE).\\ {{.examples:​1060-03.bas|}} \\ [[+tab|wmsxbpge>​1060-03.bas]]
 <​code>​ <​code>​
-   10 CLEAR 200,&​HD000 +10 CLEAR 200,&​HD000 
-   ​20 DEFUSR=&​HD000 +20 DEFUSR=&​HD000 
-   ​30 I=&​HD000 +30 I=&​HD000 
-   ​40 READ A$:IF A$="​z"​ THEN A=USR(0):​PRINT PEEK(&​H9000):​END +40 READ A$:IF A$="​z"​ THEN A=USR(0):​PRINT PEEK(&​H9000):​END 
-   ​60 POKE I,​VAL("&​h"​+A$):​I=I+1:​GOTO 40 +60 POKE I,​VAL("&​h"​+A$):​I=I+1:​GOTO 40 
-   ​90  DATA 21,​0A,​00:' ​ LD   ​HL,​000Ah ​ ; Загрузка регистра HL константой +90  DATA 21,​0A,​00:' ​ LD   ​HL,​000Ah ​ ; Загрузка регистра HL константой 
-   ​100 DATA 11,​04,​00:' ​ LD   ​DE,​0004h ​ ; Загрузка регистра DE константой +100 DATA 11,​04,​00:' ​ LD   ​DE,​0004h ​ ; Загрузка регистра DE константой 
-   ​110 DATA CD,​93,​31:' ​ CALL 3193h     ; Вызов нужной подпрограммы  +110 DATA CD,​93,​31:' ​ CALL 3193h     ; Вызов нужной подпрограммы  
-   ​120 DATA 22,​00,​90:' ​ LD   ​(9000h),​HL +120 DATA 22,​00,​90:' ​ LD   ​(9000h),​HL 
-   ​130 DATA C9      :' ​ RET +130 DATA C9      :' ​ RET 
-   ​140 DATA "​z" ​    :'​+140 DATA "​z" ​    :'​
 </​code>​ </​code>​
  
Строка 161: Строка 160:
 ===== 1.6.3. Арифметические операции над вещественными числами ===== ===== 1.6.3. Арифметические операции над вещественными числами =====
  
-^  Имя \\ подпрограммы ​ ^  Адрес ​ ^  Выполняемые \\ действия ​ ​^ ​ //​Тип// ​ ​^ ​ Изменяемые \\ регистры ​ ^+^  Имя \\ подпрограммы ​ ^  Адрес ​ ^  Выполняемые \\ действия ​ ^  Изменяемые \\ регистры ​ ^
 |DECSUB|268Ch|DAC := DAC-ARG|A,​B,​C,​D,​E,​H,​L,​DAC| |DECSUB|268Ch|DAC := DAC-ARG|A,​B,​C,​D,​E,​H,​L,​DAC|
 |DECADD|269Ah|DAC := DAC+ARG|A,​B,​C,​D,​E,​H,​L,​DAC| |DECADD|269Ah|DAC := DAC+ARG|A,​B,​C,​D,​E,​H,​L,​DAC|
Строка 181: Строка 180:
 |SGN|2E97h|DAC := SGN(DAC)|A,​H,​L,​DAC| |SGN|2E97h|DAC := SGN(DAC)|A,​H,​L,​DAC|
  
-П р и м е р 4. Сумма двух вещественных чисел.+{{anchor:​e1060-04}} __//Пример 4//__. Сумма двух вещественных чисел.\\ {{.examples:​1060-04.bas|}} \\ [[+tab|wmsxbpge>​1060-04.bas]]
 <​code>​ <​code>​
 10 CLEAR 200,&​HF000:​DEFUSR=&​HF000 10 CLEAR 200,&​HF000:​DEFUSR=&​HF000
Строка 204: Строка 203:
 </​code>​ </​code>​
  
-П р и м е р 5. Возведение в степень.+{{anchor:​e1060-05}} __//Пример 5//__. Возведение в степень.\\ {{.examples:​1060-05.bas|}} \\ [[+tab|wmsxbpge>​1060-05.bas]]
 <​code>​ <​code>​
 10 CLEAR 200,&​HF000:​DEFUSR=&​HF000 10 CLEAR 200,&​HF000:​DEFUSR=&​HF000
Строка 227: Строка 226:
 </​code>​ </​code>​
  
-П р и м е р 6 Вычисление значения функции синус ​ вещественного ​ аргумента.+{{anchor:​e1060-05}} __//Пример ​5//__. Вычисление значения функции синус ​ вещественного ​ аргумента.\\ {{.examples:​1060-05.bas|}} \\ [[+tab|wmsxbpge>​1060-05.bas]]
 <​code>​ <​code>​
 10 CLEAR 200,&​HF000:​DEFUSR=&​HF000 10 CLEAR 200,&​HF000:​DEFUSR=&​HF000
Строка 244: Строка 243:
 </​code>​ </​code>​
  
-П р и м е р 7.  Генерация псевдослучайного числа.+{{anchor:​e1060-07}} __//Пример 7//__. Генерация псевдослучайного числа.\\ {{.examples:​1060-07.bas|}} \\ [[+tab|wmsxbpge>​1060-07.bas]]
 <​code>​ <​code>​
 10 CLEAR 200,&​HF000:​DEFUSR=&​HF000 10 CLEAR 200,&​HF000:​DEFUSR=&​HF000
Строка 263: Строка 262:
 </​code>​ </​code>​
  
-П р и м е р  8.  Вычислить значение функции двух переменных z = cos(x)+ sin(y)+{{anchor:​e1060-08}} __//Пример 8//__. Вычислить значение функции двух переменных z = cos(x)+ sin(y)\\ {{.examples:​1060-08.bas|}} \\ [[+tab|wmsxbpge>​1060-08.bas]]
 <​code>​ <​code>​
 10 CLEAR 200,&​HF000:​DEFUSR=&​HF000:​T=0 10 CLEAR 200,&​HF000:​DEFUSR=&​HF000:​T=0
Строка 300: Строка 299:
  
 ^  Имя подпрограммы ​ ^  Адрес ​ ^  Выполняемые действия ​ ^  //​Тип// ​ ^ ^  Имя подпрограммы ​ ^  Адрес ​ ^  Выполняемые действия ​ ^  //​Тип// ​ ^
-|SNGEXP|37C8h|DAC := DAC^ARG|Одинарная точность| +|SNGEXP|37C8h|%% DAC := DAC^ARG ​%%|Одинарная точность| 
-|DBLEXP|37D7h|DAC := DAC^ARG|Двойная точность| +|DBLEXP|37D7h|%% DAC := DAC^ARG ​%%|Двойная точность| 
-|INTEXP|383Fh|DAC := DE^HL|Целая|+|INTEXP|383Fh|%% DAC := DE^HL %%|Целая|
  
-П р и м е р  9.   ​Вычислить 3² .+{{anchor:​e1060-09}} __//Пример 9//__. Вычислить 3².\\ {{.examples:​1060-09.bas|}} \\ [[+tab|wmsxbpge>​1060-09.bas]]
 <​code>​ <​code>​
 10 CLEAR 200,&​HF000:​DEFUSR=&​HF000 10 CLEAR 200,&​HF000:​DEFUSR=&​HF000
Строка 323: Строка 322:
 ===== 1.6.5. Сравнение ===== ===== 1.6.5. Сравнение =====
    
-<​code>​ + ​Имя подпрограммы ​ ^  ​Адрес ​ ​^  ​Тип ​ ​^ ​ Левая ​часть ​условия ​ ^  Правая ​часть ​условия ​ ^  ​Изменяемые регистры  ​^ 
-  ┌────────┬───────┬─────────┬───────┬───────┬───────────────────────┐ +|FCOMP|2F21h|Single|CBED|DAC|HL| 
-  │   Имя ​ ​│ ​      ​│ ​        │ Левая │ Правая│ ​                      │ +|ICOMP|2F4Dh|Integer|DE|HL|HL| 
-  │ подпро-│ Адрес ​│   Тип ​  │ часть ​│ часть ​│  ​Изменяемые регистры  ​ +|XDCOMP|2F5Ch|Double|ARG|DAC|A,​B,​C,​D,​E,​H,​L|
-  │ граммы │       ​│ ​        ​│условия│условия│ ​                      │ +
-  ├────────┼───────┼─────────┼───────┼───────┼───────────────────────┤ +
-  │ FCOMP  ​│ ​2F21h │ Single ​ ​│  ​CBED │  ​DAC  ​│ ​          HL          │ +
-  ​│ ​ICOMP  ​│ ​2F4Dh │ Integer ​│   DE  ​│ ​  HL  ​│ ​          HL          │ +
-  ​│ ​XDCOMP ​│ 2F5Ch │ Double ​ ​│  ​ARG  ​│  ​DAC  ​│ ​     ​A,​B,​C,​D,​E,​H,​L ​   │ +
-  └────────┴───────┴─────────┴───────┴───────┴───────────────────────┘ +
-   ​Подпрограмма возвращает следующее содержимое регистра A +
-         -1, если ​ левая часть условия < правой части условия,​ +
-          0, если ​ левая часть условия = правой части условия,​ +
-          1, если ​ левая часть условия > правой части условия.+
  
-   П р и м е р 10.  Сравнение двух вещественных чисел. +Подпрограмма возвращает следующее содержимое регистра A 
-   ────────────── +  * -1, если ​ левая часть условия < правой части условия,​ 
-   ​10 CLEAR 200,&​HD000:​DEFUSR=&​HD000 +  * 0, если ​ левая часть условия = правой части условия,​ 
-   ​20 DATA 21,​00,​00 ​         :'​LD ​ HL,​address(N1)  +  * 1, если ​ левая часть условия > правой части условия. 
-   ​30 DATA CD,​5C,​2C ​         :'​LD ​ DAC,​(HL) ​     + 
-   ​40 DATA 21,​00,​00 ​         :'​LD ​ HL,​address(N2)  +{{anchor:​e1060-10}} __//​Пример 10//__. Сравнение двух вещественных чисел.\\ {{.examples:​1060-10.bas|}} \\ [[+tab|wmsxbpge>​1060-10.bas]] 
-   ​50 DATA CD,​50,​2C ​         :'​LD ​ ARG,(HL) +<​code>​ 
-   ​60 DATA CD,​5C,​2F ​         :'​Сравнить DAC и ARG +10 CLEAR 200,&​HD000:​DEFUSR=&​HD000 
-   ​70 DATA 32,​00,​F1 ​         :'​LD ​ (F100h),A  +20 DATA 21,​00,​00 ​         :'​LD ​ HL,​address(N1)  
-   ​90 DATA C9                :'​RET ​             +30 DATA CD,​5C,​2C ​         :'​LD ​ DAC,​(HL) ​     
-   ​100 FOR T=0 TO &​H12:​READ Z$:POKE &​HD000+T,​VAL("&​h"​+Z$):​NEXT +40 DATA 21,​00,​00 ​         :'​LD ​ HL,​address(N2)  
-   ​110 INPUT"​Left";​N1:​INPUT"​Right";​N2 +50 DATA CD,​50,​2C ​         :'​LD ​ ARG,(HL) 
-   ​120 A$=HEX$(VARPTR(N1)):​B$=HEX$(VARPTR(N2)) +60 DATA CD,​5C,​2F ​         :'​Сравнить DAC и ARG 
-   ​130 L1$=RIGHT$(A$,​2):​L2$=RIGHT$(B$,​2) +70 DATA 32,​00,​F1 ​         :'​LD ​ (F100h),A  
-   ​140 H1$= LEFT$(A$,​2):​H2$= LEFT$(B$,​2) +90 DATA C9                :'​RET ​             
-   ​150 POKE &​HD001,​VAL("&​h"​+L1$):​POKE &​HD002,​VAL("&​h"​+H1$) +100 FOR T=0 TO &​H12:​READ Z$:POKE &​HD000+T,​VAL("&​h"​+Z$):​NEXT 
-   ​160 POKE &​HD007,​VAL("&​h"​+L2$):​POKE &​HD008,​VAL("&​h"​+H2$) +110 INPUT"​Left";​N1:​INPUT"​Right";​N2 
-   ​180 H=USR(H):​A=PEEK(&​HF100) +120 A$=HEX$(VARPTR(N1)):​B$=HEX$(VARPTR(N2)) 
-   ​190 IF A=255 THEN PRINT"​LEFT < RIGHT"​ +130 L1$=RIGHT$(A$,​2):​L2$=RIGHT$(B$,​2) 
-   ​200 IF A=1 THEN PRINT"​LEFT > RIGHT"​ +140 H1$= LEFT$(A$,​2):​H2$= LEFT$(B$,​2) 
-   ​210 IF A=0 THEN PRINT"​LEFT = RIGHT"+150 POKE &​HD001,​VAL("&​h"​+L1$):​POKE &​HD002,​VAL("&​h"​+H1$) 
 +160 POKE &​HD007,​VAL("&​h"​+L2$):​POKE &​HD008,​VAL("&​h"​+H2$) 
 +180 H=USR(H):​A=PEEK(&​HF100) 
 +190 IF A=255 THEN PRINT"​LEFT < RIGHT"​ 
 +200 IF A=1 THEN PRINT"​LEFT > RIGHT"​ 
 +210 IF A=0 THEN PRINT"​LEFT = RIGHT"
 </​code>​ </​code>​
  
Строка 364: Строка 358:
 ===== 1.6.6. Преобразование типов ===== ===== 1.6.6. Преобразование типов =====
  
-<​code>​ + ​Имя подпрограммы ​ ^  ​Адрес ​ ​^  ​Выполняемые действия ​ ^ 
-    ┌────────┬───────┬──────────────────────────────────────────────┐ +|FRCINT|2F8Ah|Содержимое DAC преобразуется к целому типу| 
-    │  ​Имя ​  │       ​│ ​                                             │ +|FRCSNG|2FB2h|Содержимое DAC преобразуется к типу одинарной точности| 
-    │ подпро-│ Адрес ​│            ​Выполняемые действия ​             │ +|FRCDBL|303Ah|Содержимое DAC преобразуется к типу двойной точности| 
-    │ граммы │       ​│ ​                                             │ +|FIXER|30BEh|DAC:​=SGN(DAC)·INT(ABS(DAC))| 
-    ├────────┼───────┼──────────────────────────────────────────────┤ + 
-    ​│ ​FRCINT ​│ 2F8Ah │ Содержимое DAC преобразуется к целому типу ​  │ +После выполнения подпрограммы в ячейке с именем ​ VALTYP будет находиться код типа числа, находящегося в DAC.
-    ​│ ​FRCSNG ​│ 2FB2h │ Содержимое DAC преобразуется к типу одинарной│ +
-    │        │       ​│ ​                 ​точности ​                   │ +
-    ​│ ​FRCDBL ​│ 303Ah │ Содержимое DAC преобразуется к типу двойной ​ │ +
-    │        │       ​│ ​                 ​точности ​                   │ +
-    ​│ ​FIXER  ​│ ​30BEh │          ​DAC:​=SGN(DAC)·INT(ABS(DAC)) ​        │ +
-    ​└────────┴───────┴──────────────────────────────────────────────┘ +
-   ​После выполнения подпрограммы в ячейке с именем ​ VALTYP будет находить+
-ся код типа числа, находящегося в DAC. +
-</​code>​+
  
 {{anchor:​n1067}} {{anchor:​n1067}}
 ===== 1.6.7. Преобразование чисел для вывода на печать ===== ===== 1.6.7. Преобразование чисел для вывода на печать =====
  
 +Для преобразования из //​строки//​ в //​число//​ используется подпрограмма с именем
 +
 +FIN (3299h)
 +  * __//​Аргументы//​__:​
 +    * HL — адрес строки символов,​
 +    * A — первый символ строки.
 +  * __//​Результаты//​__:​
 +    * DAC — вещественное число,
 +      * C —
 +        * 0 — была десятичная точка,
 +        * FFh — десятичной точки не было,
 +      * B — количество цифр после десятичной точки,
 +      * D — количество цифр в числе.
 +
 +
 +Для //​вывода//​ имеются две подпрограммы:​
 +  * FOUT (3425h) — неформатный вывод,
 +  * PUFOUT (3426h) — форматный вывод.
 +
 +Эти подпрограммы преобразуют число, находящееся в DAC, в строку ​ символов.
 +
 +__Аргументы__: ​
 +  * A - формат;​ содержимое его битов может быть следующим:​
 +    * bit7: если 1, то вывод осуществляется по формату;​
 +    * bit6: если 1, то через каждые 3 цифры вставляются запятые;​
 +    * bit5: если 1, то первые нули заменить на символ "​*";​
 +    * bit4: если 1, то перед числом вставить символ "​$";​
 +    * bit3: если 1, то число выводится всегда со знаком;​
 +    * bit2: если 1, то вставить знак после числа;
 +    * bit1:     не используется;​
 +    * bit0:
 +      * если 0, то число выводится с фиксированной точкой;​
 +      * если 1, то число выводится с плавающей точкой;​
 +  * B — количество цифр перед точкой;​
 +  * C — количество цифр после точки + 1.
 +__Результаты__: ​ HL — начальный адрес строки символов.
 +
 +{{anchor:​e1060-11}} __//​Пример 11//__. Вычисление косинуса вещественного числа.\\ {{.examples:​1060-11.bas|}} \\ [[+tab|wmsxbpge>​1060-11.bas]]
 <​code>​ <​code>​
-   ​Для преобразования ​ из  с т р о к и  в  ч и с л о  используется подпро- +10 CLEAR 200,&​HD000:​DEFUSR=&​HD000:​A=&​HD000 
-грамма с именем +20 A=A+1:READ R$:IF R$="​z"​ THEN 40 
-  ┌────────────────────────────────────────────────────────────────────┐ +30 POKE A,​VAL("&​h"​+R$):​GOTO 20 
-  │   FIN (3299h) ​                                                     │ +40 M=USR(0) 
-  │   А р г у м е н т ы:    HL  - адрес строки символов, ​              │ +50  DATA CD,B4,00 :'CALL 00B4h     ;​Ввод строки с клавиатуры 
-  │   ​───────────────── ​    ​A ​  - первый символ строки. ​               │ +60  DATA 23       :'​INC ​ HL 
-  │   Р е з у л ь т а т ы:  DAC - вещественное число, ​                 │ +70  DATA 7E       :'​LD ​  ​A,​(HL) 
-  │   ​─────────────────── ​  ​C ​  - { 0 - была десятичная точка, ​        │ +80  DATA CD,99,32 :'CALL 3299h     ;​Преобразование из строки в число 
-  │                               { FFh - десятичной точки не было, ​   │ +90  DATA 3E,08    :'​LD ​  ​A,​08h 
-  │                     ​B ​  - количество цифр после десятичной точки, ​ │ +100 DATA 32,63,F6 :'​LD ​  ​(F663h),​A ;​VALTYP:​=8 
-  │                     ​D ​  - количество цифр в числе. ​                │ +110 DATA CD,93,29 :'CALL 2993h     ;​Нахождение функции COS() 
-  └────────────────────────────────────────────────────────────────────┘ +120 DATA CD,25,34 :'CALL 3425h     ;​Преобразование числа в строку 
-   ​Для ​ в ы в о д а  имеются две подпрограммы:​ +130 DATA 06,11    :'​LD ​  ​B,​11h 
-           ​┌─────────────────────────────────────────────────┐ +140 DATA 7E       :'​LD ​  ​A,​(HL) ​                         ◀───┐ 
-           ​│ ​       FOUT (3425h) -  неформатный вывод, ​      │ +150 DATA 23       :'​INC ​ HL                                  │ 
-           ​│ ​     PUFOUT (3426h) -  форматный вывод. ​        │ +160 DATA CD,A2,00 :'CALL 00A2h     ;​Вывод символа на монитор │ 
-           ​└─────────────────────────────────────────────────┘ +170 DATA 10,F9    :'DJNZ $-5       ;​Конец цикла ​          ​───┘ 
-   ​Эти подпрограммы преобразуют число, находящееся в DAC, в строку ​ симво- +180 DATA C9       :'​RET 
-лов. +190 DATA "​z"​
-Аргументы:​ A - формат;​ содержимое его битов может быть следующим:​ +
-───────── ​     bit7: если 1, то вывод осуществляется по формату;​ +
-               bit6: если 1, то через каждые 3 цифры вставляются запятые;​ +
-               bit5: если 1, то первые нули заменить на символ "​*";​ +
-               bit4: если 1, то перед числом вставить символ "​$";​ +
-               bit3: если 1, то число выводится всегда со знаком;​ +
-               bit2: если 1, то вставить знак после числа;​ +
-               ​bit1: ​    не используется;​ +
-               ​bit0:​{если 0, то число выводится с фиксированной точкой;​ +
-                    {если 1, то число выводится с плавающей точкой;​ +
-           B - количество цифр перед точкой;​ +
-           C - количество цифр после точки + 1. +
-Результаты: ​ HL - начальный адрес строки символов. +
-────────── +
-   П р и м е р 11. Вычисление косинуса вещественного числа. +
-   ​────────────── +
-   10 CLEAR 200,&​HD000:​DEFUSR=&​HD000:​A=&​HD000 +
-   ​20 A=A+1:READ R$:IF R$="​z"​ THEN 40 +
-   ​30 POKE A,​VAL("&​h"​+R$):​GOTO 20 +
-   ​40 M=USR(0) +
-   ​50  DATA CD,B4,00 :'CALL 00B4h     ;​Ввод строки с клавиатуры +
-   ​60  DATA 23       :'​INC ​ HL +
-   ​70  DATA 7E       :'​LD ​  ​A,​(HL) +
-   ​80  DATA CD,99,32 :'CALL 3299h     ;​Преобразование из строки в число +
-   ​90  DATA 3E,08    :'​LD ​  ​A,​08h +
-   ​100 DATA 32,63,F6 :'​LD ​  ​(F663h),​A ;​VALTYP:​=8 +
-   ​110 DATA CD,93,29 :'CALL 2993h     ;​Нахождение функции COS() +
-   ​120 DATA CD,25,34 :'CALL 3425h     ;​Преобразование числа в строку +
-   ​130 DATA 06,11    :'​LD ​  ​B,​11h +
-   ​140 DATA 7E       :'​LD ​  ​A,​(HL) ​                         ◀───┐ +
-   ​150 DATA 23       :'​INC ​ HL                                  │ +
-   ​160 DATA CD,A2,00 :'CALL 00A2h     ;​Вывод символа на монитор │ +
-   ​170 DATA 10,F9    :'DJNZ $-5       ;​Конец цикла ​          ​───┘ +
-   ​180 DATA C9       :'​RET +
-   ​190 DATA "​z"​ +
-   ​Остальные подпрограммы перечислены ниже: +
-        ┌────────┬───────┬────────────────────────────────────────┐ +
-        │  Имя ​  ​│ ​      ​│ ​                                       │ +
-        │ подпро-│ Адрес │         ​Выполняемые действия ​          │ +
-        │ граммы │       ​│ ​                                       │ +
-        ├────────┼───────┼────────────────────────────────────────┤ +
-        │ FOUTB  │ 371Ah │ Целое число ──▶ в двоичный вид ​        │ +
-        │ FOUTO  │ 371Eh │ Целое число ──▶ в восьмеричный вид ​    │ +
-        │ FOUTH  │ 3722h │ Целое число ──▶ в шестнадцатеричный вид│ +
-        └────────┴───────┴────────────────────────────────────────┘ +
-   ​Для этих подпрограмм:​ +
-А р г у м е н т ы:        DAC    - целое число,​ +
-───────────────── ​        ​VALTYP = 2. +
-Р е з у л ь т а т ы:      HL - начальный адрес строки. +
-───────────────────+
 </​code>​ </​code>​
 +
 +Остальные подпрограммы перечислены ниже:
 +^  Имя подпрограммы ​ ^  Адрес ​ ^  Выполняемые действия ​ ^
 +|FOUTB|371Ah|Целое число ──▶ в двоичный вид|
 +|FOUTO|371Eh|Целое число ──▶ в восьмеричный вид|
 +|FOUTH|3722h|Целое число ──▶ в шестнадцатеричный вид|
 +
 +Для этих подпрограмм:​
 +\\ __//​Аргументы//​__:​
 +  * DAC — целое число,
 +  * VALTYP = 2.
 +__//​Результаты//​__:​
 +  * HL — начальный адрес строки.
 +
 +
  
 ---- ----
msx/basic_dialogue_programming_language/106.1676727916.txt.gz · Последние изменения: 2023-02-18 16:45 — GreyWolf