Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Машинно-зависимые характеристики ассемблера

Поиск

В этом разделе на примере ассемблера для УУМ/ДС мы рассмотрим, как расширение аппаратных возможностей ЭВМ влияет на структуру и функции ассемблера. Архитектура многих реальных ЭВМ похожа на структуру УУМ/ДС. Поэтому в значительной степени наше обсуждение применимо не только к УУМ/ДС, но и к реальным машинам.

На рис.2.5 показано, как предыдущая программа (см. рис.2.1) может быть записана с использованием дополнительных возможностей системы команд УУМ/ДС. Косвенная адресация в нашем языке ассемблера задается добавлением к операнду префикса @ (строка 70). Непосредственный операнд обозначается префиксом # (строки 25, 55, 133). Для команд, в которых есть ссылка на оперативную память, обычно используется либо адресация относительно счетчика команд, либо адресация относительно базы. Директива ассемблера BASE (строка 13) используется в связи со способом адресации относительно базы. (Подробности и примеры см. в разд. 2.2.1.). В не которых командах величина смещения в относительном способе адресации может быть очень большой и для ее размещения будет недостаточно поля 3-байтового командного формата. Для таких команд необходимо использовать 4-байтовый расширенный командный формат. На языке ассемблера этот формат задается добавлением к коду операции префикса + (см. строки 15, 35, 65). Ответственность за правильность спецификации команд расширенного формата возлагается на программиста.

Основное отличие новой версии программы от программы для УУМ заключается в том, что в ней всюду, где это возможно, используются команды вида регистр - регистр (вместо команд вида регистр-память). Например, в строке 150 вместо предложения СОМР ZERO использовано COMPR А, S, а в строке 165 вместо TIХ MAXLEN использовано TIXR Т. Кроме того, всюду, где это возможно, используются непосредственные операнды и косвенная адресация (например, строки 25, 55, 70).

Эти изменения внесены для того, чтобы использовать преимущества архитектуры УУМ/ДС с целью увеличения скорости выполнения программы. Операции вида регистр - регистр быстрее, чем соответствующие операции вида регистр - память. Это связано с тем, что, во-первых, они занимают меньше места в памяти и, во-вторых, что более важно, не требуют дополнительных ссылок в память для выборки операндов. (Выборка операнда из регистра происходит намного быстрее, чем из оперативной памяти.) Точно так же, когда используется непосредственный операнд, то при обработке команды он уже присутствует как ее составная часть, и, следовательно, нет необходимости в его выборке откуда-либо еще. Использование косвенной адресации часто позволяет экономить команду (см. строку 70). Вы можете заметить, что в то же время некоторые изменения требуют внесения в программу дополнительных команд. Например, замена команды СОМР на COMPR в строке 150 вынудила нас добавить команду CLEAR в строку 132. Тем не менее в целом скорость выполнения программы возрастет, так как команда CLEAR выполняется только один раз для каждой читаемой записи, а команда COMPR (более быстрая, чем СОМР) выполняется для каждого байта.

 

Строка Исходное предложение

5 COPY START 0 КОПИРОВАНИЕ ФАЙЛА

10 FIRST STL RETADR СОХРАНЕНИЕ АДРЕСА ВОЗВРАТА

12 LDB #LENGTH УСТАНОВКА БАЗОВОГО РЕГИСТРА

13 BASE LENGTH

15 CLOOP +JSUB RDREC ВВОД ВХОДНОЙ ЗАПИСИ

20 LDA LENGTH ПРОВЕРКА НА EOF (LENGTH = 0)

25 COMP #0

30 JEQ ENDFIL ВЫХОД, ЕСЛИ НАШЛИ EOF

35 +JSUB WRREC ВЫВОД ВЫХОДНОЙ ЗАПИСИ

40 J CLOOP ЦИКЛ

45 ENDFIL LDA EOF ЗАНЕСЕНИЕ МАРКЕРА КОНЦА ФАЙЛА

50 STA BUFFER

55 LDA #3 УСТАНОВИТЬ LENGTH = 3

60 STA LENGTH

65 +JSUB WRREC ЗАПИСЬ EOF

70 J @RETADR ВОЗВРАТ ИЗ ПРОГРАММЫ

80 EOF BYTE C"EOF"

95 RETADR RESW 1

100 LENGTH RESW 1 ДЛИНА ЗАПИСИ

105 BUFFER RESB 4096 ДЛИНА БУФЕРА – 4096 БАЙТ

110 *

115 * ПОДПРОГРАММА ВВОДА ЗАПИСИ НА БУФЕР

120 *

125 RDREC CLEAR X ОБНУЛЕНИЕ СЧЕТЧИКА ЦИКЛА

130 CLEAR A ОБНУЛЕНИЕ РЕГИСТРА А

132 CLEAR S ОБНУЛЕНИЕ РЕГИСТРА S

133 +LDT #4096

135 RLOOP TD INPUT ПРОВЕРКА УСТРОЙСТВА ВВОДА

140 JEQ RLOOP ЦИКЛ ДО ПОЛУЧЕНИЯ ГОТОВНОСТИ

145 RD INPUT ЧТЕНИЕ СИМВОЛА В РЕГИСТР А

150 COMP A,S ПРОВЕРКА НА КОНЕЦ ЗАПИСИ (Х"00")

155 JEQ EXIT ВЫХОД ИЗ ЦИКЛА ПО КОНЦУ ЗАПИСИ

160 STCH BUFFER,X ЗАПИСЬ СИМВОЛА В БУФЕР

165 TIXR T ЦИКЛ ДО ДОСТИЖЕНИЯ МАКСИМАЛЬНОЙ

170 JLT RLOOP ДЛИНЫ

175 EXIT STX LENGTH ЗАПОМИНАНИЕ ДЛИНЫ ЗАПИСИ

180 RSUB ВОЗВРАТ ИЗ ПОДПРОГРАММЫ

185 INPUT BYTE X"F1" КОД УСТРОЙСТВА ВВОДА

195 *

200 * ПОДПРОГРАММА ВЫВОДА ЗАПИСИ ИЗ БУФЕРА

205 *

210 WRREC CLEAR X ОБНУЛЕНИЕ СЧЕТЧИКА ЦИКЛА

212 LDT LENGTH

215 WLOOP TD OUTPUT ПРОВЕРКА УСТРОЙСТВА ВЫВОДА

220 JEQ WLOOP ЦИКЛ ДО ПОЛУЧЕНИЯ ГОТОВНОСТИ

225 LDCH BUFFER,X ЧТЕНИЕ СИМВОЛА ИЗ БУФЕРА

230 WD OUTPUT ВЫВОД СИМВОЛА

235 TIXR T ЦИКЛ, ПОКА НЕ БУДУТ ВЫВЕДЕНЫ

240 JLT WLOOP ВСЕ СИМВОЛЫ

245 RSUB ВОЗВРАТ ИЗ ПОДРОГРАММЫ

250 OUTPUT BYTE X"05" КОД УСТРОЙСТВА ВЫВОДА

255 END FIRST

Рис. 2.5 Пример программы на языке ассемблера УУМ/ДС.

 

В разд. 2.2.1 рассматривается процесс трансляции программы для УУМ/ДС. При этом основное внимание обращено на те отличия ассемблера УУМ/ДС, которые продиктованы новыми способами адресации. (Вам следует взглянуть на форматы команд и способы вычисления целевого адреса, описанные в разд. 1.3.2.). Эти отличия являются прямым следствием расширения аппаратных возможностей.

В разд. 2.2.2 обсуждаются отличия версии ассемблера УУМ/ДС, имеющие косвенную связь с новыми аппаратными возможностями. Например, расширенный объем оперативной памяти УУМ/ДС позволяет предположить, что мы будем иметь достаточно места для одновременной загрузки и исполнения нескольких программ. Такое разделение машины между несколькими программами называется мультипрограммным режимом обработки. Этот режим позволяет более эффективно использовать аппаратуру ЭВМ. (Мы вернемся к этому вопросу в связи с операционными системами в гл. 6.). Однако для того, чтобы полностью использовать преимущества мультипрограммного режима, мы должны иметь возможность загружать программу в любое свободное место оперативной памяти (а не в фиксированное место, определенное во время трансляции). При этом возникает необходимость перемещения программ в оперативной памяти. В разд. 2.2.2 мы обсудим эту проблему в ее связи с ассемблером.



Поделиться:


Последнее изменение этой страницы: 2017-02-17; просмотров: 199; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.141.41.109 (0.005 с.)