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

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


msx:basic_dialogue_programming_language:103

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
msx:basic_dialogue_programming_language:103 [2023-02-05 13:03]
GreyWolf
msx:basic_dialogue_programming_language:103 [2023-02-11 21:40] (текущий)
GreyWolf
Строка 6: Строка 6:
 Кроме подпрограмм [[msx:​bios|BIOS]] в версии [[msx:​disk_basic|]],​ а также в операционной системе [[msx:​dos:​|]] поддерживаются подпрограммы системы [[msx:​bdos|BDOS]]. Кроме подпрограмм [[msx:​bios|BIOS]] в версии [[msx:​disk_basic|]],​ а также в операционной системе [[msx:​dos:​|]] поддерживаются подпрограммы системы [[msx:​bdos|BDOS]].
  
-Подпрограммы BDOS вызываются следующим образом: ​+Подпрограммы BDOS вызываются следующим образом:​
   * α) из операционной системы [[msx:​dos:​|]]:​ <​code>​   * α) из операционной системы [[msx:​dos:​|]]:​ <​code>​
 LD   ​C,​номер подпрограммы LD   ​C,​номер подпрограммы
 CALL 0005h CALL 0005h
 </​code>​ </​code>​
-  * β) из системы [[msx:​disk_basic|]]:<​code> ​+  * β) из системы [[msx:​disk_basic|]]:<​code>​
 LD   ​C,​номер подпрограммы LD   ​C,​номер подпрограммы
 CALL F37Dh CALL F37Dh
 </​code>​ </​code>​
  
-Приведем ​ несколько ​ примеров ​ вызова ​ подпрограмм ​ BDOS  из системы [[msx:​disk_basic|]].+Приведем несколько примеров вызова подпрограмм BDOS из системы [[msx:​disk_basic|]].
  
-{{anchor:​e1030-01}} __//​Пример 1//__. Вывод ​ //​символа//​ на экран.\\ {{.examples:​1030-01.bas|}} \\ [[+tab|wmsxbpge>​1030-01.bas]]+{{anchor:​e1030-01}} __//​Пример 1//__. Вывод //​символа//​ на экран. 
 +\\ {{.examples:​1030-01.bas|}} \\ [[+tab|wmsxbpge>​1030-01.bas]]
 <​code>​ <​code>​
 10 CLEAR 200,&​HC000:​DEFUSR=&​HC000 10 CLEAR 200,&​HC000:​DEFUSR=&​HC000
Строка 29: Строка 30:
 </​code>​ </​code>​
  
-{{anchor:​e1030-02}} __//​Пример 2//__. Попробуем ​ //​уничтожить//​ имя файла с диска.\\ {{.examples:​1030-02.bas|}} \\ [[+tab|wmsxbpge>​1030-02.bas]]+{{anchor:​e1030-02}} __//​Пример 2//__. Попробуем //​уничтожить//​ имя файла с диска.\\ {{.examples:​1030-02.bas|}} \\ [[+tab|wmsxbpge>​1030-02.bas]]
 <​code>​ <​code>​
 10 CLEAR 200,&​HC000:​DEFUSR=&​HC000 10 CLEAR 200,&​HC000:​DEFUSR=&​HC000
Строка 57: Строка 58:
         LD   ​(METKA),​BC ​  ; ла из шестнадцатеричного вида в десятичный         LD   ​(METKA),​BC ​  ; ла из шестнадцатеричного вида в десятичный
         LD   ​(METKA+2),​BC ;         LD   ​(METKA+2),​BC ;
-        LD   ​C,#​20 ​       ; В регистре С - число 20h  (п о ч е м у!?) +        LD   ​C,#​20 ​       ; В регистре С - число 20h (п о ч е м у!?) 
-LOOP1: ​ ADD  HL,HL        ; Сложение ​ и  сдвиги необходимы ​ для установки +LOOP1: ​ ADD  HL,HL        ; Сложение и сдвиги необходимы для установки 
-        RL   ​E ​           ; флага ​  регистра флагов,​ а следовательно,​ и  +        RL   ​E ​           ; флага C регистра флагов,​ а следовательно,​ и 
-        RL   ​D ​           ; для увеличения содержимого регистра E,a затем ​+        RL   ​D ​           ; для увеличения содержимого регистра E,a затем
         PUSH HL           ; и регистра D .         PUSH HL           ; и регистра D .
-        LD   ​HL,​METKA ​    ; Считывание предыдущих результатов ​ вычислений+        LD   ​HL,​METKA ​    ; Считывание предыдущих результатов вычислений
         LD   ​B,#​04 ​       ; и (при выполнении условия переполнения регист-         LD   ​B,#​04 ​       ; и (при выполнении условия переполнения регист-
 ZAPOL: ​ LD   ​A,​(HL) ​      ; ра D) увеличениe их содержимого ZAPOL: ​ LD   ​A,​(HL) ​      ; ра D) увеличениe их содержимого
         ADC  A,A          ; Обратите внимание на эту команду:​ она увеличи-         ADC  A,A          ; Обратите внимание на эту команду:​ она увеличи-
-        DAA               ; вает содержимое регистра А  при установленном+        DAA               ; вает содержимое регистра А при установленном
         LD   ​(HL),​A ​      ; флаге C         LD   ​(HL),​A ​      ; флаге C
         INC  HL           ;         INC  HL           ;
Строка 72: Строка 73:
         POP  HL           ;         POP  HL           ;
         DEC  C            ; Уменьшение значения цикла.         DEC  C            ; Уменьшение значения цикла.
-        JR   ​NZ,​LOOP1 ​    ; На выходе ​ из  этого ​ цикла в ячейках METKA ÷ +        JR   ​NZ,​LOOP1 ​    ; На выходе из этого цикла в ячейках METKA ÷ 
-                          ; METKA+3 будет лежать Ваше число в  десятичном+                          ; METKA+3 будет лежать Ваше число в десятичном
                           ; виде                           ; виде
-        LD   ​BC,#​0410 ​    ; ПервыЙ байт - данные для работы цикла, второй ​+        LD   ​BC,#​0410 ​    ; Первый байт - данные для работы цикла, второй
                           ; байт нужен для коррекции кода числа                           ; байт нужен для коррекции кода числа
         LD   ​HL,​METKA+3 ​  ; Число выводится со старшего байта         LD   ​HL,​METKA+3 ​  ; Число выводится со старшего байта
Строка 92: Строка 93:
         CALL POLBYTE ​     ; Переход на печать старшего полубайта         CALL POLBYTE ​     ; Переход на печать старшего полубайта
         DJNZ PRINT        ;         DJNZ PRINT        ;
-        RET               ; К о н е ц  программы+        RET               ; К о н е ц программы
 POLBYTE:​AND ​ #0F          ; "​Отрезание"​ младшего полубайта POLBYTE:​AND ​ #0F          ; "​Отрезание"​ младшего полубайта
-        JR   ​Z,​SUMMA ​     ; Если это число - нуль, то - печать символа ​+        JR   ​Z,​SUMMA ​     ; Если это число - нуль, то - печать символа
                           ; "​пробел"​                           ; "​пробел"​
         LD   ​C,#​00 ​       ; Иначе - печать самого числа ──────┐         LD   ​C,#​00 ​       ; Иначе - печать самого числа ──────┐
msx/basic_dialogue_programming_language/103.1675591385.txt.gz · Последние изменения: 2023-02-05 13:03 — GreyWolf