Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
экзамен эвм2.docx
Скачиваний:
1
Добавлен:
23.09.2019
Размер:
66.15 Кб
Скачать
  1. Директивы определения данных

Ассемблер обеспечивает два способа определения данных: во-первых, через указание длины данных и, во-вторых, по их cодержимому. Рассмотрим основной формат определения данных:

[имя] Dn выражение 1.Имя элемента данных не обязательно , но если в программе имеются ссылки на некоторый элемент, то это делается посредством имени.

2.Для определения элементов данных имеются следующиедирективы: DB (байт), DW (слово), DD (двойное слово),DQ (учетверенное слово) и DT (десять байт).

3.Выражение может содержать константу, или знак вопроса для неопределенного значения.

Выражение может содержать символьную строку или числовую константу.

Символьные строки

Используются для описания данных, таких как, например, имена людей или заголовки страниц. Содержимое строки oтмечается одиночными кавычками, например, 'PC' или двойными кавычками - "PC". Ассемблер переводит символьные строки в объектный код в обычном формате ASCII. Символьная строка определяется только директивой DB, в котоpой указывается более двух символов в нормальной последо вательности слева направо.

Числовые константы

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

Десятичный формат допускает десятичные цифры от 0 до 9 и обозначается последней буквой D, которую можно не указывать, например, 125 или 125D.

Шестнад-ный формат допускает шест. цифры от 0 до F и обозначается последней буквой H.

Двоичный формат допускает двоичные цифры 0 и 1 и обозначается последней буквой B. Двоичный формат обычно используется для более четкого представления битовых значений в логических командах AND, OR, XOR и TEST.

Восмеричный формат допускает восмеричные цифры от 0 до 7 и обозначается последней буквой Q или O,

  1. Непосредственные операнды

Использование непосредственного операнда более эффективно, чем oпределение числовой константы в сегменте данных и организация cсылки на нее в операнде команды MOV

Длина непосредственных операндов

Зависит от длины первого операнда, однако, если непосредственный операнд короче, чем получающий операнд, то ассемблер расширяет непосредственный операнд до двух байт, 0025 и записывает объектный код в виде 2500.

Непосредственные форматы

Непосредственная константа может быть шестнадцатиричной, десятичной, или двоичной.

Список команд, которые допускают непосредственные операнды:

1.Команды пересылки и сравнения: MOV, CMP. 2.Арифметические команды: ADC, ADD, SBB, SUB. 3.Команды сдвига: RCL, RCR, ROL, ROR, SHL, SAR, SHR. 4.Логические команды: AND, OR, TEST, XOR.

Для создания элементов, длинее чем два байта, можно использовать цикл или строковые команды .

  1. Различия между программами в ехе и сом-файлах

Существуют определенные различия между программой, выполняемой как EXE-файл и программой, выполняемой как COM-файл.

Размер программы. EXE-программа может иметь любой размер, в то время как COM-файл ограничен размером одного сегмента и не превышает 64К. COM-файл всегда меньше, чем соответствующий EXE-файл.

Сегмент стека.

В EXE-программе определяется сегмент стека, в то время как COM-программа генерирует стек автоматически.

Сегмент данных.

В EXE программе обычно определяется сегмент данных, а регистр DS инициализируется адресом этого сегмента. В COM-программе все данные должны быть определены в сегменте кода.

Инициализация.

EXE-программа записывает нулевое слово в стек и инициализирует регистр DS. Так как COM-программа не имеет ни стека, ни сегмента данных, то эти шаги отсутствуют.

Обработка.

Для программ в EXE и COM форматах выполняется ассемблирование для получения OBJ-файла, и компановка для получения EXE-файла. Если программа создается для выполнения как EXE-файл, то ее уже можно выполнить. Если же программа создается для выполнения как COM-файл, то компановщиком будет выдано сообщение: Warning: No STACK Segment (Предупреждение: Сегмент стека не определен).

Если исходная программа написана для EXE-формата, то можно, используя редактор, заменить команды в исходном тексте для COM файла.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]