Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Перевод программы Real Time Clock из Pascal в С/С++

75K
01 ноября 2011 года
NightVamp
2 / / 01.11.2011
Есть программа на языке Pascal. Суть - считывание часов реального времени с помощью операторов языка высокого уровня, с ассемблерными вставками и прерываниями BIOS. Ассемблерные вставки и прерывания есть, осталось только перевести код программы на С или С++, желательно попроще всё это дело организовать, если возможно, с простыми и известными функциями. Код:

[ATTACH]5390[/ATTACH]

Program lab1;
uses crt;

function f1(b:byte):string; {funkciya perevoda iz 16 v 10 format}
var l1,l2: string;
begin
str(b div 16, l1);
str(b mod 16, l2);
f1:=l1+l2;
end;

var a,a1,a2: byte;
h,m,s,d,mn,g,dd: string; {h-chasi, m-minuti, s-sekundi, d-den' nedeli, mn-mesyac, g-god, dd-den'}

begin
while not keypressed do {poka ne najata klavisha vipolnyat'}
begin
clrscr; {ochistka ekrana}
writeln(' Laboratornaj rabota # 1');
writeln('Vyvodit dannye o RTC');
writeln('Vypolnil: Burdejnyj Anatolij Gr 628');
writeln;
writeln('Cherez porty');
port[$70]:=4; {часы}
a:=port[$71];
h:=f1(a);
port[$70]:=2; {минуты}
a:=port[$71];
m:=f1(a);
port[$70]:=0; {секунды}
a:=port[$71];
s:=f1(a);
port[$70]:=6; {дни недели}
a:=port[$71];
d:=f1(a);
port[$70]:=7; {день}
a:=port[$71];
dd:=f1(a);
port[$70]:=9; {год}
a:=port[$71];
g:=f1(a);
port[$70]:=8; {месяц}
a:=port[$71];
mn:=f1(a);
write ('Vremia: ');
write(h,':',m,':',s);
case d[2] of
'1': writeln(' voskr');
'2': writeln(' poned');
'3': writeln(' vtornik');
'4': writeln(' sreda');
'5': writeln(' chetverg');
'6': writeln(' paetnica');
'7': writeln(' sybbota');
end;
writeln('data: ',dd, '.',mn,'.',g);
writeln;
writeln('Cherez preryvania BIOS');
asm {часы, минуты, секунды}
mov ah,02h
int 1AH
mov a, ch
mov a1,cl
mov a2,dh
end;
h:=f1(a);
m:=f1(a1);
s:=f1(a2);
write('Vremia: ');
writeln(' ',h, ':',m,':',s);
asm {день, месяц, год}
mov ah,04h
int 1AH
mov a,dl
mov a1,dh
mov a2,cl
end;
d:=f1(a);
mn:=f1(a1);
g:=f1(a2);
write('data: ');
writeln(d,'.',mn,'.',g);
delay(10000);
end;
readkey;
end.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог