Программирование на Ассемблере для персональных компьютеров. Садовой Н.Н - 13 стр.

UptoLike

Составители: 

13
Для заполнения больших массивов используется директива dup (dupli-
cate):
<число повторений> dup(<образец>)
<число повторений> - задаёт количество размещаемых в памяти данных,
определяемых образцом;
<образец> - любая допустимая группа констант.
Например,
data2 db 23 dup(1, 2, 'x')
выделяет в памяти 23 · 3=69 байтов и заносит в них образец 1, 2, 'x', 1, 2,
'x', … .
2. Директива использования сегментных регистров по умолчанию:
assume <имя сегментного регистра>:<имя
сегмента или
nothing>[, <имя сегментного регистра>:<имя сегмента или nothing>,
…]
Как отмечалось выше, для задания адреса в памяти требуется два ре-
гистра, один из них всегда сегментный, поэтому в команде при обращении
к памяти приходиться набирать имя сегментного регистра, часто одного и
того же. Директива assume позволяет избежать этого.
Транслятор сопос-
тавляет имя массива данных и автоматически подставляет сегментный ре-
гистр, заданный для сегмента, в котором расположен данный массив. Сло-
во nothing показывает, что данный сегментный регистр не адресуется по
умолчанию. Директива assume может использоваться в программе при ка-
ждом изменении сегмента для данного сегментного регистра, но обяза-
тельно в
начале сегмента, где она задаёт по умолчанию сегментный ре-
гистр для сегмента кодов.
Например,
assume cs:code, ds:data1, es:nothing
  Для заполнения больших массивов используется директива dup (dupli-
    cate):
  <число повторений> dup(<образец>)
  <число повторений> - задаёт количество размещаемых в памяти данных,
    определяемых образцом;
  <образец> - любая допустимая группа констант.
  Например,
  data2 db 23 dup(1, 2, 'x')
  выделяет в памяти 23 · 3=69 байтов и заносит в них образец 1, 2, 'x', 1, 2,
    'x', … .
      2. Директива использования сегментных регистров по умолчанию:
             assume   <имя     сегментного   регистра>:<имя   сегмента   или
      nothing>[, <имя сегментного регистра>:<имя сегмента или nothing>,
      …]

   Как отмечалось выше, для задания адреса в памяти требуется два ре-
гистра, один из них всегда сегментный, поэтому в команде при обращении
к памяти приходиться набирать имя сегментного регистра, часто одного и
того же. Директива assume позволяет избежать этого. Транслятор сопос-
тавляет имя массива данных и автоматически подставляет сегментный ре-
гистр, заданный для сегмента, в котором расположен данный массив. Сло-
во nothing показывает, что данный сегментный регистр не адресуется по
умолчанию. Директива assume может использоваться в программе при ка-
ждом изменении сегмента для данного сегментного регистра, но обяза-
тельно в начале сегмента, где она задаёт по умолчанию сегментный ре-
гистр для сегмента кодов.

   Например,
   assume cs:code, ds:data1, es:nothing

                                                                          13