0 / 0 / 0
Регистрация: 12.05.2010
Сообщений: 7
1

компилятор, написанный в паскале, генерирующий семантические действия на ассемблере. процедура вывода (строки=литерала)

16.05.2010, 20:31. Показов 1837. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день! Помогите, пожалуйста.

Пишу компилятор
Сейчас выполняю семантические действия в ходе синтаксического анализа
Программа в паскале состоит из различных процедур, одна из которых - вывод на экран литерала.
Но ведь для того, чтобы вывести строку на экран, ее нужно объявить, насколько я понимаю, в разделе .data или между (ret и end start) вот таким образом:

Assembler
1
message db         "Hello World!",0Dh,0Ah,'$'
а потом уже выводить ее в теле программы так:

Assembler
1
2
3
mov        ah,9              ; номер функции DOS - в АН
        mov        dx,offset message ; адрес строки - в DX
        int        21h               ; вызов системной функции DOS
Но раздел .data я заполняю в другой процедуре, в блоке объявлений переменных. но в тот момент, когда я ее заполняю, лексический анализатор еще не дошел до моего литерала, таким образом, я не могу объявить мою строку в разделе data. По той же причине (лексический анализатор уже пройдет лексему "литерал") я не могу обявить строку между (ret и end start).

Вопрос:
каким образом вывести строку, видимую в данный момент лексическим анализатором именно в процедуре вывода на экран?






как выглядит мой компилятр в паскале:

процедура программа
(генериреут в файле ассемблера текст '.model tiny
.data')
(вызов блока объявлений)
(генериреут в файле ассемблера текст '.code
org 100h ;начало СОМ-файла
start:')
(вызов блока операторов)
(генериреут в файле ассемблера текст '.mov ah,4ch;
int 21h;

ret

end start')

процедура блока объявлений
(считывает имя переменной)
(записывает в файл ассемблера сторки типа: имя переменной + 'db (?)')

процедура блока операторов
(считывает первое слово оператора и вызывает процедуру соответствующего оператора)

процедура вывода литерала на экран
(считывает литерал и генерирует в файл ассемблера вывод его на экран)

Была бы очень признательна
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.05.2010, 20:31
Ответы с готовыми решениями:

Модуль написанный на ассемблере
Добрый день, форумчане! Надо было написать модуль на ассемблере и потом подключить его к...

Компилятор для Brainfuck, написанный на Java
Может у кого есть Компилятор для Brainfuck написанный на Java. Заранее спасибо

Процедура вывода на экран слов строки, начинающихся и заканчивающихся одной и той же буквой
Написать Процедуру вывода на экран слов строки, начинающихся и заканчивающихся одной и той же буквой

Процедура вывода на экран слов строки, начинающихся и заканчивающихся одной и той же буквой
Процедура вывода на экран слов строки, начинающихся и заканчивающихся одной и той же буквой

0
16.05.2010, 20:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.05.2010, 20:31
Помогаю со студенческими работами здесь

Как будет выглядеть код, написанный на Си в Паскале
Здраствуйте.Как можно записать эту функцию в паскале? void LoadDB( const char* fname, struct...

Как будет выглядеть код, написанный на Си в Паскале
Здесь три программы (5,7,14) Задание к ним ( на всякий случай) 5. Дана матрица А размером m на n ...

Как будет выглядеть код, написанный на Си в Паскале
Здесь три программы (3,6,11) Задание к ним ( на всякий случай) 3. Даны три вектора X, Y, Z,...

Банкомат, написанный в Паскале нужно переделать под Java
Всем привет! Я написал банкомат, в Паскале АБС.НЕТ, но вот задание перехожу на Java и нужно...

Процедура на ассемблере
Здравствуйте! Напишите, пожалуйста, комментарии к коду на ассемблере. Процедура написана для...

Арифметические действия в ассемблере
Задание : Вычислить арифметическое выражение a∗b+a∗(c+d)+d∗(−1) . Переменные a,b,c,d в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru