Сегодня мы установим среду разработки, и создадим свою первую программу
Сборка-Настройка Среды
Настройка Локальной Среды
Язык ассемблера зависит от набора инструкций и архитектуры процессора. В этом уроке мы сосредоточимся на процессорах Intel-32, таких как Pentium. Чтобы следовать этому руководству, вам понадобится:
Установка NASM
Если вы выберете "инструменты разработки" при установке Linux, вы можете установить NASM вместе с операционной системой Linux, и вам не нужно загружать и устанавливать его отдельно. Чтобы проверить, установлен ли NASM, выполните следующие действия:
Сборка - Базовый Синтаксис
Программа сборки можно разделить на три части:
Раздел данных используется для объявления инициализированных данных или констант. Эти данные не изменяются во время выполнения. Можно объявить различные постоянные значения, имена файлов,размер буфера и т. д. в этом разделе.
Синтаксис для объявления раздела данных:
Секция BSS
Раздел bss используется для объявления переменных. Синтаксис для объявления раздела bss:
Текстовый раздел
Текстовый раздел используется для хранения фактического кода. Этот раздел должен начинаться с объявления global_start, которое сообщает ядру, где начинается выполнение программы.
Синтаксис для объявления текстового раздела:
Комментарии
Комментарий на языке ассемблера начинается с точки с запятой (. Он может содержать любые печатные символы, включая пробел. Он может появиться на линии сам по себе, как ...
или, на той же линии, вместе с инструкцией, как
Заявления На Языке Ассемблера
Программы на ассемблере состоят из трех типов операторов:
Директивы ассемблера или псевдо-opstell ассемблера о различных аспектах процесса сборки. Они не являются исполняемыми и не генерируют инструкции машинного языка.
Макросы-это в основном механизм подстановки текста.
Синтаксис операторов языка ассемблера
Операторы языка ассемблера вводятся по одному оператору на строку. Каждое заявление имеет следующий формат:
Поля в квадратных скобках являются необязательными. Базовая инструкция состоит из двух частей, первая из которых-это имя инструкции (или мнемоника), которая должна быть выполнена, а вторая-операнды или параметры команды.
Ниже приведены некоторые примеры типичных операторов assembly language:
Программа Hello World в ASM
Следующий код языка ассемблера отображает строку "Hello World" на экране −
Когда приведенный выше код компилируется и выполняется, он дает следующий результат:
Компиляция и связывание программы сборки в NASM
Убедитесь, что в переменной среды PATH задан путь к двоичным файлам nasmand ld. Теперь выполните следующие шаги для компиляции и компоновки программы
Хотелось бы сказать сразу для критиков, это перевод!
Также скажу, что у меня есть ноутбук 2003 года на базе Pentium M, соответственно, всё описанное в этой статье будет в ближайшие дни продемонстрировано, со скринами и прочими интересными и нужными вещами.
За сим я откланяюсь, ждите практики на моём древнем ноуте, желаю хорошего дня.
P.S. я прикрепил опрос, по поводу практики на моём примере
Сборка-Настройка Среды
Настройка Локальной Среды
Язык ассемблера зависит от набора инструкций и архитектуры процессора. В этом уроке мы сосредоточимся на процессорах Intel-32, таких как Pentium. Чтобы следовать этому руководству, вам понадобится:
- IBM PC или любой эквивалентный совместимый компьютер
- Копия операционной системы Linux
- Копия программы ассемблера NASM
- Есть много хороших ассемблерных программ, таких как ...
- Ассемблер Microsoft (MASM)
- Борланд Турбо ассемблер (ТАСМ)
- Ассемблер GNU (GAS)
Установка NASM
Если вы выберете "инструменты разработки" при установке Linux, вы можете установить NASM вместе с операционной системой Linux, и вам не нужно загружать и устанавливать его отдельно. Чтобы проверить, установлен ли NASM, выполните следующие действия:
- Откройте терминал Linux.
- Введите whereis nasm и нажмите ENTER.
- Если он уже установлен, появится строка, например, nasm: /usr/bin/nasm. В противном случае вы увидите только nasm:, затем вам нужно установить NASM.
- Проверьте веб-сайт netwide assembler (NASM) для получения последней версии.
- Скачайте исходный архив Linux nasm-X. XX.та.gz, где X. XX - номер версии NASM в архиве.
- Распакуйте архив в каталог, который создает подкаталог nasm-X. XX.
- Диск на NASM-Х. ХХ и ввести ./configure. Этот sh скрипт найдет лучший компилятор C для использования и настроит Makefiles.
- Введите make для создания двоичных файлов nasm и ndisasm.
- Введите make install, чтобы установить nasm и ndisasm в /usr/local/bin и установить man-страницы.
Сборка - Базовый Синтаксис
Программа сборки можно разделить на три части:
- Раздел данных
- Раздел bss
- Текстовый раздел
Раздел данных используется для объявления инициализированных данных или констант. Эти данные не изменяются во время выполнения. Можно объявить различные постоянные значения, имена файлов,размер буфера и т. д. в этом разделе.
Синтаксис для объявления раздела данных:
Код:
section.data
Раздел bss используется для объявления переменных. Синтаксис для объявления раздела bss:
Код:
section.bss
Текстовый раздел используется для хранения фактического кода. Этот раздел должен начинаться с объявления global_start, которое сообщает ядру, где начинается выполнение программы.
Синтаксис для объявления текстового раздела:
Код:
section.text global _start _start:
Комментарий на языке ассемблера начинается с точки с запятой (. Он может содержать любые печатные символы, включая пробел. Он может появиться на линии сам по себе, как ...
Код:
; Эта программа отображает сообщение на экране
Код:
add eax, ebx ; добавляет значение регистра ebx в eax
Программы на ассемблере состоят из трех типов операторов:
- Исполняемые инструкции или инструкции
- Директивы ассемблера или псевдо-операции
- Макросы
Директивы ассемблера или псевдо-opstell ассемблера о различных аспектах процесса сборки. Они не являются исполняемыми и не генерируют инструкции машинного языка.
Макросы-это в основном механизм подстановки текста.
Синтаксис операторов языка ассемблера
Операторы языка ассемблера вводятся по одному оператору на строку. Каждое заявление имеет следующий формат:
Код:
[label] mnemonic [операнды] [; комментарий]
Ниже приведены некоторые примеры типичных операторов assembly language:
Код:
INC COUNT ; прирост памяти переменной
COUNT MOV TOTAL, 48; передача значения 48 в ; переменной памяти
TOTAL ADD AH, BH ; добавить содержимое
BH регистрировать в AH зарегистрируйтесь
AND MASK1, 128; ; переменная MASK1 and 128
ADD MARKS, 10 ; Добавить 10 переменной MARKS MOV AL, 10 ; первести значение 10 в AL регистр
Следующий код языка ассемблера отображает строку "Hello World" на экране −
Код:
section .text global _start ;должны быть объявлены для компоновщика (ld)
_start: ;говорит линкеру точку входа
mov edx,len ;сообщает длину
mov ecx,сообщение ;сообщение для записи
mov ebx,1 ;описатель файла (стандартный вывод)
mov eax,4 ;система вызывает номер (sys_write)
int 0x80 ;вызов ядра
mov eax,1 ;система вызывает номер (sys_exit)
int 0x80 ;вызов секции ядра
.data msg db 'Hello, world!', 0xa; строка для вывода
len equ $ - msg; длина строки
Код:
Hello World!
Убедитесь, что в переменной среды PATH задан путь к двоичным файлам nasmand ld. Теперь выполните следующие шаги для компиляции и компоновки программы
- Введите приведенный выше код с помощью текстового редактора и сохраните его как hello.asm.
- Убедитесь, что вы находитесь в том же каталоге, где сохранен hello.asm.
- Чтобы собрать программу, введите nasm - f ELF hello.asm
- Если есть какая-либо ошибка, вы будете оповещены об этом на данном этапе. В противном случае объектный файл программы с именем Hello.o будет создан.
- Чтобы связать объектный файл и создать исполняемый файл с именем hello, введите ld-m elf_i386-s-o hello hello.о
- Выполните программу, введя
./hello
Хотелось бы сказать сразу для критиков, это перевод!
Также скажу, что у меня есть ноутбук 2003 года на базе Pentium M, соответственно, всё описанное в этой статье будет в ближайшие дни продемонстрировано, со скринами и прочими интересными и нужными вещами.
За сим я откланяюсь, ждите практики на моём древнем ноуте, желаю хорошего дня.
P.S. я прикрепил опрос, по поводу практики на моём примере