Поиск:

Ответ в темуСоздание новой темы Создание опроса
> програмка, Ассемблер 
:(
    Опции темы
Ura20007
Дата 22.9.2008, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 248
Регистрация: 22.4.2007

Репутация: нет
Всего: 1



Всем привет!
Вот задачка:1. Дан файл f, компоненты которого являются целыми числами: a) найти количество четных чисел среди компонент; b) найти количество удвоенных нечетных чисел среди компонент; c) найти количество квадратов нечетных чисел среди компонент. 
С ассемблером (под DOS)  плохо знаком.Есть реализация задачи на C++.  Прошу помощи в реализации на ассемблере. Может есть у кого уже прога на асме.Файл прикрепил!

Заранее большое спасибо за любую помощь!    



Это сообщение отредактировал(а) Ura20007 - 22.9.2008, 16:39

Присоединённый файл ( Кол-во скачиваний: 20 )
Присоединённый файл  ______1.zip 0,71 Kb
PM MAIL   Вверх
Ura20007
Дата 23.9.2008, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 248
Регистрация: 22.4.2007

Репутация: нет
Всего: 1



Помогите пожалуйста чем сможете
PM MAIL   Вверх
Ura20007
Дата 27.9.2008, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 248
Регистрация: 22.4.2007

Репутация: нет
Всего: 1



Ребята помогите хотя бы с частью a
PM MAIL   Вверх
Diabolus
Дата 2.10.2008, 06:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 12.6.2007

Репутация: нет
Всего: нет



gcc -S source.c asm.txt или как-то так. Выдаст тебе код на асме, который делает компилятор из С. Ну а дальше уже будет проще. Почистить мусор, оптимизировать... Либо просто ключевые моменты перенести в свою программу.
PM MAIL   Вверх
Ura20007
Дата 21.10.2008, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 248
Регистрация: 22.4.2007

Репутация: нет
Всего: 1



Ребята а какой нужно использовать файл бинарный или текстовый подскажите пожалуйста!
PM MAIL   Вверх
Mikl_
Дата 21.10.2008, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 9.11.2007

Репутация: 6
Всего: 14



Ura20007, за месяц ассемблер под DOS можно было и выучить, 
Цитата
а какой нужно использовать файл бинарный или текстовый 
 а почему в программе на С++ такого вопроса не возникло? То же у кого-то решение сдул?
PM MAIL   Вверх
Ura20007
Дата 21.10.2008, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 248
Регистрация: 22.4.2007

Репутация: нет
Всего: 1



На сайте откопал! 
PM MAIL   Вверх
Mikl_
Дата 22.10.2008, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 9.11.2007

Репутация: 6
Всего: 14



Цитата(Ura20007)
Дан файл f, компоненты которого являются целыми числами: a) найти количество четных чисел среди компонент; b) найти количество удвоенных нечетных чисел среди компонент; c) найти количество квадратов нечетных чисел среди компонент.
...а какой нужно использовать файл бинарный или текстовый

Кстати, видимо, тенденция на этом сайте "Напишите программу на ассемблере..." 1) на каком из ассемблеров? tasm, masm, fasm, nasm или еще какой-то ассемблер. 2) Для какой операционной системы? DOS, Windows, Unix или какую-то другую?
Как всегда начинаем писать программу с рассуждений.
1) файл нужно открыть (если таковой существует, а если файла нет, то выдать сообщение), получить handle файла. Прочитать файл (или часть файла) в буфер, который расположен в памяти. Если файл очень большой (больше, чем буфер, который мы можем ему отвести), тогда файл читается в буфер за несколько раз. Закрыть файл. Если файл бинарный - хорошо. Если файл текстовый, придется текст переделывать в число, для нас это дополнительная головная боль. Функции открытия/чтения/закрытия файлов зависят от операционной системы под которую пишется программа (для DOS -функции 21h прерывания, для Windows -- функции API) 
2) содержимое файла находится в памяти. 
a) найти количество четных чисел среди компонент. Нужно знать с каким размером чисел мы столкнемся (байты, слова, двойные слова) и формат числа (знаковое/беззнаковое, целое/вещественное). Допустим у нас целые числа. Тогда в цикле читаем по одному числу, делаем сдвиг этого числа вправо на 1 бит -- если произошла установка бита CF в регистре флагов - значит число нечетное. Увеличиваем счетчик нечетных чисел (mov ax,X / shr ax,1 / jnc четное_число ) Числа на четное/нечетное можно проверить еще так (test X,1 / jz четное_число). А еще четность/нечетность проверяется вот так (mov ax,X/test ax,ax /jp четное_число)
b) найти количество удвоенных нечетных чисел. Нечетное число это 2*N+1 удвоенное нечетное число 2*(2*N+1)=4*N+2
значит мы должны сделать сдвиг этого числа вправо на 1 бит и убедится, что оно четное, затем сделать еще один сдвиг вправо на 1 бит и убедится, что оно нечетное или как вариант (mov ax,X  / sub ax,2 / test ax,11b / je удвоенное_нечетное_число)
c) найти количество квадратов нечетных чисел (2*N+1)*(2*N+1)=4*N*N + 4*N + 1=4*N*(N+1) + 1 мы должны убедится что число нечетное, затем отняв у него единицу -- убедится, что оставшееся число делится без остатка на 8  (если N нечетное, тогда четное N+1 иначе, если N четное, тогда N+1 нечетное) (mov ax,X / dec ax / test ax,111b / jz квадрат_нечетного_числа)
А теперь, когда все разжовано -- пиши программу  smile 

 

Это сообщение отредактировал(а) Mikl_ - 24.10.2008, 05:06
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.2319 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.