в какой системе счисления эвм выполняет арифметические расчеты
В какой системе счисления эвм выполняет арифметические расчеты
Изучение любого языка высокого уровня обычно начинается с освоения основных команд и написания первых простейших программ. Но с ассемблером так сразу не получится. Это объясняется тем, что программы на ассемблере напрямую манипулируют устройствами компьютера, в первую очередь процессором и памятью. Языки высокого уровня скрывают от программиста все манипуляции с компьютерным «железом». Таким образом, чтобы научиться программировать на ассемблере, необходимо знать архитектуру компьютера.
1.1. Архитектура компьютера.
Успешное применение языка ассемблера невозможно без знания и понимания архитектуры компьютера и знания архитектуры конкретного процессора, для которого будет создаваться программа.
Архитектура компьютера – это логическая организация, структура и ресурсы компьютера, которые может использовать программист.
Архитектура компьютера включает в себя архитектуры отдельных устройств, входящих в компьютер. Хотя компьютер состоит из многих внешних и внутренних устройств, но реально программисту на ассемблере приходится работать только с тремя устройствами компьютерной системы: процессором, памятью и портами ввода-вывода. В сущности, эти три устройства определяют работу всего компьютера и работу всех внешних устройств подключенных к нему. Все эти три устройства соединены между собой при помощи трех основных шин: шиной данных (ШД), шиной адреса (ША) и шиной управления (ШУ) (рис. 1).
Рис. 1. Архитектура ЭВМ.
Процессор — электронный блок либо интегральная схема (микропроцессор), исполняющая машинные инструкции (код программ), главная часть аппаратного обеспечения компьютера или программируемого логического контроллера.
Оперативная память предназначена для загрузки программ и для временного хранения различных данных, необходимых для работы программ.
Порты ввода-вывода предназначены для взаимодействия с пользователем и другими устройствами.
Шина (bus) – это группа параллельных проводников, с помощью которых данные передаются от одного устройства к другому:
Все три шины вместе образуют системную шину или ее еще называют магистраль.
1.2. Системы счисления.
Слово «компьютер» (computer) с английского языка переводится как «вычислитель», т. е. машина для проведения вычислений. И это полностью соответствует действительности, т. к. на уровне «железа» компьютер выполняет только простейшие арифметические операции с числами, такие как сложение и умножение.
Сердцем компьютера является процессор, называемый часто центральным процессором (ЦП) или микропроцессором. Именно центральный процессор выполняет все вычисления.
Так исторически сложилось, что практически все цифровые микросхемы, в том числе компьютерные процессоры, работают только с двумя разрешенными уровнями напряжения. Один из этих уровней называется уровнем логической единицы (или единичным уровнем), а другой — уровнем логического нуля (или нулевым уровнем). Чаще всего логическому нулю соответствует низкий уровень напряжения (от 0 до 0,4 В), а логической единице — высокий уровень (от 2,4 до 5 В). Два уровня напряжения было выбрано исключительно из-за простоты реализации.
Таким образом, можно образно представлять, что в электронной цепи компьютера «бегают» только цепочки ноликов и единичек. За этими цепочками нулей и единичек закрепилось название машинные коды. Точно также можно представлять, что в память компьютера, а также на магнитные, оптические и прочие носители записываются нолики и единички, которые в совокупности составляют хранимую информацию.
То есть компьютер способен воспринимать только нолики и единички, а для нас (людей) эти нолики и единички представляются через устройства вывода (дисплеи, принтеры, звуковые колонки и пр.) в виде текста, графических изображений и звуков.
Так как компьютер способен воспринимать только два управляющих сигнала: 0 и 1, то и любая программа должна быть ему представлена только в двоичных кодах, т. е. в машинных кодах. В старые добрые времена операторы первых ЭВМ программировали напрямую в машинных кодах, переключая специально предусмотренные для этого тумблеры, или пробивали двоичные коды на перфолентах и перфокартах, которые затем считывала ЭВМ и выполняла операции согласно этим кодам.
Однако записывать и запоминать огромные двоичные цепочки, первым программистам было неудобно, поэтому они стали вместо двоичной системы использовать другие системы счисления, например десятичную, восьмеричную или шестнадцатеричную. Для сравнения: двоичное число 11001000 будет представлено в десятичном виде как 200, а в восьмеричной и шестнадцатеричной соответственно как 310 и С8.
Стоит еще раз отметить, что недвоичные системы счисления первые программисты стали использовать исключительно для личного удобства. Компьютер не способен воспринимать десятичные, шестнадцатеричные или восьмеричные числа, а только и только двоичные коды!
Таким образом, операторы первых ЭВМ стали составлять свои программы в более удобной системе счисления (восьмеричной, шестнадцатеричной или другой), а потом переводить их в двоичный машинный код. Наибольшее распространение у первых программистов из всех систем счисления получила шестнадцатеричная система счисления, которая до сих пор является основной в компьютерном мире. И все из-за того, что в отличие от других систем счисления перевод из шестнадцатеричной системы счисления в двоичную систему и обратно осуществляется очень легко — вместо каждой шестнадцатеричной цифры, подставляется соответствующее четырехзначное двоичное число.
Хотя шестнадцатеричная система облегчила работу с машинными кодами, но создавать программу в шестнадцатеричном виде все равно очень не просто. В итоге родился язык ассемблера, который давал возможность писать программы на более понятном человеку языке и в то же время позволял легко переводить их в машинный код.
Язык ассемблера прозвали низкоуровневым языком, потому что он максимально приближен к машинному языку, а значит к «железу» компьютера. После языка ассемблера стали появляться высокоуровневые языки, такие как Бейсик, Паскаль, Фортран, Си, С++ и пр. Они еще более понятны человеку, но преобразование в машинный код высокоуровневых программ значительно сложнее, из-за чего размер кода, как правило, получается большим и менее быстрым по сравнению с ассемблерными программами.
Если операторы первых ЭВМ переводили свои программы в машинный код вручную, то сейчас эту работу выполняют специальные программы— трансляторы (англ, translator — переводчик). Для языков высокого уровня транслятор принято называть компилятором (англ, compiler — составитель, собиратель). Для языка ассемблера обычно тоже не используется слово транслятор, а говорят просто: «ассемблер». Таким образом, ассемблером называют, как язык программирования, так и транслятор этого языка.
Соответственно процесс работы ассемблера называют ассемблированием. Процесс работы компилятора называют компилированием. Процесс обратный ассемблированию, т. е. преобразование машинного кода в программу на языке ассемблера называют дизассемблированием.
Цифра в двоичной арифметике называется разрядом (или точнее «двоичным разрядом») и может принимать значение ноль или единица. В компьютерном мире вместо разряда часто употребляют название бит.
Таким образом, минимальной единицей информации в компьютерной системе является бит, который может принимать только значение 0 или 1. Однако минимальным объемом данных, которым позволено оперировать любой компьютерной программе является не бит, а байт. Байт состоит из восьми бит. Если программе нужно изменить значение только одного бита, то она все равно должна считать целый байт, содержащий этот бит. Биты в байте нумеруются справа налево от 0 до 7, при этом нулевой бит принято называть младшим, а седьмой — старшим (рис. 2).
Однако не только байтами может оперировать компьютерная программа, но и более крупными единицами данных— словами, двойными словами и учетверенными словами. Слово состоит из двух байт, при этом биты с 0 по 7 составляют младший байт в слове, а биты с 8 по 15— старший (рис. 3). Понятно, что слово может принимать до 2 16 =65536 различных значений.
Двойное слово, как следует из самого названия, состоит из двух слов или четырех байт, а значит из 32-х бит, а два двойных слова составляют учетверенное слово (64 бита).
Существует еще более крупная единица, которая называется параграф и представляет собой 16 смежных байт.
Лекция 2. Арифметические основы работы ЭВМ
2.1. Что такое система счисления
Система счисления — это способ представления любого числа посредством алфавита символов, называемых цифрами. |
Существуют позиционные и непозиционные системы счисления.
В непозиционных системах счисления вес цифры (т. е. тот вклад, который она вносит в значение числа) не зависит от ее позиции в записи числа. Так, в римской системе счисления в числе ХХХII (тридцать два) вес цифры Х в любой позиции равен просто десяти.
В позиционных системах счисления вес каждой цифры изменяется в зависимости от ее положения (позиции) в последовательности цифр, изображающих число. Например, в числе 757.7 первая семерка означает 7 сотен, вторая — 7 единиц, а третья — 7 десятых долей единицы.
Любая позиционная система счисления характеризуется своим основанием.
Основание позиционной системы счисления — количество различных цифр, используемых для изображения чисел в данной системе счисления. |
За основание системы можно принять любое натуральное число — два, три, четыре и т.д. Следовательно, возможно бесчисленное множество позиционных систем : двоичная, троичная, четверичная и т.д. Запись чисел в каждой из систем счисления с основанием q означает сокращенную запись выражения
2.2. Как порождаются целые числа в позиционных системах счисления
Целые числа в любой системе счисления порождаются с помощью Правила счета:
Для образования целого числа, следующего за любым данным целым числом, нужно продвинуть самую правую цифру числа; если какая-либо цифра после продвижения стала нулем, то нужно продвинуть цифру, стоящую слева от неё. |
2.3. Какие системы счисления используют специалисты для общения с компьютером
2.4. Почему люди пользуются десятичной системой, а компьютеры — двоичной
Люди предпочитают десятичную систему, вероятно, потому, что с древних времен считали по пальцам, а пальцев у людей по десять на руках и ногах. Не всегда и не везде люди пользуются десятичной системой счисления. В Китае, например, долгое время пользовались пятеричной системой счисления.
2.5. Почему в компьютерах используются также восьмеричная и шестнадцатеричная системы счисления
Двоичная система, удобная для компьютеров, для человека неудобна из-за ее громоздкости и непривычной записи.
Перевод чисел из десятичной системы в двоичную и наоборот выполняет машина. Однако, чтобы профессионально использовать компьютер, следует научиться понимать слово машины. Для этого и разработаны восьмеричная и шестнадцатеричная системы.
Чтобы перевести двоичное число в восьмеричную ( шестнадцатеричную ) систему счисления нужно двигаясь от точки влево, а затем вправо, разбить двоичное число на группы по три (четыре) разряда, дополняя, при необходимости, нулями крайние левую и правую группы. Затем каждую группу из трех (четырех) разрядов следует заменить соответствующей восьмеричной (шестнадцатеричной) цифрой. |
2.6. Как перевести целое число из десятичной системы в любую другую позиционную систему счисления
Пример: Переведем число 75 из десятичной системы в двоичную, восьмеричную и шестнадцатеричную:
2.7. Как пеpевести пpавильную десятичную дpобь в любую другую позиционную систему счисления
Пример. Переведем число 0,36 из десятичной системы в двоичную, восьмеричную и шестнадцатеричную:
Для чисел, имеющих как целую, так и дробную части, перевод из десятичной системы счисления в другую осуществляется отдельно для целой и дробной частей по правилам, указанным выше. |
2.8. Как пеpевести число из двоичной (восьмеpичной, шестнадцатеpичной) системы в десятичную
средствами десятичной арифметики.
2.9. Сводная таблица переводов целых чисел из одной системы счисления в другую
Рассмотрим только те системы счисления, которые применяются в компьютерах — десятичную, двоичную, восьмеричную и шестнадцатеричную. Для определенности возьмем произвольное десятичное число, например 46, и для него выполним все возможные последовательные переводы из одной системы счисления в другую. Порядок переводов определим в соответствии с рисунком:
2.10. Как производятся арифметические операции в позиционных системах счисления
Рассмотрим основные арифметические операции: сложение, вычитание, умножение и деление. Правила выполнения этих операций в десятичной системе хорошо известны — это сложение, вычитание, умножение столбиком и деление углом. Эти правила применимы и ко всем другим позиционным системам счисления. Только таблицами сложения и умножения надо пользоваться особыми для каждой системы.
С л о ж е н и е
Таблицы сложения легко составить, используя Правило Счета.
Сложение в двоичной системе | Сложение в восьмеричной системе |
При сложении цифры суммируются по разрядам, и если при этом возникает избыток, то он переносится влево.
Пример 1. Сложим числа 15 и 6 в различных системах счисления.
Шестнадцатеричная: F 16 +6 16
|