Язык ассемблера примеры комманд

April 9, 2010 by admin Комментировать »

Машинные команды — это не что иное, как последовательности нулей и единиц. При подготовке программы работать с такими командами, мягко говоря, неудобно. Поэтому для их представления используются символические имена. Как видите, до сих пор для определения команд мы применяли обычные слова английского языка, такие как Move, Add, Increment и Branch, представляющие соответствую­щие двоичные коды. При написании программ для конкретных компьютеров эти слова обычно заменяются мнемоническими обозначениями, такими как MOV, ADD, INC и BR. Аналогичным образом для ссылки на регистр 3 мы используем обозначение R3, а для ссылки, скажем, на адрес в памяти — обозначение LOC. Полный набор символических имен и правил их применения составляет язык программирования, обычно называемый языком ассемблера. Набор правил ис­пользования мнемонических обозначений для формирования команд определяет синтаксис языка.

Программы, написанные на языке ассемблера, могут автоматически трансли­роваться в последовательность машинных команд с помощью программы, назы­ваемой ассемблером. Ассемблер — это одна из служебных программ, входящих в состав системного программного обеспечения. Как и любая другая программа, ас­семблер хранится в памяти компьютера в виде последовательности машинных команд. Пользовательская программа обычно вводится в компьютер с помощью клавиатуры и сохраняется либо в памяти, либо на магнитном диске. На этом эта­пе она представляет собой просто набор строк, состоящих из буквенно-цифровых символов. Для ее обработки запускается ассемблер, который считывает пользова­тельскую программу, анализирует ее и генерирует соответствующую программу на машинном языке. Эта программа состоит из последовательности нулей и еди­ниц, определяющих команды, которые должны быть выполнены компьютером. Пользовательская программа в исходном текстовом формате называется исход­ной, а ассемблированная программа на машинном языке — объектной. О работе ассемблера мы поговорим в разделе 2.6.2, а пока давайте рассмотрим некоторые аспекты языка ассемблера.

В языке ассемблера конкретного компьютера регистр символов может учиты­ваться, а может и не учитываться, то есть заглавные и прописные буквы в нем мо­гут различаться, а могут не различаться. В этой книге для обозначения имен и ме­ток мы будем использовать заглавные буквы, что, как вы понимаете, облегчит чтение команд. Например, команду Move мы запишем так:

MOVE R0.SUM

Мнемоническое обозначение MOVE представляет собой код операции, то есть двоичную последовательность, соответствующую данной операции. Ассемблер транслирует это обозначение в понятный компьютеру двоичный код операции. За мнемоническим обозначением операции следует как минимум один пробел, а затем информация, определяющая операнды команды. В нашем примере исход­ным операндом является содержимое регистра R0. Далее идет спецификация ре­зультирующего операнда, отделенная от исходного операнда лишь запятой, без разделяющего пробела. Результирующий операнд хранится в памяти, а его дво­ичный адрес представлен именем SUM.

Поскольку существует несколько режимов адресации, позволяющих задавать расположение операндов, язык ассемблера дает возможность указать, какой из режимов адресации используется для конкретного операнда. Например, числовое значение или имя, явно заданное в приведенной выше команде как SUM, может применяться для обозначения абсолютного режима адресации. Символ «#» обыч­но означает, что операнд указан непосредственно. Так, следующая команда

ADD #5,R3

прибавляет число 5 к содержимому регистра R3 и в этот же регистр помещает ре­зультат. Использование символа «#» — не единственный способ обозначения не­посредственной адресации. В некоторых языках ассемблера на непосредственную адресацию указывает мнемоническое обозначение самой команды. Например, приведенная выше команда сложения может быть записана так:

ADDI 5,R3

Суффикс I в мнемоническом обозначении ADDI говорит о том, что исходный операнд команды задан непосредственно (immediate).

Косвенная адресация обычно обозначается с помощью скобок, в которые за­ключается имя операнда, или с помощью специального символа, обозначающего указатель на операнд. Например, если число 5 должно быть помещено в память по адресу, хранящемуся в регистре R2, соответствующее действие задается так:

MOVE #5,(R2)

или так:

MOVEI 5,(R2)

В данном случае суффикс I указывает на косвенную адресацию (indirect).

скачать музыку бесплатно

Оставить комментарий

микросхемы мощности Устройство импульсов питания пример приемника провода витков генератора выходе напряжение напряжения нагрузки радоэлектроника работы сигнал сигнала сигналов управления сопротивление усилитель усилителя усиления устройства схема теория транзистора транзисторов частоты