Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 04.03.2011, 19:02   #1
Nihith
 
Регистрация: 04.03.2011
Сообщений: 2
По умолчанию День месяц и год. Задача.

Добрый день, друзья.
Нужна помощь в написании низкоуровнего кода программы, которая запрашивает у пользователя номер дня, месяца и года, а затем выводит следующую дату [день]+1.

Ассемблер IA-32
Nihith вне форума
Старый 04.03.2011, 19:39   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

и что? Вы готовы кому-то заплатить за решение? Или хотите написать программу самостоятельно? Вы уж определитесь...
И, если хотите сделать самостоятельно - тогда начните с описания переменных и обеспечение ввода номера дня, месяца и года..
Давайте сюда наработки. Тогда, возможно, кто-нибудь и поможет Вам...
А пока я вижу только заявку для Фриланса.
Serge_Bliznykov вне форума
Старый 04.03.2011, 21:13   #3
yuran666666
Форумчанин
 
Аватар для yuran666666
 
Регистрация: 23.04.2009
Сообщений: 346
По умолчанию

Код:
.386
.model flat, stdcall
include kernel32.inc
includelib kernel32.lib
READ_DATE equ 1
WRITE_DATE equ 2
ADD_ONE_DAY equ 3
.data?
buff db 10 dup (?)
.code
dll_name db 'privateng.dll',0
proc_name db 'SdelatPesdato',0
start:
invoke LoadLibrary,offset dll_name
invoke GetProcAddress,eax,offset proc_name
xchg ebx,eax
mov esi, offset buff
push esi
push READ_DATE
call ebx
push esi
push ADD_ONE_DAY
call ebx
push esi
push WRITE_DATE
call ebx
ret
end start
;privateng.dll is not free lib! Tak to, studentota;)
Нет, ну правда..
yuran666666 вне форума
Старый 07.03.2011, 18:58   #4
Nihith
 
Регистрация: 04.03.2011
Сообщений: 2
По умолчанию

Собственно, фриланс, меня не интересует. Не правильно просто выразился в топике
Алгоритм программы я понял, наработки есть.
Только вот как лучше выводить результат не знаю, и как завершить программы тоже.

Код:
model small
.386
.code
start:
mov DX, offset msg_d ; просьба ввести день
mov AH, 09
int 21h
mov AH, 1
int 21h
mov BX, AX ; регистр BX - регистр дней - 10 line
mov DX, offset msg_m ; просьба ввести месяц
mov AH, 09
int 21h
mov AH, 1
int 21h
mov CX, AX ; CX - месяца
mov DX, offset msg_y ; просьба ввести год
mov AH, 09
int 21h
mov AH, 1 ; 20 line
int 21h
mov DX, AX ; DX - регистр года

cmp CX, 4 ; april
JZ d30 ;переход если в месяце 30 дней
cmp CX, 6 ; juny
JZ d30
cmp CX, 9 ; september
jz d30
cmp CX, 11; november - 30 line

cmp CX, 1; january
jz d31 ; переход если в месяце 31 день
cmp CX, 3; mart
jz d31
cmp CX, 5; may
jz d31
cmp CX, 7; july
jz d31  
cmp CX, 8; august 
jz d31
cmp cx, 10; october
jz d31

cmp CX, 2; если февраль, то
JZ d28; 28 суток

cmp CX, 12; а если декабрь,
JZ dnew; то скоро новый год 

d30 proc
cmp BX, 30
jz dd30
dd30 proc; подпрограмма увеличения месяца и сброса дня
MOV Bx, 1
INC CX
ret
dd30 endp
INC BX; если дней не 30 то увеличиваем.
ret
d30 endp

d31 proc
 cmp BX, 31 ; если 31 день, то обнуляем день и месяц +1
 JZ dd31
       dd31 proc; подрограмма сброса дня
         MOV BX, 1; первое число
         INC CX
         ret
        dd31 endp
 inc BX; если дней не 31, то увеличиваем
 ret
 d31 endp

d28 proc; подпрограмма февраля
cmp BX, 28
JZ dd28 ; если 28 дней февраля, то день = 1, месяц = 3
dd28 proc
MOV BX,1
MOV CX,3
ret
dd28 endp
INC BX
ret
d28 endp

dnew proc; подпрограммка 31 декабря
  cmp BX,31
  jz ddnew
  ddnew proc
    MOV BX,1
    MOV CX,1
    INC DX
 ret
 ddnew endp
 INC BX
 ret
 dnew endp

msg_d db 'input a day in the dd format --->$'
msg_m db 'input a month --->$'
msg_y db 'input a  year in the yy format$'

end start
Программа компилируется, линкуется, но вот с оконцовкой додумать не могу...

Последний раз редактировалось Nihith; 07.03.2011 в 19:04.
Nihith вне форума
Старый 09.03.2011, 18:06   #5
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Цитата:
proc_name db 'SdelatPesdato',0
Упал под стол :D спасибо, поднял настроение :D :D :D
coNsept вне форума
Старый 09.03.2011, 21:12   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

тема исчерпала себя...


Просьба к модератору закрыть тему.
Serge_Bliznykov вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан файл, содержащий различные даты. Каждая дата – это число, месяц и год. Найти год с наименьшим номе Figushkin Помощь студентам 2 04.06.2010 23:16
как из ячейки с датой выразить день, месяц, год мария2507 Microsoft Office Excel 3 23.03.2010 15:10
отдельно день месяц и год kate158 Общие вопросы Delphi 6 25.08.2009 09:28
Как из TDBDateTimeEditEh получить отдельно день, месяц и год? HIC БД в Delphi 2 31.10.2008 17:24
Разделить дату на год,месяц, день Avalonix Общие вопросы Delphi 11 28.05.2008 09:56