Система счисления.

Перед началом практического изучения Assemblera мы должны усвоить теоретическую часть языка. И сегодня я расскажу вам о системе счисления т.к. в Assemblere она используется. В школе на информатике вы скорее всего это и проходили, но я все же повторю материал.

Система счисления – это символический метод записи чисел, представление чисел с помощью письменных знаков.

Система счисления даёт:

  • представления множества чисел (целых и/или вещественных);
  • каждому числу уникальное представление (или, по крайней мере, стандартное представление);
  • отражение алгебраической и арифметической структуры чисел.

Системы счисления подразделяются на:

  • позиционные;
  • не позиционные;
  • смешанные.

Я расскажу о позиционной системе счисления т.к. она используется в языке Assembler. Позиционная (двоичная, восьмеричная, десятичная, шестнадцатеричная) система счисления – такая, в которой значение цифры зависит от ее положения в числе, положения цифр в числе называют порядками или разрядами. Основанием позиционной системы счисления является счет, при достижении которого заполняется следующий порядок числа. Иначе, основание системы счисления равно числу цифр, включая ноль, которыми записываются числа в этой системе.

Ассемблер допускает возможность использования чисел в двоичной, восьмеричной, десятичной или шестнадцатеричной системе. По умолчанию ассемблер считает все числа, встречающиеся в программе, десятичными. Но остальные системы счисления можно указать при помощи тэгов (для MASM32 11 версии): b или y – для двоичных чисел; o или q – для восьмеричных; d или t – для десятичных чисел; h – для шестнадцатеричных чисел. Тэг записывается в конце числа, слитно с числом. Если в числе используются буквенные символы (шестнадцатеричные числа), в начале записывают ноль – по правилам ассемблера обозначения чисел должны начинаться с цифры. Например:

  .data 
      var1 byte 00001111b ; 15 в двоичном представлении 
      var2 byte 00001111y ; 15 в двоичном представлении 
      var3 byte 17o ; 15 в восьмеричном представлении 
      var4 byte 17q ; 15 в восьмеричном представлении 
      var5 byte 15d ; 15 в десятичном представлении 
      var6 byte 15t ; 15 в десятичном представлении 
      var7 byte 0Fh ; 15 в шестнадцатеричном представлении
  

Рассмотрим их подробнее:

1. Двоичная система

Компьютеры используют двоичную систему, которая использует всего две цифры:

  0, 1
  

И поэтому основание в двоичной системе равно 2. Каждая цифра в двоичном числе называется БИТ, 4 бита – это ПОЛУБАЙТ, 8 битов это БАЙТ, два байта – это СЛОВО, два слова – это ДВОЙНОЕ СЛОВО:


Система счисления.

В конец двоичного числа принято добавлять букву “b”. Таким образом можно определить, что 101b – это двоичное число, которое соответствует десятичному значению 5.

2. Восьмеричная система

Восьмеричная система также удобна для представления двоичных чисел, хотя она используется намного реже. Для быстрого перевода надо разбить двоичное число на группы по 3 разряда (триплеты или триады).

Восьмеричная система использует 8 цифр. Поэтому основание равно 8.

  0,1,2,3,4,5,6,7
  

Двоичная
триада
Восьмеричная
цифра
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7


3. Десятичная система

Большинство людей всегда используют десятичное представление числа. В десятичной системе 10 цифр:

  0, 1, 2, 3, 4, 5, 6, 7, 8, 9
  

Цифрами можно представить любое значение, например:

  754
  

Значение формируется путем суммирования всех цифр, умноженных на основание в степени, равной позиции цифры (отсчет ведется с нуля):


Система счисления.

Позиция каждой цифры – очень важный фактор. Например, если вы поместите “7” в конец (547), то это будет совсем другое значение:


Система счисления.

Запомни: любое число в нулевой степени равно единице, даже ноль в нулевой степени равен 1:


Система счисления.

Шестнадцатиричная система

Шестнадцатиричная система использует 16 цифр. И поэтому основание в шестнадцатиричной системе равно 16.

  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
  

Шестнадцатиричные числа являются компактными и легкими для чтения.
Их легко преобразовать в двоичную систему и наборот. Каждый полубайт (4 бита) можно преобразовать в шестнадцатиричную цифру, пользуясь таблицей:

Десятичное
(основание 10)
Двоичное
(основание 2)
Шестнадцатиричное
(основание 16)
0 0000 0
1 0001 1
2 0010 2
3 0011 3
4 0100 4
5 0101 5
6 0110 6
7 0111 7
8 1000 8
9 1001 9
10 1010 A
11 1011 B
12 1100 C
13 1101 D
14 1110 E
15 1111 F


Принято в конец шестнадцатиричного числа добавлять букву “h”, таким образом можно определить, что 5Fh – это шестнадцатиричное число, которому соответствует десятичное значение 95. Мы также добавляем “0” в начало шестнадцатиричного числа, если оно начинается с буквы (A..F), например 0E120h.

В вычислительной машине все числа хранятся в виде последовательностей из нулей и единиц. Когда мы в текст программы записываем какое-либо число, его перевод в машиночитаемое представление осуществляет ассемблер, и в исполняемый файл это число будет записано в надлежащем (двоичном) виде. Но организовывать вывод из программы числа в понятном уже пользователю формате мы должны сами, значит, тогда мы должны сделать в программе следующее:
а) перевести число из двоичной системы в десятичную – из машинного представления в человеческое;
б) заменить полученное десятичное число его символом, то есть соответствующей числу картинкой, поскольку монитор отображает именно картинки, а не числа.

Перевод машинного числа в заданную систему счисления осуществляется последовательным делением этого числа и получающегося результата на основание искомой системы счисления. Остаток от деления заносится в младший разряд, частное снова делится на основание системы счисления, остаток заносится в следующий разряд – и так до достижения в результате деления нуля. Допустим, требуется перевести десятичное число 250 в шестнадцатеричное представление:

  250 / 16 = 15, остаток = A (10), 
  15 / 16 = 0, остаток = F (15), 
  таким образом, 250 (десятичное) = FA (шестнадцатеричное).
  

Максимальной число, которое может быть записано в байт, составляет 255. Если по результатам работы программы необходимо вывести на экран число в десятичном формате из однобайтовой переменной, следует это число делить на 10 не более, чем три раза – в 255 три десятичных порядка. В переменных типа word (два байта) максимальное значение составляет 65 535, в переменных типа double word (четыре байта) – 4 294 967 295. Поэтому, числа word для перевода в десятичный формат делим на 10 не более пяти раз, double word -не более десяти раз.

 
Поделиться в facebook
Facebook
Поделиться в twitter
Twitter
Поделиться в vk
VK
Поделиться в google
Google+
Поделиться в email
Email

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Группа в VK

Помощь проекту

Обнаружили опечатку?

Сообщите нам об этом, выделите текст с ошибкой и нажмите Ctrl+Enter, будем очень признательны!

Свежие статьи

Похожие статьи

Команды работы с битами.

Команды работы с битами.

Работать с отдельными битами операндов можно, используя логические операции и сдвиги. Также в системе команд x86 существуют специальные команды для работы с битами: это команды

 
Основы создания макросов в Assembler.

Основы создания макросов в Assembler.

Макросы — это шаблоны для генерации кода. Один раз создав макрос, можно использовать его во многих местах в коде программы. Макросы делают процесс программирования на

 
Синтаксис объявления меток.

Синтаксис объявления меток.

Метка в ассемблере – это символьное имя, обозначающее ячейку памяти, которая содержит некоторую команду. Метка может содержать следующие символы: Буквы (от A до Z и

 
Локальные переменные.

Локальные переменные.

Локальные переменные в Assembler используются для хранения промежуточных результатов во время выполнения процедуры. В отличие от глобальных, эти переменные являются временными и создаются при запуске

 

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: