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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2010, 12:54   #1
DartDayring
Пользователь
 
Регистрация: 10.02.2010
Сообщений: 55
Печаль Временой интервал

Помогите пожалуйста с лабораторной работой. Нужно было написать программу на Си и Ассемблере. На Си я написал нужна помощь с Ассемблером. Так как я его вообще не изучал.

Заданы моменты начала и конца некоторого промежутка времени в часах, минутах
и секундах (в пределах одних суток). Найти продолжительность этого промежутка в тех же единицах
измерения.

Код:
int a,b,c,a2,b2,c2,sumsec,r,r2,r3;
setlocale(LC_ALL,"Russian");
printf("Введите время начала ( часы ; минуты ; секунды ) = ");
scanf("%d%d%d",&a,&b,&c);
printf("Введите время конца ( часы ; минуты ; секунды ) = "); 
scanf("%d%d%d",&a2,&b2,&c2);
sumsec=(a2-a)*3600+(b2-b)*60+c2-c;
r=sumsec/3600;
r2=(sumsec-r*3600)/60;
r3=(sumsec-r*3600)-(r2*60);
printf("Продолжительность промежутка = %d; %d; %d \n",r,r2,r3);
return 0;

Последний раз редактировалось Stilet; 15.02.2010 в 13:11.
DartDayring вне форума Ответить с цитированием
Старый 15.02.2010, 15:35   #2
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

Код:
int a1,b1,c1,a2,b2,c2,r,r2,r3;
setlocale(LC_ALL,"Russian");
printf("Введите время начала ( часы ; минуты ; секунды ) = ");
scanf("%d%d%d",&a1,&b1,&c1);
printf("Введите время конца ( часы ; минуты ; секунды ) = "); 
scanf("%d%d%d",&a2,&b2,&c2);
asm{ //начало ассемблерной вставки
mov ax,a1;                время в часах
mov cx,60;                cx=60
mul cx;                     dx:ax=ax*cx
add ax,b1;                ax=ax+b1
mul cx;                     перевели часы и минуты в секунды
add ax,c1;                 время начала в секундах
mov bx,ax;                 сохранили в bx время начала
mov ax,a2;                 время конца в часах
mul cx; 
add ax,b2
mul cx;                      перевели часы и минуты в секунды
add ax,c2;                  время начала в секундах
sub ax,bx;                  общая продолжительность промежутка в секундах
xor dx,dx;                  dx=0
div cx;                      (dx:ax)/cx  в ax частное, в dx остаток
mov r3,dx;                 "чистые" секунды
xor dx,dx
div cx
mov r2,dx;                  "чистые" минуты
mov r,ax;                    часы
} // конец ассемблерной вставки
printf("Продолжительность промежутка = %d; %d; %d \n",r,r2,r3);
Как-то так

Последний раз редактировалось Mikl___; 16.02.2010 в 04:44.
Mikl___ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Указать интервал чисел MAX722 Microsoft Office Excel 8 16.01.2010 19:52
Интервал Timer'a перевести на Min Rebel123 Общие вопросы Delphi 17 23.08.2009 11:29
Интервал ответа Pavelok Работа с сетью в Delphi 3 16.05.2009 22:08
Интервал Таймера... Roof Общие вопросы Delphi 27 08.07.2008 20:19
межстрочный интервал в excel KorvinZ Microsoft Office Excel 2 16.01.2008 17:40