Сборка - Введение

Что такое язык ассемблера?

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

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

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

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

Понимание языка ассемблера дает понять:

  • Как программы взаимодействуют с ОС, процессором и 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: адрес памяти

Когда процессор получает числовые данные из памяти в регистр, он снова меняет байты. Есть два типа адресов памяти -

  • Абсолютный адрес - прямая ссылка на конкретное место.

  • Адрес сегмента (или смещение) - начальный адрес сегмента памяти со значением смещения.