Научная литература
booksshare.net -> Добавить материал -> Физика -> Джонс М.Х. -> "Электроника - практический курс" -> 162

Электроника - практический курс - Джонс М.Х.

Джонс М.Х. Электроника - практический курс — М.: Постмаркет, 1999. — 528 c.
ISBN 5-901095-01-4
Скачать (прямая ссылка): elektronika1999.djvu
Предыдущая << 1 .. 156 157 158 159 160 161 < 162 > 163 164 165 166 167 168 .. 195 >> Следующая

еще, например, данные, у процессора нет возможности сообщить, что это не
программа, и он начинает "вкалывать" в предположении, что встречающиеся
числа являются кодами операций, давая лишенные какого-либо смысла
результаты (обычно гаснет экран и нет отклика на нажатие клавиш). Такой
фатальный сбой (аварийный отказ) в системе часто требует выключения
питания, для того чтобы восстановить ситуацию, и хотя никакого вреда при
этом машине не наносится, работа, на которую было потрачено много
времени, может пропасть. Мудрый программист все гда записывает на диск
резервную копию введенной программы перед тем, как попытаться ее
запустить.
14.7.4 Непосредственный ввод в машинном коде и запуск
Нашу простую программу сложения из табл. 14.2, написанную в машинном
коде, можно ввести прямо в память с помощью операций РОКЕ языка Бейсик (в
случае микроЭВМ ВВС Micro этой команде эквивалентна инструкция ladpec).
Хотя это и нудное занятие, но оно дает возможность почувствовать работу
микропроцессора в вашем компьютере. Чтобы испытать программу сложения,
написанную в машинном коде, введите следующие строки в микроЭВМ ВВС
Micro; строки нумеровать не нужно:
?&70 = &А5
452 МикроЭВМ и их применения
?&71 = &80 ?&72 = &18 ?&73 = &65 ?&74 = &81 ?&75 = &85 ?&76 = &82 ?&77 =
&60
Введя программу, мы должны записать два числа, которые хотим сложить, в
зарезервированные нами для этих целей ячейки с адресами &80 и &81
соответственно. Эти числа могут иметь любое значение от 0 до 255 (от &00
до &FF) и могут быть десятичными или шестнадцатеричными. Например, если
наши числа 13 и 19, то следует ввести
?&80 =13 или в шестнадцатеричной записи ?&80 = &D ?&81 = 19 или в
шестнадцатеричной записи ?&81 = &13
Чтобы запустить нашу простенькую программу, мы воспользуемся операционной
системой, которая воспринимает инструкции Бейсика:
CALL &70
Эта инструкция поместит в программный счетчик адрес &70 и начнет
исполнение с этого места в сторону больших адресов. Наша программа будет
выполнена за несколько микросекунд, однако мы не увидим ответ на экране.
Это произойдет потому, что результат останется в ячейке памяти с адресом
&82, куда мы велели процессору поместить его. Команда Бейсика РЕЕК адрес
(эквивалентна ?адрес на микроЭВМ ВВС Micro) предоставляет прямой доступ к
содержимому ячейки, так что мы можем увидеть наш результат, набрав
PRINT7&82
Компьютер, после нажатия <retum>, откликнется выводом на экран
содержимого ячейки с адресом &82, которое в нашем случае есть сумма 13 и
19, то есть 32. Для получения ответа в шестнадцатеричной форме нужно
набрать
PRINT~?&82
На экране появится ответ: 20.
14.7.5 Язык ассемблера
Введенную в компьютер программу в машинном коде, лишенную пояснительных
замечаний, сделанных ранее, фактически невозможно понять.
Программные средства 453
Двоичные коды, используемые процессором, очень далеки от человеческого
языка, и любому программисту трудно и утомительно работать с машинным
кодом. Эта проблема решается с помощью языка ассемблера, в котором
машинный код преобразуется в буквенные аббревиатуры, выбранные так, чтобы
напоминать программисту функцию каждой команды. Например, наша команда
"загрузить аккумулятор" (LoaD Accumulator), которая в машинном коде
записывается как &А5, преобразуется в LDA, что является разумной
аббревиатурой данной функции. Имея в виду, что запись на языке ассемблера
осуществляет напоминание, ее называют мнемонической.
На языке ассемблера так же легко обращаться и с адресами ячеек памяти:
программист может называть их, указывая метки, вместо того, чтобы
обозначать их шестнадцатеричными числами. Поскольку положение каждой
метки относительно начала программы является вполне определенным,
абсолютные значения адресов ячеек, занимаемых программой, более не
существенны, и программа становится перемещаемой - это важное свойство
для подпрограмм, которые могли бы применяться в множестве различных
программ. Метки могут применяться не только для обозначения операндов, но
также и в качестве заголовков отдельных частей программы. Такое
присвоение меток полезно не только для программиста, чтобы напоминать
ему, что делает его программа, но также и в качестве разметки,
позволяющей осуществлять ветвление и переходы в самой программе.
Например, команда условного перехода ВСС SMALL отправит процессор к
подпрограмме, помеченной меткой SMALL, если признак переноса в слове
состояния окажется равным нулю.
Третье полезное свойство языка ассемблера состоит в том, что программист
имеет возможность вносить замечания и пояснительный комментарий в каждую
строку программы. Вставление такого рода документации является жизненно
необходимым для любой программы. Без нее даже сам составитель программы
может забыть доводы и аргументацию в пользу различных подпрограмм и
структур.
Ценность языка ассемблера иллюстрируется на примере программы,
приведенной в табл. 14.3, где наша программа сложения, написанная ранее в
Предыдущая << 1 .. 156 157 158 159 160 161 < 162 > 163 164 165 166 167 168 .. 195 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

Есть, чем поделиться? Отправьте
материал
нам
Авторские права © 2009 BooksShare.
Все права защищены.
Rambler's Top100

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed