Россия и Беларусь начали и продолжают войну против народа Украины!

Ассемблер. Массивы

  Светлана Деменева  | 

  Обновл. 16 Сен 2021  | 

 33502

 ǀ   3 

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

Например, мы можем определить переменную months типа word любым из следующих способов:

Директивы определения данных также могут использоваться для определения одномерного массива. Например, давайте определим одномерный массив чисел: 

Здесь мы объявили массив из шести значений типа word, каждое из которых инициализировано числами 34, 45, 56, 67, 75, 89 (соответственно). Таким образом, мы выделили 12 байт (2 * 6 = 12) памяти. Символьный адрес первого числа будет NUMBERS, второго числа — NUMBERS + 2 и так далее.

Давайте рассмотрим другой пример. Вы можете определить массив с именем INVENTORY из 8 элементов и инициализировать все значения нулем:

Можно сократить и написать следующим образом:

Директива TIMES также может использоваться для нескольких инициализаций одним и тем же значением. Используя TIMES, массив INVENTORY можно определить как:

В следующем примере мы определим массив x, состоящий из трех элементов: 2, 3 и 4. Затем мы сложим эти значения и выведем их сумму:

Результат выполнения программы:

9

Оценить статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (35 оценок, среднее: 3,97 из 5)
Загрузка...

Комментариев: 3

  1. Zerox:

    Здравствуйте ,у меня есть мечта написать свою маленькую ОС, и меня вечно мучают различные мысли по поводу обучения различных яп для реализации данной мечты… вообщем …хватит ли данных уроков по ASM'у и C++ для написания ядра на асме и оболочки на с++ для своей ос (и еще один маленький вопросик…, почему Nasm а не Fasm) буду очень благодарен за ответ).

    1. Самат:

      Получилось?

Добавить комментарий

Ваш E-mail не будет опубликован. Обязательные поля помечены *