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

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


msx:assembler_programming_guide-fakhrutdinov_bocharov:01

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
msx:assembler_programming_guide-fakhrutdinov_bocharov:01 [2020-05-14 22:16]
GreyWolf
msx:assembler_programming_guide-fakhrutdinov_bocharov:01 [2023-02-04 22:21] (текущий)
GreyWolf [1.1. Редактирование текста программы]
Строка 17: Строка 17:
 Кроме команд в тексте программы на языке ассемблера могут встретиться и директивы ассемблеру. Директивы обычно не транслируются,​ а являются указанием ассемблеру выполнить определенное действие. Кроме команд в тексте программы на языке ассемблера могут встретиться и директивы ассемблеру. Директивы обычно не транслируются,​ а являются указанием ассемблеру выполнить определенное действие.
  
-Для микропроцессора Z80 применимы ассемблеры [[msx:​duad:​duad|]],​ [[msx:​macro-80_assembler:​macro-80_assembler|M80]],​ GEN80, Роботрон-1715 и другие. Кроме различных качественных характеристик они имеют различающиеся наборы директив.+Для микропроцессора ​[[zilog_z80:​zilog_z80|Z80]] применимы ассемблеры [[msx:​duad:​duad|]],​ [[msx:​macro-80_assembler:​macro-80_assembler|M80]], ​[[hisoft_devpac:​hisoft_devpac#​GEN80|GEN80]], Роботрон-1715 и другие. Кроме различных качественных характеристик они имеют различающиеся наборы директив.
  
 +<​WRAP>​
 Оттранслированная машинная программа обычно может быть представлена в одном из двух форматов — ''​.OBJ''​ или ''​.COM''​. Оттранслированная машинная программа обычно может быть представлена в одном из двух форматов — ''​.OBJ''​ или ''​.COM''​.
-Программы типа ''​.OBJ''​ загружаются и выполняются в среде [[msx:​basic:​]] и обычно транслируются с адреса 8000h и выше. Программы типа ''​.COM''​ работают как задачи операционной системы [[msx:​dos|]] и размещаются с адреса 100h.+Программы типа ''​.OBJ''​ загружаются и выполняются в среде [[msx:​basic:​]] и обычно транслируются с адреса 8000h и выше, для запуска используется команда:​ 
 +<WRAP group> 
 +<WRAP half column>​ 
 +<​code>​ 
 +BLOAD"​PROG.OBJ",​r 
 +</​code>​ 
 + 
 +</​WRAP>​ 
 + 
 +<WRAP half column>​ 
 +. 
 +</​WRAP>​ 
 +</​WRAP>​ 
 +Программы типа ''​.COM''​ работают как задачи операционной системы [[msx:dos:|]] и размещаются с адреса 100h. 
 +</​WRAP>​
  
-Разные трансляторы могут давать машинный код для микропроцессоров разных типов, например для Z80 или для Intel 8080.+Разные трансляторы могут давать машинный код для микропроцессоров разных типов, например для ​[[zilog_z80:​zilog_z80|Z80]] или для Intel 8080.
  
  
Строка 28: Строка 43:
 ===== 1.1. Редактирование текста программы ===== ===== 1.1. Редактирование текста программы =====
  
-Итак, мы хотим написать программу. Для этого надо загрузить текстовый редактор (например:​ [[msx:​tor|TOR]],​ MIM, SCED, [[msx:​ted_mysterysoft:​ted_mysterysoft|TED]] или другой). Это можно сделать в [[msx:​dos|]],​ вставив диск с редактором в дисковод и набрав в ответ на приглашение DOS имя редактора:​+Итак, мы хотим написать программу. Для этого надо загрузить текстовый редактор (например:​ [[msx:tor:​tor|TOR]], ​[[msx:mim:|MIM]], SCED, [[msx:​ted_mysterysoft:​ted_mysterysoft|TED]] или другой). Это можно сделать в [[msx:dos:|]], вставив диск с редактором в дисковод и набрав в ответ на приглашение DOS имя редактора:​
 <​code>​ <​code>​
 A>ted A>ted
Строка 79: Строка 94:
 {{anchor:​n121}} {{anchor:​n121}}
 ==== 1.2.1. Ассемблирование в системе DUAD ==== ==== 1.2.1. Ассемблирование в системе DUAD ====
-FIXME 
  
 Как уже говорилось,​ если мы хотим получить файл типа ''​.OBJ'',​ можно воспользоваться ассемблером [[msx:​duad:​duad|]]. Как уже говорилось,​ если мы хотим получить файл типа ''​.OBJ'',​ можно воспользоваться ассемблером [[msx:​duad:​duad|]].
Строка 85: Строка 99:
 Для вызова системы [[msx:​duad:​duad|]] необходимо перейти в режим [[msx:​basic:​]] и набрать команду:​ Для вызова системы [[msx:​duad:​duad|]] необходимо перейти в режим [[msx:​basic:​]] и набрать команду:​
 <​code>​ <​code>​
-run"​DUAD"​+run"​DUAD.BAS"
 </​code>​ </​code>​
  
Строка 93: Строка 107:
 Source ​  : [ файл - исходный текст ] Source ​  : [ файл - исходный текст ]
 List     : [ файл для записи листинга ] List     : [ файл для записи листинга ]
-Object ​  : [ файл для записи оттранслированой программы ]+Object ​  : [ файл для записи оттранслированной программы ]
 Label A  : [ файл для меток и адресов по алфавиту] Label A  : [ файл для меток и адресов по алфавиту]
 Label L  : [ файл для меток и адресов по возрастанию адресов ] Label L  : [ файл для меток и адресов по возрастанию адресов ]
Строка 156: Строка 170:
 Первая директива этой программы сообщает ассемблеру,​ что команды записаны в соответствии с мнемоникой Z80. Первая директива этой программы сообщает ассемблеру,​ что команды записаны в соответствии с мнемоникой Z80.
  
-После записи текста программы в файл с расширением ''​.ASM'',​ не выходя из [[msx:​dos|]] в [[msx:​basic:​]],​ наберите команду вида:+После записи текста программы в файл с расширением ''​.ASM'',​ не выходя из [[msx:dos:|]] в [[msx:​basic:​]],​ наберите команду вида:
 <​code>​ <​code>​
 A>M80 =example.asm/​L A>M80 =example.asm/​L
Строка 239: Строка 253:
  
 В случае успешной трансляции мы можем выполнить нашу программу. В случае успешной трансляции мы можем выполнить нашу программу.
-Для запуска программы типа ​".OBJ" ​надо выйти в [[msx:​basic:​]] и загрузить программу командой:​+Для запуска программы типа ​''​.OBJ'' ​надо выйти в [[msx:​basic:​]] и загрузить программу командой:​
 <​code>​ <​code>​
-Bload"​example.obj",​R+BLOAD"​example.obj",​R
 </​code>​ </​code>​
 Буква ''​R''​ обозначает "​выполнить"​. Машина тут же должна выдать Ok. Так как наша программа уже загружена,​ её можно выполнить снова. Для этого надо определить её как функцию и передать ей управление. Буква ''​R''​ обозначает "​выполнить"​. Машина тут же должна выдать Ok. Так как наша программа уже загружена,​ её можно выполнить снова. Для этого надо определить её как функцию и передать ей управление.
 <​code>​ <​code>​
-Dеfusr ​= &h9000usr(0)+DEFUSR ​= &H9000USR(0)
 </​code>​ </​code>​
  
Строка 252: Строка 266:
 Как Вы могли понять,​ программа написанная нами выше — не что иное, как обыкновенная задержка во времени. Но надо сказать,​ что эту задержку при выполнении Вы не заметите. Это объясняется большой скоростью выполнения программ на языке ассемблера. Поэтому для написания задержек обычно используют пару регистров. Как Вы могли понять,​ программа написанная нами выше — не что иное, как обыкновенная задержка во времени. Но надо сказать,​ что эту задержку при выполнении Вы не заметите. Это объясняется большой скоростью выполнения программ на языке ассемблера. Поэтому для написания задержек обычно используют пару регистров.
  
-Это мы рассмотрим несколько ниже, а сейчас попробуем написать эту же программу,​ но "​оттранслировав"​ самостоятельно и записав через ​BASIC (можно предварительно загрузить в текстовый редактор листинг нашей программы и посмотреть,​ как она оттранслирована):​+Это мы рассмотрим несколько ниже, а сейчас попробуем написать эту же программу,​ но "​оттранслировав"​ самостоятельно и записав через ​[[msx:​basic:​]] ​(можно предварительно загрузить в текстовый редактор листинг нашей программы и посмотреть,​ как она оттранслирована):​
 <​code>​ <​code>​
 10 DATA 06,40        :REM LD   ​B,​40 ​   9000 10 DATA 06,40        :REM LD   ​B,​40 ​   9000
Строка 272: Строка 286:
 Как уже говорилось выше, программу типа ''​.REL''​ нужно обработать редактором связей,​ чтобы получить соответствующую программу типа ''​.COM''​. Как уже говорилось выше, программу типа ''​.REL''​ нужно обработать редактором связей,​ чтобы получить соответствующую программу типа ''​.COM''​.
  
-Для запуска программы с расширением ''​.COM''​ наберите в режиме [[msx:​dos|]] её имя без расширения:​+Для запуска программы с расширением ''​.COM''​ наберите в режиме [[msx:dos:|]] её имя без расширения:​
 <​code>​ <​code>​
 A>​example A>​example
Строка 317: Строка 331:
 No errors in text No errors in text
 </​code>​ </​code>​
-В результате работы ​BASIC–программы с этой подпрограммой должно получиться число 126.+В результате работы ​[[msx:​basic:​]]–программы с этой подпрограммой должно получиться число 126.
  
 Достоинством этого способа передачи данных является возможность передачи и получения из подпрограммы больших массивов информации. Достоинством этого способа передачи данных является возможность передачи и получения из подпрограммы больших массивов информации.
Строка 512: Строка 526:
 exam exam
 </​code>​ </​code>​
 +
  
 ---- ----
Строка 518: Строка 533:
  
  
-{{tag>​MSX ​assembler Programming ​Book_apguidefb on_github}}+{{tag>​MSX Book_apguidefb on_github}}
  
msx/assembler_programming_guide-fakhrutdinov_bocharov/01.1589483804.txt.gz · Последние изменения: 2020-05-14 22:16 — GreyWolf