Лекции по ассемблеру / лекц_2
.docАлгебраическое представление двоичных чисел
Знак числа обычно кодируется двоичной цифрой: знак "+" кодируется 0, знак "-" кодируется 1. Если двоичные числа —45 и 31 в форме с запятой, фиксированной после нулевого разряда, сложить, то получим неверный результат 1100.1100 или в десятичной системе счисления -45+31 =-76 (10101101+00011111=11001100). Чтобы арифметические операции над знаковыми числами в ЭВМ можно было бы производить точно также, как и с беззнаковыми переменными, отрицательные числа представляются в дополнительном коде.
Следует упомянуть, что aльтepнaтивными являютcя представления в прямом и обратном коде.
Прямой
код числа
N
–
= -(abs(N).
Такой код и был использован в рассмотренном
выше примере. Недостатки такого
представления:
- операцию вычитания нельзя заменить операцией сложения;
- представление числа 0 неоднозначно.
Обратный код числа получается инверсией двоичных разрядов. Через а обозначим двоичный разряд числа, а через а* - инверсию двоичного разряда (если а=1, то а*=0 и если а=0, то а*=1). Правило получения обратного кода:
если
N>0,
то
=
0aaaaaaa;
если
N<0,
то
=1
а* а* а* а* а* а* а* а*,
если
N=0,
то имеет место неоднозначность
или
.
Например, число 11 в обратном коде представляется как 0.1011, а число с=-7 будет представлено как 1.1000. Сложим эти числа:
0.1011+1.1000= 0.0011+ единица переноса из старшего разряда.
Если единицу пересоса из старшего разряда игнорировать, то результат сложения неверный: 11-7=3. Чтобы получить верный результат, необходимо единицу переноса добавить к младшему разряду результата: 0.1011+1.1000=0.0011+0.0001=0.0100 (11-7=4).
Следовательно,
- представление 0 в обратном коде неоднозначно;
- операцию вычитания можно заменить операцией сложения, однако, если в результате выполнения операции будет получен перенос из старшего (знакового) разряда, эту 1 необходимо добавить к младшему разряду результата, чтобы получилось правильное значение.
В
дополнительном коде положительное
число представляется также, как в прямом
и обратном кодах, т.е. при N>0,
= 0aaaaaaa.
Чтобы получить дополнительный код отрицательного числа:
1) надо взять его положительную форму (взять прямой код положительного числа);
2) обратить каждый бит (иначе говоря, заменить в представлении числа 0 на 1 и 1 на 0);
3) добавить к полученному числу 1 младшего разряда. Например, представим в дополнительном коде число-32:
1) положительная форма числа –0.00100000;
2) обратим биты –1.11011111;
3) добавим 1 —1.11011111 +0.00000001
получим 1.11100000 - дополнительный код числа.
Достоинства такого кода заключается в том, что нуль однозначно представляется кодом 0,0000....0 и, кроме того, операцию вычитания можно заменить операцией сложения.
Недостаток такого представления - при использовании дополнительного кода отрицательное число становится трудно расшифровать. Однако дело облегчается тем, что положительную форму отрицательного числа в дополнительном коде можно получить аналогично вышеописанной методике, выполнив пункты 2 и 3. Проверим на рассмотренном выше примере:
2) обращаем биты 000011111;
3) добавляем 1 + 0.00000001 получим 0.00100000.
Выполнение арифметических операций в компьютере
Правила выполнения арифметических операций для позиционных систем счисления задаются таблицами сложения, вычитания и умножения одноразрядных чисел.
Таблицы для двоичной арифметики будут следующими:
Сложение
0+0=0, 0+1=1, 1+0=1, 1+1=0+единица переноса, 1+1+единица переноса=1+единица переноса;
Вычитание
0-0=0, 1-0=1, 0-1=1+единица заема;
Умножение
0*0=0, 1*0=0, 0*1=0, 1*1=1.
Сложение многоразрядных целых двоичных чисел производится по описанным выше правилам и с учетом переноса или заема единицы из предыдущего разряда. Если из старшего разряда представления многоразрядного целого числа получается единица переноса, такая ситуация называется переполнением разрядной сетки. Большинство программ обработки информации на языках высокого уровня в такой ситуации выдают и прекращает обработку В программах на Ассемблере программист должен сам в своей программе выявлять такие ситуации переполнения и предусматривать соответствующую обработку. При этом программист должен руководствоваться следующими правилами:
определяется наличие переносов из двух старших разрядов числа
- если переносов нет, то результат операции правильный;
- если есть переносы из обеих разрядов, то результат операции тоже правильный;
- если из одного разряда есть перенос, а из другого нет, то результат операции неверный, фиксируется ситуация переполнения.
При использовании дополнительного кода единица переноса из знакового разряда игнорируется.
Как видно из вышеизложенного, правило определения факта переноса оказывается достаточно сложным. Для его упрощения в ЭВМ часто используют модифицированные коды: для изображения знака числа используются 2 двоичных разряда, при этом знак "+" изображается комбинацией 00, а знак "-" -комбинацией 11. Тогда ситуация переполнения определяется при разных значениях битовых разрядов знака, а именно, если в знаковых разрядах получаются комбинации 01 или 10 - значит, произошло переполнение.
Умножение многоразрядных двоичных чисел производится путем образования частичных произведений и последующего их суммирования. Частичные произведения получаются после сдвигов умножителя. Единственной особенностью является то, что если сомножитель является отрицательным (знаковые разряды равны 11), то перед началом умножения следует приписать к нему слева столько единиц, сколько значащих разрядов у другого сомножителя справа от запятой. Результат произведения всегда получается в дополнительном коде.
Операция деления представляется последовательностью операций вычитания и сдвига делителя.
Следует отметить некоторые особенности выполнения операций над числами с плавающей запятой. При сложении или вычитании чисел с одинаковыми порядками, их мантиссы складываются или вычитаются, а порядку присваивается общее значение. Если порядки исходных чисел разные, то сначала эти порядки выравниваются (число с меньшим порядком приводится к числу с большим порядком), а затем мантиссы складываются или вычитаются. Сумма или разность имеют порядок большего числа. Если при нахождении суммы или разности получается переполнение, то мантисса сдвигается вправо на один разряд, а порядок результата увеличивается на 1.
При умножении чисел с плавающей запятой их мантиссы перемножаются, а порядки складываются.
При делении мантисса делимого делится на мантиссу делителя, а порядок результата получается как разница порядка делимого и делителя. При этом, если мантисса делимого больше мантиссы делителя, то частное окажется больше 1 (происходит переполнение). В этом случае частное сдвигается на 1 разряд вправо, а порядок результата увеличивается на 1.
Основные термины и определения предметной области
Система (от греческого слова “целое”) – это совокупность взаимодействующих элементов, образующих определенное единство. Существует ряд иных определений, из которых мне более всего импонирует следующее: система состоит из подсистем, обладающих всеми свойствами системы.
Элементом системы называется такая ее часть, которая имеет определенное функциональное назначение. Сложные элементы систем в свою очередь состоят из более простых взаимосвязанных элементов. Такие сложные элементы называют подсистемами.
Организация системы – внутренняя упорядоченность, согласованность взаимодействия элементов системы. Взаимодействие элементов системы определяет возможные состояния системы. Количество таких состояний ограничено.
Структура системы – состав, порядок и принципы взаимодействия элементов системы, определяющие основные свойства системы. В структуре системы выделяют подчиненное функционирование элементов (разные уровни иерархии) и относительно независимое функционирование элементов одного уровня иерархии.
Архитектура системы – совокупность свойств системы, существенных для пользователя. В других литературных источниках архитектура ЭВМ определяется как абстрактное представление компьютера, которое отражает его структурную, схемотехническую и логическую организацию.
Целостность системы – принципиальная не сводимость свойств системы к сумме свойств ее элементов (в системе проявляется дополнительный эффект взаимодействия подсистем). В то же время свойства элементов системы зависят от места элемента и его функций внутри системы
Под информационной системой (ИС) понимается система, организующая, хранящая и преобразовывающая информацию (это определение дается с точки зрения выполняемых функций). С другой точки зрения под информационной системой понимают комплекс взаимосвязанных методов и средств преобразования данных, необходимых пользователю ИС (структурное определение ИС).
По степени механизации процедур обработки информации различают системы ручной обработки, механизированной (сортировка писем), автоматизированной и автоматической (системы автоматического управления). В дальнейшем будем под ИС понимать именно автоматизированные информационные системы.
ИС можно классифицировать по следующим признакам:
функциональному назначению. В зависимости от выполняемых функций различают производственные ИС, коммерческие ИС, финансовые ИС, маркетинговые ИС и т.д.;
объектам управления. По этой классификации выделяют ИС автоматизированного проектирования (САПР), управления технологическими процессами (АСУ ТП), управления предприятием (АСУ), управления корпорацией (корпоративные ИС) и т.п.;
характеру использования результатной информации. В этой классификационной категории различают информационно-поисковые ИС (сбор, хранение и выдача информации по запросу пользователя), информационно-советующие (СППР – системы поддержки принятия решений) и информационно-управляющие (СРВ - системы реального времени).
Основу любой автоматизированной ИС составляет ЭВМ (отечественная терминология) или компьютер (зарубежная терминология). ЭВМ – комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач.
Первые ЭВМ были созданы в конце 40-х годов 20 века и представляли собой по нынешним масштабам гигантских монстров, которые использовались только для вычислительных целей. Элементной базой этих компьютеров были электронные лампы, в связи с чем они не только занимали большие площади, но и выделяли большое количество тепла. По мере изменения элементной базы ЭВМ уменьшились в размерах и обросли дополнительным оборудованием, которое расширило сферу их применения. В 70-х годах 20 века ЭВМ превратились сначала в вычислительные системы, а затем в информационно-вычислительные системы.
Вычислительная система – это совокупность одного или нескольких компьютеров или процессоров, программного обеспечения и периферийного оборудования, организованная для выполнения информационно-вычислительных процессов.
Первые ВС создавались с целью увеличения быстродействия и надежности работы путем параллельного выполнения вычислительных операций. Как это ни парадоксально, тормозом в дальнейшем увеличении быстродействия ЭВМ является конечная скорость распространения электромагнитных волн (300000 км/сек). Время распространения сигнала между элементами ВС может значительно превышать время переключения электронных схем. Поэтому чисто последовательная модель выполнения операций, характерная для классической структуры ЭВМ – структуры фон Неймана – не позволяет существенно увеличить быстродействие ВС.
В таблице 2.1 отражены те изменения, которые происходили с момента рождения ЭВМ и по настоящее время в характере использования вычислительной техники.
Далее рассмотрим классическую блок-схему ЭВМ и обсудим свойства ее составных частей.
Таблица 2.1
Период |
Преобладающий характер использования |
Режим работы |
Интег-рация данных |
Расположе-ние пользова-теля |
Тип пользователя |
Тип диалога |
50-е годы |
Научно-технические расчеты |
Одно-программный |
низкая |
Машинный зал |
Инженеры-программист |
Работа за пультом |
60-е годы |
Технические и экономические расчеты |
Пакетная обработка |
средняя |
Отдельное помещение |
Профессио-нальные програм-мисты |
Обмен перфо-носителями и машино-граммами |
70-е годы |
Управление и экономические расчеты |
Разделение времени |
высокая |
Терминаль-ный зал |
Програм-мисты |
Интерак-тивный (через кла-виатуру и экран) |
80-е годы |
Управление, предоставление информации |
Персональная работа |
Очень высокая |
Рабочий стол |
Пользовате-ли с общей компьютер-ной подготовкой |
Интерак-тивный по жесткому меню |
90-е годы |
Телекоммуникации, информационное обслуживание и управление |
Сетевая обработка |
Сверх-высокая |
Произволь-ное, мобильное |
Слабо обученные пользовате-ли |
|
