What's new

Article Ассемблер. Вступление

MRX 0

MRX

Advanced
May 23, 2020
50
137
1590320426374.png

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

Процессор понимает только инструкции машинного языка, которые являются последовательностью бит: 1 или 0. Однако машинный язык слишком сложен и непонятен для использования в разработке программного обеспечения. Поэтому для определённого семейства процессоров был разработан низкоуровневый язык, который представляет собой набор инструкций для написания программ в более понятной форме. Этот язык назвали языком ассемблера (или просто «ассемблер»).

Ассемблер – это транслятор (переводчик), который переводит код, написанный на языке ассемблера, в машинный язык.

Преимущества языка ассемблера

Использование языка ассемблера позволяет понять:
  • как программы взаимодействуют с операционной системой, процессором и BIOS-ом;
  • как данные представлены в памяти и других устройствах;
  • как процессор получает доступ к инструкциям и как он их выполняет;
  • как инструкции получают доступ к данным и обрабатывают эти данные;
  • как программа получает доступ к внешним устройствам.
Другие преимущества использования языка ассемблера:
  • требует меньше памяти;
  • быстрее выполняется;
  • упрощает сложные аппаратные задачи.
Основные характеристики аппаратного обеспечения ПК

Основное аппаратное обеспечение ПК состоит из процессора, памяти и регистров.

Регистры – это компоненты процессора, содержащие данные и их адреса в памяти. Чтобы выполнить программу, система копирует её с внешнего устройства во внутреннюю память. Затем процессор выполняет инструкции программы.

Данные в компьютере хранятся в битах: 1 (ВКЛ) или 0 (ВЫКЛ).

Процессор поддерживает следующие размеры данных:
  • word: 2-байтовый элемент данных;
  • doubleword: 4-байтовый (32-битный) элемент данных;
  • quadword: 8-байтовый (64-битный) элемент данных;
  • paragraph: 16-байтовая (128-битная) область;
  • kilobyte: 1024 байт;
  • megabyte: 1 048 576 байт.
Двоичная система счисления

Каждая система счисления использует позиционные обозначения. Т.е. позиции в которых записаны биты, имеют разные позиционные значения. Каждое следующее позиционное значение состоит из предыдущего позиционного значения, умноженного на 2 (именно на 2, так как это бинарная система, которая состоит из 2-ух чисел). Если битом является 1, то позиционное значение умножается на 2, а если 0, то позиционное значение остаётся 0. В бинарной системе счисления отсчёт ведётся справа налево, а не слева направо (как в десятичной системе).
Например, в следующей таблице показаны позиционные значения 8-битного двоичного числа 11111101:

1590230988954.png


Значение бинарного числа равно сумме позиционных значений всех битов:
1 + 4 + 8 + 16 + 32 + 64 + 128 = 253
Двоичное 11111101 = десятичное 253. Детальнее о конвертации чисел из двоичной системы в десятичную и наоборот, а также о сложении двоичных чисел.

Шестнадцатеричная система счисления состоит из 16 символов: 0-9 и A-F. Символы A-F используются для представления шестнадцатеричных цифр, соответствующих десятичным значениям с 10 по 15.
Шестнадцатеричные значения в вычислениях используются для сокращения длинных двоичных представлений. По сути, шестнадцатеричная система счисления представляет собой двоичные данные, деля каждый байт пополам и выражая значение каждого полубайта. В следующей таблице приведены десятичные, двоичные и шестнадцатеричные эквиваленты:

1590231044102.png


Для конвертации бинарного числа в его шестнадцатеричный эквивалент, разбейте бинарное число на 4 последовательные группы, начиная справа, и запишите эти группы поверх соответствующих цифр шестнадцатеричного числа.

Пример: Бинарное число 1000 (8) 1100 (C) 1101 (D) 0001 (1) эквивалентно шестнадцатеричному 8CD1.

Чтобы конвертировать шестнадцатеричное число в двоичное, просто запишите каждую шестнадцатеричную цифру в её 4-значный двоичный эквивалент.

Пример: Шестнадцатеричное число FAD8 эквивалентно двоичному 1111 (F) 1010 (A) 1101 (D) 1000 (8).

Адресация данных в памяти

Процесс, посредством которого процессор управляет выполнением инструкций, называется циклом выполнения, который состоит из трёх последовательных шагов:
  • Извлечение инструкции из памяти;
  • Расшифровка или идентификация инструкции;
  • Выполнение инструкции.
Процессор может одновременно обращаться к одному или нескольким байтам памяти. Например, рассмотрим шестнадцатеричное значение 0824H, которое занимает 2 байта памяти. Байт старшего разряда или старший значащий байт – 08, младший байт – 24.

Процессор хранит данные в обратной последовательности байтов, т.е. байт младшего разряда сохраняется в нижнем адресе памяти (слева), а байт старшего разряда – в верхнем адресе памяти (справа). Таким образом, если процессор перенесёт значение 0824H из регистра в память, то 24 будет в начале строки, а 08 – в конце, но читать данные процессор будет справа налево, а не слева направо (помним, что процессор работает в бинарной системе счисления):



Когда процессор переносит данные из памяти в регистр, то он опять меняет местами байты (т.е. 08 опять будет слева, а 24 – справа).

Есть 2 вида адресов памяти:
  • абсолютный адрес – прямая ссылка на конкретное местоположение.
  • сегментный адрес (или ещё «смещение») – адрес сегмента памяти со значением смещения.
В следующем уроке мы рассмотрим установку среды разработки для языка ассемблера.
 
Last edited by a moderator:
Vander 0

Vander

Staff member
Nov 10, 2019
468
1,156
Немного подкорректировал статью. Тему ты затронул очень интересную, но оформление статей играет немаловажную роль.
 
T 0

Takagawa

С правилами написания и оформления статей ты можешь ознакомиться здесь.
 
Top Bottom