Кластерный компьютер Приемы повышения производительности Двоичная арифметика Программирование на языке ассемблера

Необходимость перевода числа из одной системы счисления в другую обусловлена тем, что пользователю удобнее иметь дело с десятичными или шестнадцатеричными кодами, а ЭВМ работают с двоичными кодами.

Ассемблер

Итак, мы закончили обсуждение архитектуры 8088. Данный раздел посвящен программному обеспечению, позволяющему программировать процессор 8088 на языке ассемблера, в частности, тем инструментальным средствам, которые мы предлагаем в качестве основы для обучения программированию на этом языке. Сначала мы рассмотрим ассемблер (программу ассемблирования), затем — трассер (программу трассировки) и наконец обсудим некоторые практические моменты их применения.

Введение

До настоящего момента мы обозначали команды их мнемониками — краткими и легкими для запоминания символическими именами, как то ADD или СМР. Регистры также назывались символическими именами — АХ, BP и т. д. Программа, написанная с применением символических имен команд и регистров, называется программой на языке ассемблера, или просто ассемблерной программой. Чтобы выполнить такую программу, в первую очередь необходимо преобразовать ее в двоичные числа, с которыми работает процессор. Прикладная программа, которая осуществляет такое преобразование, называется ассемблером. То, что получается в результате работы этой программы (то есть в результате ассемблирования), называется объектным файлом. Многие программы выполняют вызовы уже ассемблированных подпрограмм, хранящихся в библиотеках. Чтобы такие программы могли выполняться, ассемблированный объектный файл и библиотечные подпрограммы, к которым он обращается (а они также существуют в виде объектных файлов), необходимо объединить в исполняемый двоичный файл. Эту операцию проводит специальная программа, называемая компоновщиком. Ассемблирование считается полностью завершенным лишь после сборки компо- новщиком исполняемого двоичного файла из одного или нескольких объектных файлов. Затем операционная система помещает этот файл в память и исполняет его. Архитектура однопроцессорной системы: процессор, память, подсистема ввода-вывода

В первую очередь, ассемблер должен сформировать таблицу символов; с ее помощью имена символических констант и меток отображаются на двоичные числа, которым они фактически соответствуют. Константы, явно определенные в программе, можно разместить в таблице символов без предварительной обработки. Метки же представляют адреса, значения которых не столь очевидны. Для определения этих значений ассемблер проводит построчный анализ программы, называемый первым проходом. Во время этого прохода он отслеживает показания счетчика адресов, который обычно обозначается точкой. При обнаружении на первом проходе каждой команды или операции резервирования памяти счетчик адресов увеличивается на величину, которая выражает объем памяти, необходимый для размещения данного элемента. Таким образом, если первые две команды занимают 2 и 3 байта соответственно, то метка третьей команды принимает численное значение 5. К примеру, если следующий фрагмент кода находится в начале программы, значением метки L будет 5:

M0V АХ, 6 MOV ВХ.500 L:

В начале второго прохода численные значения всех символов уже известны. Так как численные значения мнемонических кодов команд постоянны, становится возможной генерация кода. Команды вновь считываются одна за другой, и их двоичные значения записываются в объектный файл. После ассемблирования последней команды создается объектный файл.

Основание позиционной системы счисления - в узком смысле - количество знаков, используемых для записи чисел в той или иной позиционной системе счисления. Основание показывает, во сколько раз вес каждой цифры в записи числа меньше веса цифры, стоящей в старшем соседнем разряде.
Кластерные вычисления Процессор 8088 Программирование на языке ассемблера