Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Задачка по Асму (Tasm)

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Прочее] >> Задачка по Асму (Tasm)
Имя
Сообщение << Старые топики   Новые топики >>
Задачка по Асму (Tasm) - 2010-01-06 19:18:37.963333   
n1ntendo

Сообщений: 21
Оценки: 0
Присоединился: 2010-01-06 19:10:27.293333
Доброго времени суток! помогите решить задачу:

Напишите программу, которая запрашивает дату между 1980 и 2099 годами. Программа должна определять день недели, соответствуещий дате, и выводить результат на экран.

Знаю при помощи каких функций реализовать, есть код который нужно довести до ума.

Не бесплатно! Скину на ВМ как договормся )

стучите 808-968
Post #: 1
RE: Задачка по Асму (Tasm) - 2010-01-07 17:07:53.630000   
n1ntendo

Сообщений: 21
Оценки: 0
Присоединился: 2010-01-06 19:10:27.293333
Где вы, гуру ассемблера??

Вобщем идея такова: получаем дату с клавиатуры, устанавливаем ее как системную, узнаем какой это день недели при помощи функции 2fH прерывания INT 21h, потом возвращаем ранее сохраненную системную дату.

Вот мой гавнокод, пока пытаюсь установить дату )) ниче не выходит :

.model small .stack 100h .data dm db 3 dr db ? d db 3 dup (?) m db 3,?,3 dup (?) g dw 5,?,5 dup (?) den db ? news db 0ah,0dh,'$' mes_d db 'vvedite den -&gt; $' mes_m db 0ah,0dh,'vvedite mesyac -&gt; $' mes_g db 0ah,0dh,'vvedite god -&gt; $' .code met: mov ax, dgroup mov ds, ax mov ax, 0003h int 10h mov dx, offset mes_d mov ah, 09h int 21h mov ah,0ah lea dx,dm int 21h mov ax,0 mov bx,0 mov cx,0 mov cl,dr mov di,0 n: mov bl, byte ptr d[di] ; тут пытаюсь преобразовать строку sub bl, 30h-48 mul d add ax,bx inc di loop n mov bx, 2 cwd div bx mov cx,0 mov dx,0 mov den,al ; как я понимаю преобразованная строка должна быть в АЛ ??? вот пока сдесь главный вопрос ;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;; mov dx, offset mes_m mov ah,09h int 21h mov dx, offset m mov ah,0ah int 21h mov dx, offset mes_g mov ah,09h int 21h mov dx, offset g mov ah, 0ah int 21h mov dl,den ;set date mov dh, 07 mov cx, 1998 mov ah,2bh int 21h ;mov ah,2ch ;get date ;int 21h mov ah, 08h int 21h mov ax, 4c00h int 21h end met

Жду помощи камрады! в долгу не останусь
Post #: 2
RE: Задачка по Асму (Tasm) - 2010-01-10 15:07:22.883333   
n1ntendo

Сообщений: 21
Оценки: 0
Присоединился: 2010-01-06 19:10:27.293333
никто помочь не может ?

плачу 30 вмз за код

Post #: 3
RE: Задачка по Асму (Tasm) - 2010-01-10 23:51:11.566666   
tеstеr

Сообщений: 377
Оценки: -46
Присоединился: 2008-02-08 17:56:40.563333
Алгоритм получения дня недели советую выбрать человеческий:
http://en.wikipedia.org/wiki/Zeller's_congruence
или вот тут два варианта алгоритма:
http://pers.narod.ru/text/calendar.html

Или можешь свой алгоритм реализовать, зная например, что 1 января 1980-го это вторник (не знаю точно), и дальше считай - високосный год или нет, суммируй разницу в днях до введённой даты. Вычисленную разницу дней (между введённой датой и 1 января 1980-го) дели на 7, остаток будет разницой в дне недели с 1 января 1980-го.
Например, если осталок от деление = 2, то этот день недели = вторник + 2 = четверг.

У меня времени кодить нет.
Могу дать совет только - как побыстрее разработать программу (в свое время прочел в трудах Криса Касперский).
Установить Visual Studio (лучше 7-ю или 2003-ю - тогда еще ассемблерные вставки можно было делать).
Набросать код.

int main()
{
char[5] str_day = "04";
char[5] str_month = "05";
char[5] str_year = "2000";
int day, month, year;
byte Number;

__asm{
// тут пишесь ассемблерный код, который преобразует символы строк str_day, str_month и str_year в числа.
}

__asm{
// тут пишесь ассемблерный код, который берёт числа day, month, year и получает из них Number - день недели.
}
return 0;
}

Преимущество этого подхода - встроенный отладчик, условные точки останова, подсветка синтаксиса, …

Как отладишь прогу - переписывай все на ассемблер, т.е.
char[5] str_day = "04";
превращай в
db str_day dub(5)
+ процедура считывания входных данных.
mov ah 01h
int 21 h
(короче дальше все просто)
Post #: 4
Страниц:  [1]
Все форумы >> [Прочее] >> Задачка по Асму (Tasm)







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.