Сборка - Введение
Что такое язык ассемблера?
Каждый персональный компьютер имеет микропроцессор, который управляет арифметической, логической и контрольной деятельностью компьютера.
Каждое семейство процессоров имеет свой собственный набор инструкций для обработки различных операций, таких как получение ввода с клавиатуры, отображение информации на экране и выполнение различных других заданий. Этот набор инструкций называется "инструкциями на машинном языке".
Процессор понимает только инструкции машинного языка, которые представляют собой строки из единиц и нулей. Однако машинный язык слишком непонятен и сложен для использования при разработке программного обеспечения. Итак, низкоуровневый язык ассемблера разработан для определенного семейства процессоров, которые представляют различные инструкции в символьном коде и в более понятной форме.
Преимущества языка ассемблера
Понимание языка ассемблера дает понять:
- Как программы взаимодействуют с ОС, процессором и BIOS;
- Как данные представлены в памяти и других внешних устройствах;
- Как процессор получает доступ и выполняет инструкцию;
- Как инструкции получают доступ и обрабатывают данные;
- Как программа обращается к внешним устройствам.
Другие преимущества использования языка ассемблера:
Это требует меньше памяти и времени выполнения;
Это упрощает выполнение сложных задач, связанных с оборудованием;
Подходит для срочных работ;
Он наиболее подходит для написания программ обслуживания прерываний и других программ, находящихся в памяти.
Основные характеристики оборудования ПК
Основное внутреннее оборудование ПК состоит из процессора, памяти и регистров. Регистры - это компоненты процессора, которые содержат данные и адреса. Для выполнения программы система копирует ее с внешнего устройства во внутреннюю память. Процессор выполняет инструкции программы.
Основная единица компьютерной памяти - это бит; он может быть включен (1) или выключен (0), а группа из 8 связанных битов составляет байт на большинстве современных компьютеров.
Таким образом, бит четности используется для того, чтобы сделать количество битов в байте нечетным. Если четность четная, система предполагает, что произошла ошибка четности (хотя и редко), которая могла быть вызвана отказом оборудования или электрическими помехами.
Процессор поддерживает следующие размеры данных -
- Слово: 2-байтовый элемент данных
- Двойное слово: 4-байтовый (32-битный) элемент данных
- Квадворд: 8-байтовый (64-битный) элемент данных
- Абзац: 16-байтовая (128-битная) область
- Килобайт: 1024 байта
- Мегабайт: 1 048 576 байт
Двоичная система счисления
Каждая система счисления использует позиционное обозначение, т. Е. Каждая позиция, в которой записана цифра, имеет различное позиционное значение. Каждая позиция представляет собой степень основания, равную 2 для двоичной системы счисления, и эти степени начинаются с 0 и увеличиваются на 1.
В следующей таблице показаны позиционные значения для 8-битного двоичного числа, где все биты установлены в состояние ON.
Битовое значение | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
---|---|---|---|---|---|---|---|---|
Значение позиции как степень основания 2 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
Номер бита | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Значение двоичного числа основано на наличии битов 1 и их позиционном значении. Итак, значение данного двоичного числа -
1 + 2 + 4 + 8 +16 + 32 + 64 + 128 = 255
что то же самое, что 2 8 - 1.
Шестнадцатеричная система счисления
В шестнадцатеричной системе счисления используется основание 16. Цифры в этой системе находятся в диапазоне от 0 до 15. По соглашению буквы от A до F используются для представления шестнадцатеричных цифр, соответствующих десятичным значениям от 10 до 15.
Шестнадцатеричные числа в вычислениях используются для сокращения длинных двоичных представлений. По сути, шестнадцатеричная система счисления представляет двоичные данные путем деления каждого байта пополам и выражения значения каждого полубайта. В следующей таблице представлены десятичные, двоичные и шестнадцатеричные эквиваленты -
Десятичное число | Двоичное представление | Шестнадцатеричное представление |
---|---|---|
0 | 0 | 0 |
1 | 1 | 1 |
2 | 10 | 2 |
3 | 11 | 3 |
4 | 100 | 4 |
5 | 101 | 5 |
6 | 110 | 6 |
7 | 111 | 7 |
8 | 1000 | 8 |
9 | 1001 | 9 |
10 | 1010 | А |
11 | 1011 | B |
12 | 1100 | C |
13 | 1101 | D |
14 | 1110 | E |
15 | 1111 | F |
Чтобы преобразовать двоичное число в его шестнадцатеричный эквивалент, разбейте его на группы по 4 последовательных группы в каждой, начиная справа, и запишите эти группы над соответствующими цифрами шестнадцатеричного числа.
Example - Двоичное число 1000 1100 1101 0001 эквивалентно шестнадцатеричному - 8CD1
Чтобы преобразовать шестнадцатеричное число в двоичное, просто запишите каждую шестнадцатеричную цифру в ее четырехзначный двоичный эквивалент.
Example - Шестнадцатеричное число FAD8 эквивалентно двоичному - 1111 1010 1101 1000
Двоичная арифметика
В следующей таблице показаны четыре простых правила двоичного сложения:
(я) | (ii) | (iii) | (iv) |
---|---|---|---|
1 | |||
0 | 1 | 1 | 1 |
+0 | +0 | +1 | +1 |
= 0 | = 1 | = 10 | = 11 |
Правила (iii) и (iv) показывают перенос 1 бита в следующую левую позицию.
Example
Десятичный | Двоичный |
---|---|
60 | 00111100 |
+42 | 00101010 |
102 | 01100110 |
Отрицательное двоичное значение выражается в two's complement notation. Согласно этому правилу, преобразовать двоичное число в отрицательное значение - это перевернуть его битовые значения и добавить 1 .
Example
Число 53 | 00110101 |
Поменять биты | 11001010 |
Добавить 1 | 0000000 1 |
Число -53 | 11001011 |
Чтобы вычесть одно значение из другого, преобразуйте вычитаемое число в формат дополнения до двух и сложите числа .
Example
Вычтем 42 из 53
Число 53 | 00110101 |
Число 42 | 00101010 |
Переверните биты 42 | 11010101 |
Добавить 1 | 0000000 1 |
Число -42 | 11010110 |
53 - 42 = 11 | 00001011 |
Потеряно переполнение последнего 1 бита.
Адресация данных в памяти
Процесс, посредством которого процессор контролирует выполнение инструкций, называется fetch-decode-execute cycle или execution cycle. Он состоит из трех непрерывных шагов -
- Получение инструкции из памяти
- Расшифровка или идентификация инструкции
- Выполнение инструкции
Процессор может обращаться к одному или нескольким байтам памяти за раз. Рассмотрим шестнадцатеричное число 0725H. Для этого числа потребуется два байта памяти. Старший байт или самый старший байт - 07, а младший байт - 25.
Процессор хранит данные в обратной байтовой последовательности, т. Е. Младший байт хранится в младшем адресе памяти, а старший байт - в старшем адресе памяти. Таким образом, если процессор переносит значение 0725H из регистра в память, он сначала передаст 25 на младший адрес памяти и 07 на следующий адрес памяти.
x: адрес памяти
Когда процессор получает числовые данные из памяти в регистр, он снова меняет байты. Есть два типа адресов памяти -
Абсолютный адрес - прямая ссылка на конкретное место.
Адрес сегмента (или смещение) - начальный адрес сегмента памяти со значением смещения.