Лекции по курсу "Проектирование ассемблеров, компоновщиков, макропроцессоров"
14. Пример работы двухпросмотрового ассемблера
Рассмотрим работу двухпросмотрового ассемблера на примере следующей программы.
№ Исходный текст Адрес ОП Машинный код 1 dseg segment 0000 2 N dw 5 0000 0005 3 array dw 3,5,7,9,11 0002 0003 0005 0007 0009 000B 4 dseg ends 000C 5 cseg segment 0000 6 assume cs:cseg, ds:dseg 7 mov ax,dseg 0000 B8 0000s 8 mov ds,ax 0003 8E D8 9 mov cx,N 0005 8B 0E 0000r 10 mov bx,0 0009 BB 0000 11 mov di,bx 000C 8B FB 12 mov si,bx 000E 8B F3 13 again: cmp arr[bx],0 0010 83 BF 0002r 00 14 jbe less 0015 76 03 15 inc di 0017 47 16 jmp next 0018 EB 03 17 less: jl next 001A 7C 01 18 inc si 001C 46 19 next: add bx,2 001D 83 C3 02 20 cseg ends 0020 21 end
На этапе трансляции создаются следующие БД.
Таблица имен:
Symbol name | Type | Value | |
Segm | Offset | ||
again | near | cseg | 0010 |
array | word | dseg | 0002 |
less | near | cseg | 001A |
N | word | dseg | 0000 |
next | near | cseg | 001D |
Таблица сегментов:
Group&Segments | Bit | Size | Align | Combine class |
dseg | 16 | 000C | Para | none |
cseg | 16 | 0020 | Para | none |
Обобщим использование информации на этапе компиляции в следующей схеме.
Алгоритм трансляции можно представить в виде блок-схемы, приведенной ниже.
Введение
Причины использования языка ассемблер
Причины неиспользования языка ассемблер
Синтаксис ассемблера
Системное программное обеспечение и структура ЭВМ
Программная модель процессора Intel 8086
Организация работы памяти
Операнды
Адресация операндов
Формат машинных команд
Команды переходов
Типы ассемблеров. Функции ассемблера
Ассемблер по схеме 1А / ОП
Ассемблер по схеме 1А / МД
Двухпросмотровый ассемблер
Многопросмотровый ассемблер
Загрузчик
Структура объектных файлов. Основные понятия
Идентификация модуля и атрибуты
Концепция привязки
Объектный файл. Последовательность записей
Объектный файл. Формат записей
Формат записей THEADR и LHEADR
Формат записи LNAMES
Формат записи SEGDEF
Формат записи GRPDEF
Формат записи PUBDEF
Формат записи COMDEF
Формат записи LOCSYM
Формат записи EXTDEF
Формат записи LINNUM
Формат записи LEDATA
Формат записи LIDATA
Формат записи FIXUPP
Формат записи MODEND
Формат записи комментариев
Причины использования языка ассемблер
Причины неиспользования языка ассемблер
Синтаксис ассемблера
Системное программное обеспечение и структура ЭВМ
Программная модель процессора Intel 8086
Организация работы памяти
Операнды
Адресация операндов
Формат машинных команд
Команды переходов
Типы ассемблеров. Функции ассемблера
Ассемблер по схеме 1А / ОП
Ассемблер по схеме 1А / МД
Двухпросмотровый ассемблер
Многопросмотровый ассемблер
Загрузчик
Структура объектных файлов. Основные понятия
Идентификация модуля и атрибуты
Концепция привязки
Объектный файл. Последовательность записей
Объектный файл. Формат записей
Формат записей THEADR и LHEADR
Формат записи LNAMES
Формат записи SEGDEF
Формат записи GRPDEF
Формат записи PUBDEF
Формат записи COMDEF
Формат записи LOCSYM
Формат записи EXTDEF
Формат записи LINNUM
Формат записи LEDATA
Формат записи LIDATA
Формат записи FIXUPP
Формат записи MODEND
Формат записи комментариев