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

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


msx:assembler_programming_guide-fakhrutdinov_bocharov:01

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
msx:assembler_programming_guide-fakhrutdinov_bocharov:01 [2020-05-16 00:53]
GreyWolf [1.5.1. Общая память]
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
Строка 155: Строка 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
Строка 238: Строка 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>​
  
Строка 251: Строка 266:
 Как Вы могли понять,​ программа написанная нами выше — не что иное, как обыкновенная задержка во времени. Но надо сказать,​ что эту задержку при выполнении Вы не заметите. Это объясняется большой скоростью выполнения программ на языке ассемблера. Поэтому для написания задержек обычно используют пару регистров. Как Вы могли понять,​ программа написанная нами выше — не что иное, как обыкновенная задержка во времени. Но надо сказать,​ что эту задержку при выполнении Вы не заметите. Это объясняется большой скоростью выполнения программ на языке ассемблера. Поэтому для написания задержек обычно используют пару регистров.
  
-Это мы рассмотрим несколько ниже, а сейчас попробуем написать эту же программу,​ но "​оттранслировав"​ самостоятельно и записав через ​BASIC (можно предварительно загрузить в текстовый редактор листинг нашей программы и посмотреть,​ как она оттранслирована):​+Это мы рассмотрим несколько ниже, а сейчас попробуем написать эту же программу,​ но "​оттранслировав"​ самостоятельно и записав через ​[[msx:​basic:​]] ​(можно предварительно загрузить в текстовый редактор листинг нашей программы и посмотреть,​ как она оттранслирована):​
 <​code>​ <​code>​
 10 DATA 06,40        :REM LD   ​B,​40 ​   9000 10 DATA 06,40        :REM LD   ​B,​40 ​   9000
Строка 271: Строка 286:
 Как уже говорилось выше, программу типа ''​.REL''​ нужно обработать редактором связей,​ чтобы получить соответствующую программу типа ''​.COM''​. Как уже говорилось выше, программу типа ''​.REL''​ нужно обработать редактором связей,​ чтобы получить соответствующую программу типа ''​.COM''​.
  
-Для запуска программы с расширением ''​.COM''​ наберите в режиме [[msx:​dos|]] её имя без расширения:​+Для запуска программы с расширением ''​.COM''​ наберите в режиме [[msx:dos:|]] её имя без расширения:​
 <​code>​ <​code>​
 A>​example A>​example
Строка 511: Строка 526:
 exam exam
 </​code>​ </​code>​
 +
  
 ---- ----
Строка 517: Строка 533:
  
  
-{{tag>​MSX ​assembler Programming ​Book_apguidefb on_github}}+{{tag>​MSX Book_apguidefb on_github}}
  
msx/assembler_programming_guide-fakhrutdinov_bocharov/01.1589579584.txt.gz · Последние изменения: 2020-05-16 00:53 — GreyWolf