Директивы Ассемблера NASM — это макрокоманды, определенные
Директивы Ассемблера NASM — это макрокоманды, определенные самим компилятором.
Директивы SECTION и SEGMENT — задание структуры программы Каждая программа, вне зависимости от языка программирования, состоит из трех частей: код программы, статические данные (то есть известные во время компиляции) и динамические данные (неинициализированные, то есть те, под которые во время компиляции только отводится память, а значение им не присваивается). Эти секции могут быть определены с помощью директив SECTION и SEGMENT. Традиционно секция кода называется. text, секция статических данных —. data, а секция динамических данных —. bss.
Рассмотрим пример программы, содержащий все три секции. ; Каждая ассемблерная программа, должна начинаться с описания ; своего назначения и авторства, например, ; (с)2005 Иванов И. П.
section. bss ; В этой секции описываются динамические данные, они не ; инициализируются. Для объявления переменных в ; ; секции. bss используются псевдоинструкции RESB, RESW ; и RESD, ; Динамические данные не занимают места на диске, то ; есть для. них не отводится место в исполняемом файле, ; Инструкции RES* указывают только, сколько байтов ; переменные будут занимать в памяти после запуска ; программы dynl: resd 1 ; конец программы Иногда также определяется еще одна секция — для стека (. stack). Но посколь ку о стеке заботится операционная система, нам беспокоиться не о чем. Директивы SECTION и SEGMENT являются синонимами и поэтому взаи мозаменяемы.
Директивы EXTERN, GLOBAL и COMMON - обмен данными с другими программными модулями Мы будем использовать эти три директивы в главе 13 при линковке (компоновке) программ на языке ассемблера с программами, написанными на высокоуровневых языках программирования, поэтому сейчас мы рассмотрим их очень бегло. Директива EXTERN подобна одноименной директиве (extern) в С. Она позволяет определить идентификаторы, которые не определены в текущей программе, но определены в каком то внешнем модуле. Она используется для «импорта» идентификаторов в текущую программу. Директива GLOBAL определяет идентификаторы для «экспорта» — они будут помечены как глобальные и могут использоваться другими модулями (программами). Директива COMMON используется вместо GLOBAL для экспорта иденти фикаторов, объявленных в секции. bss. Если другой модуль экспортирует с помощью директивы COMMON тот же самый идентификатор, то оба символа будут размещены в памяти по одному и тому же адресу.
Директивы Ассемблера NASM.ppt
- Количество слайдов: 5

