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

Перед началом практического изучения 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
  

Двоичная
триада
Восьмеричная
цифра
0000
0011
0102
0113
1004
1015
1106
1117


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)
000000
100011
200102
300113
401004
501015
601106
701117
810008
910019
101010A
111011B
121100C
131101D
141110E
151111F


Принято в конец шестнадцатиричного числа добавлять букву «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 -не более десяти раз.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

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

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