Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Assm - Арифметические выражения

Ответить
Настройки темы
Assm - Арифметические выражения

Старожил


Сообщения: 155
Благодарности: 3

Профиль | Отправить PM | Цитировать


Изменения
Автор: Forpost
Дата: 26-05-2012
Здравствуйте.
Сначала распишу всё задание полностью:
1. Необходимо в программе C# считать файл, на каждой строке которого находится арифметическое выражение.
2. Затем необходимо сгенерировать код на ассемблере, который бы вычислял каждое выражение.
3. Откомпилировать программу и запустить, как ехе файл.

Теперь, что касается ассемблера.
Необходимо на ассемблере решать арифметические выражения вида:
А := K + 4 * (10-8) / 8
P := A + 8

A,K,P - это переменные, которые мы получаем из файла
4,8,10 - числа
+-*/ - арифметические знаки
() скобки

Как я вижу решение этого задания:
Разбиваем выражение на элементарные действия, т.е.
Сначала в А заносим значение 10-8, затем 4 умножаем на значение в А и т.д.

Однако, для того, чтобы реализовать само присваивание, умножение, деление - необходимы шаблоны на ассемблере, которые буду вставлять в нужное место. Если мои рассуждения верны, то прошу помощи в данных шаблонах. Если же нет - подскажите, пожалуйста, как можно реализовать поставленную задачу.
И ещё, как себя поведет ассемблер, если мы будем суммировать переменную, которая была не объявлена? Как в примере переменная "К", ещё надо будет заменять на ноль или выдавать ошибку?

Отправлено: 20:35, 26-05-2012

 

Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


Цитата Forpost:
2. Затем необходимо сгенерировать код на ассемблере, который бы вычислял каждое выражение. »
не понятно, это как? создать .asm файл? а каким компилятором его потом собирать будете?

Отправлено: 21:32, 26-05-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Старожил


Сообщения: 155
Благодарности: 3

Профиль | Отправить PM | Цитировать


Цитата:
а каким компилятором его потом собирать будете
Не решил ещё тасмом наверное. Это не было оговорено, значит можно любым.

Отправлено: 22:00, 26-05-2012 | #3


Ветеран


Сообщения: 1651
Благодарности: 146

Профиль | Отправить PM | Цитировать


Цитата Forpost:
Как в примере переменная "К", ещё надо будет заменять на ноль или выдавать ошибку? »
Изначально обнулите все используемые переменные, потом проблем не будет. Разве что если не захотите на них делить. Или брать от них логарифм.

Отправлено: 13:16, 28-05-2012 | #4


Старожил


Сообщения: 155
Благодарности: 3

Профиль | Отправить PM | Цитировать


Цитата:
Изначально обнулите все используемые переменные, потом проблем не будет. Разве что если не захотите на них делить. Или брать от них логарифм.
Спасибо именно так и сделаю.
Однако, вопрос о том, какие куски кода на асме смогут выполнить арифметические действия остался открытым.
Необходимо создание асмовского файла, который бы вычислял арифметические выражения.
За помощь - готов рассчитаться!

Отправлено: 18:12, 28-05-2012 | #5


Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


Цитата Forpost:
A,K,P - это переменные, которые мы получаем из файла »
вот это не понятно, получаем 3 переменные? или 1 и рассчитываем

Отправлено: 19:53, 28-05-2012 | #6


Старожил


Сообщения: 155
Благодарности: 3

Профиль | Отправить PM | Цитировать


Мы получаем несколько строк с арифметическими выражениями.
Т.е. рассчитали и записали в А, затем во втором выражении применяем значение А.
Однако, зная преподавателя, могут быть выражения с подковыркой, т.е. с переменной которая не объявлена ранее. Её я убуду вылавливать ещё в С# и заменять на 0.

Отправлено: 20:47, 28-05-2012 | #7


Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


в приципе понятно, формируем массив строк на каждую арифметическую операцию, разбираем выражение и записываем соответствующую строку

допустим, сложить два числа

Код: Выделить весь код
.data
    a dd 1 ; первое число
    
    b dd 4 ; второе число
    
    c dd 0 ; результат сложения
    
.code
start:
    mov eax,a 
    
    add eax,b 
    
    mov c,eax
end start

Отправлено: 23:43, 28-05-2012 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Assm - Арифметические выражения

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
bat cmd регулярные выражения AlterEgoFS Хочу все знать 1 19-10-2011 17:57
Значение выражения alexandr561 Флейм 10 01-04-2010 12:26
[решено] Bash | Арифметические операции Coutty Программирование в *nix 4 01-06-2009 13:16
Assm - Арифметические действия в assembler SS3 Программирование и базы данных 2 08-03-2009 16:03
Разное - PHP - регулярные выражения: HELP GoldenOrb Программирование и базы данных 10 08-09-2008 16:47




 
Переход