Среда, 22.05.2024, 01:53

Каталог статей

Главная » Статьи » DCPU-16 » Туториалы

Мануал YurishoSan. Часть 1
Часть 1: Введение, низкий уровень программирования обзор, основы двоичной системы исчисления.

: Введение
Здравствуйте, меня зовут YurishoSan. Я немного изучал ассемблер в школе 2 года назад, так что я подумал, что я буду делиться своими знаниями основ низкоуровневого программирования со всеми непрограммистами, которые хотели бы использовать DCPU-16.

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

: Что такое язык программирования (по данным Википедии)
Язык программирования - искусственный язык, который предназначен для передачи инструкций к вычислительной машине, например компьютеру. Языки программирования могут быть использованы для создания программ, которые управляют поведением машины и/или которые точно и однозначно выражают различные алгоритмы..

: Что такое язык низкого уровня
Низкоуровненый язык программирования - язык, который максимально приближен к двичному коду (0 и 1) компьютера. Это прямой перевод двоичного кода в слова. Например, DCPU-16 имеет команду под названием SET которая, на самом то деле, в двоичном коде выглядит так: 0001.

: Так что такое двоичный код
Итак, что же значат эти тысячи единиц и нулей? Чтобы ответить на этот вопрос, мы должны сначала ответить на другой вопрос: что такое 0, 1, 2, 3, 4, 5, 6, 7, 8, 9? Они являются цифрами, которыми мы, люди, считаем что-либо, и их называют десятичными потому, что эта система имеет 10 цифр или десятичное основание. Но компьютеры не могут проводить вычисления с таким большим количеством цифр. Они имеют только электрические платы, и потому, что электичество может быть в двух состояниях: вкл. и выкл., то единственный способ для подсчета в компьютерах заключается в использовании только вкл. и выкл., но в их цифровом представлении, то есть как ноль и один - то есть с основанием 2 - то есть в двоичном формате.

: Как читать двоичные числа
Каким числом является число 1100 в переводе из десятичной системы в двоичную? Чтобы ответить на этот вопрос, мы должны, опять же, ответить на другой вопрос: как мы считаем в десятичной системе исчисления? Сначала легко... 1 является единицей, 2 в двойкой и т.д., но после 9, которая девятка, начинают происходить странные вещи: следующая цифра 10, но у нас нет такой цифры, тем более она, на самом деле, состоит из двух разных цифр; что только что случилось? У нас закончились цифры, так что мы начали считать снова, но на этот раз мы добавили цифру слева, что больше, чем если бы она была помещена справа: чем больше цифра слева, тем больше число и есть. Насколько больше? В числе 22, насколько больше левая 2, чем правая 2? В 10 раз. В числе 202, насколько больше левая 2, чем правая 2? В 100 раз, то есть, на самом деле, в 10^2... ты начинаешь видеть здесь закономерность? Давайте покажу еще один пример. В числе 2002, насколько больше левая 2, чем правая 2? В 1000 раз, то есть в 10^3. Это значит, что вместо цифры подставляют произведение этой цифры на основание системы исчисления в степени расположения цифры, если расположения цифры считается справа и нумерация начинается с 0.

Тут дело в том, что цифры равны, но они представляют разные числа И НЕ НАДО ИХ ПУТАТЬ:
  • 22 - правая 2 представляет число 2, а левая - 20.
  • 202 - правая 2 представляет число 2, а левая - 200.

Давайте посмотрим на число 5432. Используя то, что мы узнали о расположениях цифр, давайте напишем индексы размещения этого чисел, начиная с индекса 0.

5 4 3 2
--------
3 2 1 0

Теперь давайте заменим индексы на 10 в степени номера индекса (я буду использовать точки (.) для разделения цифр номера из-за технических ограничений сайта):

5 ......... 4 ......... 3 ......... 2
--------------------------------------
10^3 .... 10^2 .... 10^1..... 10^0

Теперь давайте умножим каждую цифру на число под ней:

5 * 10^3 + 4 * 10^2 + 3 * 10^1 + 2 * 10^0
= 5 * 1000 + 4 * 100 + 3 * 10 + 2 * 1
= 5432

Действительно, этот метод располодения цифр корректен.

Давайте вернемся к первому вопросу, каким числом является число 1100 в переводе из десятичной системы в двоичную?

Мы будем делать то же самое, что мы сделали с десятичным числом. Сначала давайте запишите его с индексами:

1 1 0 0
--------
3 2 1 0

Теперь давайте запишем основание, которое в этот раз составляет 2, в степени индекса.

1 ...... 1 ...... 0 ...... 0
------------------------------
2^3 ... 2^2 ... 2^1 ... 2^0

Теперь давайте умножать:

1 * 2^3 + 1 * 2^2 + 0 * 2^1 + 0 * 2^0
= 1 * 8 + 1 * 4 + 0 * 2 + 0 * 1
= 12

1100 в двоичной системе - это 12 в десятичной системе. Есть 2 способа записать это уравнение:

1. 1100_2 = 12_10

, где система исчисления записывается подстрочной цифрой (на полстроки ниже числа). (Примечание: я написал 12_10, но обычно можно писать просто 12 потому, что если основание не указано, это означает, что ее основание по умолчанию 10).

2. 1100b = 12d,

с помощью условных знаков, где:
b = двоичное (основание 2)
o = восьмеричное (основание 8)
d = десятичное (основание 10)
h = шестнадцатеричное (основание 16)

Что насчет других систем исчисления, спросите вы? Это - следующий раз.

Перевел IskanderUA


Источник: http://www.0x10cforum.com/forum/m/4932880/viewthread/2705718-dcpu16-ver-11-basic-tutorial-part-2-out
Категория: Туториалы | Добавил: IskanderUA (21.04.2012) | Автор: YoshiroSan
Просмотров: 488 | Комментарии: 2 | Теги: системы исчисления, мануал, для начинающих | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Defend Developing | 2024 | Нашёл баг?