Assembler, Детальна інформація

Assembler
Тип документу: Реферат
Сторінок: 15
Предмет: Комп`ютерні науки
Автор:
Розмір: 66.8
Скачувань: 2501
На уроке 3 мы рассматривали пример программы с директивами сегментации. Эти директивы изначально использовались для оформления программы в трансляторах MASM и TASM. Поэтому их называют стандартными директивами сегментации.

Для простых программ, содержащих по одному сегменту для кода, данных и стека, хотелось бы упростить ее описание. Для этого в трансляторы MASM и TASM ввели возможность использования упрощенных директив сегментации. Но здесь возникла проблема, связанная с тем, что необходимо было как-то компенсировать невозможность напрямую управлять размещением и комбинированием сегментов. Для этого совместно с упрощенными директивами сегментации стали использовать директиву указания модели памяти MODEL, которая частично стала управлять размещением сегментов и выполнять функции директивы ASSUME (поэтому при использовании упрощенных директив сегментации директиву ASSUME можно не использовать). Эта директива связывает сегменты, которые в случае использования упрощенных директив сегментации имеют предопределенные имена, с сегментными регистрами (хотя явно инициализировать ds все равно придется).

В листинге 1 приведен пример программы с использованием упрощенных директив сегментации:

 

        Листинг 1. Использование упрощенных директив сегментации

;---------Prg_3_1.asm-------------------------------

masm                    ;режим работы TASM: ideal или masm

model   small           ;модель памяти

.data                   ;сегмент данных

message db      'Введите две шестнадцатеричные цифры,$'

.stack                  ;сегмент стека

        db      256     dup ('?')       ;сегмент стека

.code                   ;сегмент кода

main    proc            ;начало процедуры main

        mov     ax,@data        ;заносим адрес сегмента данных в регистр ax

        mov     ds,ax   ;ax в ds

;далее текст программы (см. сегмента кода в листинге 3.1 книги)

        mov     ax,4c00h        ;пересылка 4c00h в регистр ax

        int     21h             ;вызов прерывания с номером 21h

main    endp            ;конец процедуры main

end     main            ;конец программы с точкой входа main

Синтаксис директивы MODEL показан на рис. 16.



Рис. 16. Синтаксис директивы MODEL

Обязательным параметром директивы MODEL является модель памяти. Этот параметр определяет модель сегментации памяти для программного модуля. Предполагается, что программный модуль может иметь только определенные типы сегментов, которые определяются упомянутыми нами ранее упрощенными директивами описания сегментов. Эти директивы приведены в табл. 3.

Таблица 3. Упрощенные директивы определения сегмента

Формат директивы 

(режим MASM) Формат директивы 

(режим IDEAL) Назначение

.CODE [имя] CODESEG[имя] Начало или продолжение сегмента кода

The online video editor trusted by teams to make professional video in minutes