MRX
Advanced
- May 23, 2020
- 50
- 137
Каждый персональный компьютер имеет микропроцессор, который управляет арифметической, логической и управляющей деятельностью компьютера.
Каждое семейство процессоров имеет свой собственный набор инструкций для выполнения различных операций, таких как получение ввода с клавиатуры, отображение информации на экране и т.д. Этот набор инструкций называется инструкциями машинного языка.
Процессор понимает только инструкции машинного языка, которые являются последовательностью бит: 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:
Значение бинарного числа равно сумме позиционных значений всех битов:
1 + 4 + 8 + 16 + 32 + 64 + 128 = 253
Двоичное 11111101 = десятичное 253. Детальнее о конвертации чисел из двоичной системы в десятичную и наоборот, а также о сложении двоичных чисел.
Шестнадцатеричная система счисления состоит из 16 символов: 0-9 и A-F. Символы A-F используются для представления шестнадцатеричных цифр, соответствующих десятичным значениям с 10 по 15.
Шестнадцатеричные значения в вычислениях используются для сокращения длинных двоичных представлений. По сути, шестнадцатеричная система счисления представляет собой двоичные данные, деля каждый байт пополам и выражая значение каждого полубайта. В следующей таблице приведены десятичные, двоичные и шестнадцатеричные эквиваленты:
Для конвертации бинарного числа в его шестнадцатеричный эквивалент, разбейте бинарное число на 4 последовательные группы, начиная справа, и запишите эти группы поверх соответствующих цифр шестнадцатеричного числа.
Пример: Бинарное число 1000 (8) 1100 (C) 1101 (D) 0001 (1) эквивалентно шестнадцатеричному 8CD1.
Чтобы конвертировать шестнадцатеричное число в двоичное, просто запишите каждую шестнадцатеричную цифру в её 4-значный двоичный эквивалент.
Пример: Шестнадцатеричное число FAD8 эквивалентно двоичному 1111 (F) 1010 (A) 1101 (D) 1000 (8).
Адресация данных в памяти
Процесс, посредством которого процессор управляет выполнением инструкций, называется циклом выполнения, который состоит из трёх последовательных шагов:
- Извлечение инструкции из памяти;
- Расшифровка или идентификация инструкции;
- Выполнение инструкции.
Процессор хранит данные в обратной последовательности байтов, т.е. байт младшего разряда сохраняется в нижнем адресе памяти (слева), а байт старшего разряда – в верхнем адресе памяти (справа). Таким образом, если процессор перенесёт значение 0824H из регистра в память, то 24 будет в начале строки, а 08 – в конце, но читать данные процессор будет справа налево, а не слева направо (помним, что процессор работает в бинарной системе счисления):

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