Реальный режим - это режим, в котором работал первый процессор семейства x86 - 8086. Все последующие модели микропроцессоров поддерживают этот режим для совместимости со старым программным обеспечением. Поскольку 8086 был 16-разрядным процессором, адресующим не более 1 Мб адресного пространства, то и современные процессоры в реальном режиме также имеют разрядность 16 бит и адресное пространство в 1Мб. Однако, в отличие от 8086, современные процессоры в реальном режиме могут задействовать некоторые дополнительные возможности, например новые регистры, новые команды и т.п.
Стек — это специальным образом организованный участок памяти, используемый для временного хранения переменных, для передачи параметров вызываемым подпрограммам и для сохранения адреса возврата при вызове процедур и прерываний. Легче всего представить стек в виде стопки листов бумаги (это одно из значений слова «stack» в английском языке) — вы можете класть и забирать листы бумаги только с вершины стопки. Таким образом, если записать в стек числа 1, 2, 3, то при чтении они будут получаться в обратном порядке — 3, 2, 1.
По назначению и способу использования регистры процессоров Intel можно разбить на группы:
1971г - Intel произвела на свет свой первый микропроцессор - 4004. Этот процессор имел 4-битную архитектуру и состоял всего-навсего из 2300 транзисторов. Несмотря на то что в компьютерах этот процессор не нашел применения, он все же использовался в калькуляторах Busicom и в различных системах управления (например, уличными светофорами). Через год (1972) был выпущен 4040. Он представлял собой улучшенную версию 4004 - главным нововведением была поддержка прерываний.
16-разрядные процессоры могут адресовать память размером в 1 Мб. Но, поскольку сформировать 20-разрядный адрес с помощью 16-разрядных регистров напрямую нельзя, используется сегментация памяти. Вся память делится на перекрывающиеся сегменты по 64 Кб каждый. Базовый адрес каждого сегмента памяти кратен 16 байтам. Для формирования полного адреса используется адрес сегмента, хранящийся в сегментном регистре и смещение внутри сегмента.
В этой статье мы рассмотрим процессы компиляции и компоновки программ на языке ассемблер для для операционных систем DOS и Windows. Напомню что компиляция - это процесс перевода файлов программы в так называемые объектные файлы. Объектные файлы - это файлы, в которых находится почти готовая программа в виде разрозненных кусков кода, связанных некоторой служебной информацией. Чтобы превратить эти куски кода в готовую программу используется компоновщик. Он выстраивает код в исполняемом файле в нужном порядке и создает готовый файл заданного формата. Этот получившийся файл уже можно исполнять.
Синтаксис у языка ассемблер довольно простой. Его изучение может занять буквально несколько минут.
Как уже было ранее сказано, программа на языке ассемблер - это обычный текстовый файл, набранный в любом текстовом редакторе. Давайте посмотрим какой у него формат и что может содержать этот текстовый файл.
Ассемблер - уникальный язык программирования. Никакой другой язык не даст вам такого понимания работы компьютера, как ассемблер. Глубже - только машинные коды и электронные сигналы.
Многие не понимают, зачем нужен ассемблер, если можно писать на языках высокого уровня с их абстракциями и ООП? Действительно, использовать ассемблер сейчас можно только в каких-то очень специфичных областях разработки. Например при написании драйверов устройств, или там где требуется максимальная производительность. В общем, областей практического применения ассемблера действительно очень мало, но все таки это лучший язык для тех, кто хочет изучить компьютер и поговорить с ним на одном языке.