В любом текстовом редакторе создадим текстовый Asm-файл программы.
1) Определим сегмент стека.
_STACK SEGMENT PARA STACK ‘STACK’; сегмент стека
DB 32 DUP ('ST'); стек размером 64 байта (32 повторения 2-х
; символов ST по байту каждый)
_STACK ENDS; закроем описание сегмента стека _STACK
2) Определим сегмент данных.
_DATA SEGMENT; сегмент данных
SOURCE DW 10,250,30,40,300; массив слов - источник. Из этого
;массива мы будем брать числа. Массив записан в
; десятичной форме.
_DATA ENDS; закроем описание сегмента данных _DATA
3) Определим дополнительный сегмент данных.
_DOP SEGMENT
DEST DW 5 DUP (?) ; массив слов - приемник. В этот массив мы
; будем записывать элементы. Этот массив пока
; не содержит значений, но место под него
; зарезервировано - 5 слов.
_DOP ENDS
4) Определим сегмент кода.
_CODE SEGMENT PUBLIC ‘CODE’; сегмент кода
OUR_PROG PROC FAR; описываем процедуру
; OUR_PROG
ASSUME CS: _CODE, DS: _DATA, SS: _STACK; ассоциируем имена
;сегментов нашей программы с регистрами.
;помещаем в стек такие начальные значения, чтобы программа
; могла по завершению возвратить управление вызвавшей ее
;программе (например ОС)
PUSH DS; поместить в регистр номер блока адреса возврата
MOV AX, 0; обнулить регистр AX
PUSH AX; поместить в стек нулевое смещение адреса возврата
; инициализируем регистр сегмента данных и дополнительного сегмента
MOV AX, _DATA; через регистр AX
MOV DS, AX; загрузка в DS указателя сегмента данных